ETH Price: $3,390.86 (-2.59%)
Gas: 1 Gwei

Contract

0x760b3adB45c7e927d32fB052c2977de4857563eD
 

Overview

ETH Balance

0.00705547262032467 ETH

Eth Value

$23.92 (@ $3,390.86/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve190280422024-01-17 17:19:35163 days ago1705511975IN
0x760b3adB...4857563eD
0 ETH0.0019459142.09030605
Approve189874202024-01-12 1:03:47169 days ago1705021427IN
0x760b3adB...4857563eD
0 ETH0.0004660217.76264773
Approve188271172023-12-20 12:27:35191 days ago1703075255IN
0x760b3adB...4857563eD
0 ETH0.0015238462.72015382
Approve186915622023-12-01 12:27:59210 days ago1701433679IN
0x760b3adB...4857563eD
0 ETH0.0010409242.94933705
Approve186590082023-11-26 23:06:11215 days ago1701039971IN
0x760b3adB...4857563eD
0 ETH0.0007528928.63149369
Approve185047052023-11-05 8:45:35236 days ago1699173935IN
0x760b3adB...4857563eD
0 ETH0.0004527917.25863633
Approve184685312023-10-31 7:09:47241 days ago1698736187IN
0x760b3adB...4857563eD
0 ETH0.000381315.69405101
Approve184684822023-10-31 6:59:59241 days ago1698735599IN
0x760b3adB...4857563eD
0 ETH0.0003443614.17358481
Approve184421202023-10-27 14:24:23245 days ago1698416663IN
0x760b3adB...4857563eD
0 ETH0.0012430726.72138089
Approve183864422023-10-19 19:23:23253 days ago1697743403IN
0x760b3adB...4857563eD
0 ETH0.000418759.00161522
Approve183749292023-10-18 4:42:23254 days ago1697604143IN
0x760b3adB...4857563eD
0 ETH0.000280926.07789545
Approve183647632023-10-16 18:35:35256 days ago1697481335IN
0x760b3adB...4857563eD
0 ETH0.0006238513.49742967
Approve183647572023-10-16 18:34:23256 days ago1697481263IN
0x760b3adB...4857563eD
0 ETH0.0006528314.12453713
Approve183338952023-10-12 10:59:47260 days ago1697108387IN
0x760b3adB...4857563eD
0 ETH0.00027755.95763721
Approve183277092023-10-11 14:09:59261 days ago1697033399IN
0x760b3adB...4857563eD
0 ETH0.0002908312
Approve183228992023-10-10 22:01:23262 days ago1696975283IN
0x760b3adB...4857563eD
0 ETH0.000393158.44045865
Approve183132362023-10-09 13:32:59263 days ago1696858379IN
0x760b3adB...4857563eD
0 ETH0.000246898.4818948
Approve182401512023-09-29 8:21:59273 days ago1695975719IN
0x760b3adB...4857563eD
0 ETH0.00044439.55086003
Approve182048382023-09-24 9:43:23278 days ago1695548603IN
0x760b3adB...4857563eD
0 ETH0.000365057.83719313
Approve181866412023-09-21 20:30:23281 days ago1695328223IN
0x760b3adB...4857563eD
0 ETH0.0011458924.63230481
Approve181862462023-09-21 19:10:47281 days ago1695323447IN
0x760b3adB...4857563eD
0 ETH0.0014840931.90225892
Approve181860042023-09-21 18:22:11281 days ago1695320531IN
0x760b3adB...4857563eD
0 ETH0.0006058213.02291473
Approve181845322023-09-21 13:25:11281 days ago1695302711IN
0x760b3adB...4857563eD
0 ETH0.0006603814.19563069
Approve181845212023-09-21 13:22:59281 days ago1695302579IN
0x760b3adB...4857563eD
0 ETH0.0006631114.25443062
Approve180976212023-09-09 8:22:11293 days ago1694247731IN
0x760b3adB...4857563eD
0 ETH0.0003184710.93664726
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
190280532024-01-17 17:21:47163 days ago1705512107
0x760b3adB...4857563eD
0.00951226 ETH
190280532024-01-17 17:21:47163 days ago1705512107
0x760b3adB...4857563eD
0.00951226 ETH
190280352024-01-17 17:18:11163 days ago1705511891
0x760b3adB...4857563eD
0.00705547 ETH
190280352024-01-17 17:18:11163 days ago1705511891
0x760b3adB...4857563eD
0.01411094 ETH
183339092023-10-12 11:02:35260 days ago1697108555
0x760b3adB...4857563eD
0.00830033 ETH
183339092023-10-12 11:02:35260 days ago1697108555
0x760b3adB...4857563eD
0.00830033 ETH
181845432023-09-21 13:27:23281 days ago1695302843
0x760b3adB...4857563eD
0.01396821 ETH
181845432023-09-21 13:27:23281 days ago1695302843
0x760b3adB...4857563eD
0.01396821 ETH
180910322023-09-08 10:14:35294 days ago1694168075
0x760b3adB...4857563eD
0.02081587 ETH
180910322023-09-08 10:14:35294 days ago1694168075
0x760b3adB...4857563eD
0.02081587 ETH
180009112023-08-26 19:24:35307 days ago1693077875
0x760b3adB...4857563eD
0.02602422 ETH
180009112023-08-26 19:24:35307 days ago1693077875
0x760b3adB...4857563eD
0.02602422 ETH
179716732023-08-22 17:14:35311 days ago1692724475
0x760b3adB...4857563eD
0.03559652 ETH
179716732023-08-22 17:14:35311 days ago1692724475
0x760b3adB...4857563eD
0.03559652 ETH
179450672023-08-18 23:51:47315 days ago1692402707
0x760b3adB...4857563eD
0.04323582 ETH
179450672023-08-18 23:51:47315 days ago1692402707
0x760b3adB...4857563eD
0.04323582 ETH
179363612023-08-17 18:35:59316 days ago1692297359
0x760b3adB...4857563eD
0.07424411 ETH
179363612023-08-17 18:35:59316 days ago1692297359
0x760b3adB...4857563eD
0.07424411 ETH
179210872023-08-15 15:19:11318 days ago1692112751
0x760b3adB...4857563eD
0.03645569 ETH
179210872023-08-15 15:19:11318 days ago1692112751
0x760b3adB...4857563eD
0.03645569 ETH
179084042023-08-13 20:44:23320 days ago1691959463
0x760b3adB...4857563eD
0.0460585 ETH
179084042023-08-13 20:44:23320 days ago1691959463
0x760b3adB...4857563eD
0.0460585 ETH
178824862023-08-10 5:43:59323 days ago1691646239
0x760b3adB...4857563eD
0.02512683 ETH
178824862023-08-10 5:43:59323 days ago1691646239
0x760b3adB...4857563eD
0.02512683 ETH
178758382023-08-09 7:24:47324 days ago1691565887
0x760b3adB...4857563eD
0.04353913 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Mayhem

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-17
*/

/**
Telegram: https://t.me/mayhemportal
Twitter: https://twitter.com/Mayhem_ERC
Website: https://projectmayhem.agency/


Introducing "Project Mayhem" - a captivating crypto endeavor that lets you step into the shoes of a corrupt politician, wielding unparalleled power and influence. 
In a world where politicians have long exploited their positions to manipulate tax systems and wreak havoc on economies, it's time for you to embrace the dark side.

Project Mayhem unveils a collection of NFTs like no other. These exclusive tokens represent notorious politicians, embodying their unscrupulous tactics, 
manipulative strategies, and their ability to control the financial realm.

But here's where the allure intensifies. As the owner of a politician NFT, you gain the exhilarating privilege of molding the tax landscape. 
However, there's a twist – to exercise your authority and alter the state of ERC20 taxes, you must burn your NFT, symbolizing the sacrifice of your corrupt alter ego.

Picture yourself at the epicenter of a clandestine network, where you can bend the rules and shape tax policies to your advantage. By willingly relinquishing your NFT, 
you unleash a profound transformation, exerting your influence over the ERC20 native currency that fuels Project Mayhem.

Gone are the days of being at the mercy of politicians. Project Mayhem empowers you to embrace your inner manipulator and mold the financial destiny of the ecosystem. 
Through the act of burning your NFT, you transcend conventional boundaries and cement your role as the ultimate corrupt politician, 
leaving an indelible mark on the tax landscape.

Seize the opportunity to indulge in the allure of power, to manipulate and subvert the system to your advantage. 
Project Mayhem beckons you to embrace the darkness within and exploit the very mechanisms that have long plagued society. 
Are you prepared to embrace your alter ego and embark on a journey where corruption knows no bounds? The path to power and manipulation awaits your command.
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IEnactMayhem {
    function setBuyFeeAndCollectionAddress(uint256 _marketingFee, address collectionAddress) external;
    function setSellFeeAndCollectionAddress(uint256 newFee, address collectionAddress) external;
    function setBuyFee(uint256 newFee) external;
    function setSellFee(uint256 newFee) external;
    function setCollectionAddress(address collectionAddress) external;
    function setLiqBuyFee(uint256 newFee) external;
    function setLiqSellFee(uint256 newFee) external;
    function setBuyBuyBackFee(uint256 newFee) external;
    function setSellBuyBackFee(uint256 newFee) external;
    function killdozer(uint256 buyMarketing, uint256 sellMarketing, uint256 buyLiquidity, uint256 sellLiquidity, uint256 buyBuyBack, uint256 sellBuyBack) external;
}

abstract contract Ownable {
    address internal owner;
    address private _previousOwner;
    uint256 private _lockTime;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    function Ownershiplock(uint256 time) public virtual onlyOwner {
        _previousOwner = owner;
        owner = address(0);
        _lockTime = block.timestamp + time;
        emit OwnershipTransferred(owner, address(0));
    }

    function Ownershipunlock() public virtual {
        require(_previousOwner == msg.sender, "You don't have permission to unlock");
        require(block.timestamp > _lockTime , "Contract is locked");
        emit OwnershipTransferred(owner, _previousOwner);
        owner = _previousOwner;
    }
}

/**
 * Router Interfaces
 */

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

/**
 * Contract Code
 */

contract Mayhem is IERC20, Ownable, IEnactMayhem {

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Project Mayhem"; // 
    string constant _symbol = "Mayhem"; // 
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 1 * 10**9 * 10**_decimals;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    
    // Detailed Fees
    uint256 public liqFee;
    uint256 public marketingFee;
    uint256 public buybackFee;
    uint256 public totalFee;
    address public erc1155Contract;

    uint256 public BuyliquidityFee    = 10;
    uint256 public BuymarketingFee    = 10;
    uint256 public BuybuybackFee      = 10;
    uint256 public BuytotalFee        = BuyliquidityFee + BuymarketingFee + BuybuybackFee;

    uint256 public SellliquidityFee    = 10;
    uint256 public SellmarketingFee    = 10;
    uint256 public SellbuybackFee      = 10;
    uint256 public SelltotalFee        = SellliquidityFee + SellmarketingFee + SellbuybackFee;

    // Max wallet & Transaction
    uint256 public _maxBuyTxAmount = _totalSupply / (100) * (2); // 2%
    uint256 public _maxSellTxAmount = _totalSupply / (100) * (2); // 2%
    uint256 public _maxWalletToken = _totalSupply / (100) * (2); // 2%

    // Fees receivers
    address public autoLiquidityReceiver = 0x000000000000000000000000000000000000dEaD;
    address public feeCollectionAddress = 0xBF70750c72559D641eBAe083F69E54e8603a2d9a;
    address public buybackFeeReceiver = 0xBF70750c72559D641eBAe083F69E54e8603a2d9a;
	address public stucketh = 0xBF70750c72559D641eBAe083F69E54e8603a2d9a;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 1; // 0.1%
    uint256 public maxSwapSize = _totalSupply / 100 * 1; //1%
    uint256 public tokensToSell;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    modifier onlyOwnerOrAuthorized() {
        require(msg.sender == owner || msg.sender == address(erc1155Contract), "Unauthorized");
        _;
    }
  
    constructor () Ownable(msg.sender) {
        owner = msg.sender;
        erc1155Contract = address(0x0);

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;


        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        feeCollectionAddress = address(0x0);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }
      
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
    
    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender == pair){
            buyFees();
        }

        if(recipient == pair){
            sellFees();
        }

        if (sender != owner && recipient != address(this) && recipient != address(DEAD) && recipient != pair || isTxLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        // Checks max transaction limit
        if(sender == pair){
            require(amount <= _maxBuyTxAmount || isTxLimitExempt[recipient], "TX Limit Exceeded");
        }
        
        if(recipient == pair){
            require(amount <= _maxSellTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
        }
        //Exchange tokens
        if(shouldSwapBack()){ swapBack(); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + (amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    // Internal Functions
    function buyFees() internal{
        liqFee    = BuyliquidityFee;
        marketingFee    = BuymarketingFee;
        buybackFee      = BuybuybackFee;
        totalFee        = BuytotalFee;
    }

    function sellFees() internal{
        liqFee    = SellliquidityFee;
        marketingFee    = SellmarketingFee;
        buybackFee      = SellbuybackFee;
        totalFee        = SelltotalFee;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount / 100 * (totalFee);

        _balances[address(this)] = _balances[address(this)] + (feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount - (feeAmount);
    }
  
    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = balanceOf(address(this));
        if(contractTokenBalance >= maxSwapSize){
            tokensToSell = maxSwapSize;            
        }
        else{
            tokensToSell = contractTokenBalance;
        }

        uint256 amountToLiquify = tokensToSell / (totalFee) * (liqFee) / (2);
        uint256 amountToSwap = tokensToSell - (amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance - (balanceBefore);

        uint256 totalETHFee = totalFee - (liqFee / (2));
        
        uint256 amountETHLiquidity = amountETH * (liqFee) / (totalETHFee) / (2);
        uint256 amountETHbuyback = amountETH * (buybackFee) / (totalETHFee);
        uint256 amountETHMarketing = amountETH * (marketingFee) / (totalETHFee);

        (bool MarketingSuccess,) = payable(feeCollectionAddress).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
        (bool buybackSuccess,) = payable(buybackFeeReceiver).call{value: amountETHbuyback, gas: 30000}("");
        require(buybackSuccess, "receiver rejected ETH transfer");

        addLiquidity(amountToLiquify, amountETHLiquidity);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
    if(tokenAmount > 0){
            router.addLiquidityETH{value: ethAmount}(
                address(this),
                tokenAmount,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(ethAmount, tokenAmount);
        }
    }

    // External Functions
    function checkSwapThreshold() external view returns (uint256) {
        return swapThreshold;
    }
    
    function checkMaxWalletToken() external view returns (uint256) {
        return _maxWalletToken;
    }
    
    function checkMaxBuyTxAmount() external view returns (uint256) {
        return _maxBuyTxAmount;
    }
    
    function checkMaxSellTxAmount() external view returns (uint256) {
        return _maxSellTxAmount;
    }

    function isNotInSwap() external view returns (bool) {
        return !inSwap;
    }

    // Only Owner allowed
    function setBuyFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee) external onlyOwner {
		require (_liquidityFee <= 5, "Fee can't exceed 5%");
		require (_buybackFee <= 5, "Fee can't exceed 5%");
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        BuyliquidityFee = _liquidityFee;
        BuybuybackFee = _buybackFee;
        BuymarketingFee = _marketingFee;
        BuytotalFee = _liquidityFee + (_buybackFee) + (_marketingFee);
    }


    // Set functions on receivers and taxes only callable by owner or NFT


    function setBuyFeeAndCollectionAddress(uint256 _marketingFee, address collectionAddress) external onlyOwnerOrAuthorized {
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        BuymarketingFee = _marketingFee;
        feeCollectionAddress = collectionAddress;
        BuytotalFee = BuyliquidityFee + BuymarketingFee + BuybuybackFee;
    }

    function setBuyFee(uint256 _marketingFee) external onlyOwnerOrAuthorized {
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        BuymarketingFee = _marketingFee;
        BuytotalFee = BuyliquidityFee + BuymarketingFee + BuybuybackFee;
    }

    function setSellFee(uint256 _marketingFee) external onlyOwnerOrAuthorized {
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        SellmarketingFee = _marketingFee;
        SelltotalFee = SellliquidityFee + SellmarketingFee + SellbuybackFee;
    }

    function setSellFeeAndCollectionAddress(uint256 _marketingFee, address collectionAddress) external onlyOwnerOrAuthorized {
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        SellmarketingFee = _marketingFee;
        feeCollectionAddress = collectionAddress;
        SelltotalFee = SellliquidityFee + SellmarketingFee + SellbuybackFee;
    }

    function setLiqBuyFee(uint256 newFee) external onlyOwnerOrAuthorized {
		require (newFee <= 5, "Fee can't exceed 5%");
        BuyliquidityFee = newFee;
        BuytotalFee = BuyliquidityFee + BuymarketingFee + BuybuybackFee;
    }

    function setLiqSellFee(uint256 newFee) external onlyOwnerOrAuthorized {
		require (newFee <= 5, "Fee can't exceed 5%");
        SellliquidityFee = newFee;
        SelltotalFee = SellliquidityFee + SellmarketingFee + SellbuybackFee;
    }

    function setBuyBuyBackFee(uint256 newFee) external onlyOwnerOrAuthorized {
		require (newFee <= 5, "Fee can't exceed 5%");
        BuybuybackFee = newFee;
        BuytotalFee = BuyliquidityFee + BuymarketingFee + BuybuybackFee;
    }

    function setSellBuyBackFee(uint256 newFee) external onlyOwnerOrAuthorized {
		require (newFee <= 5, "Fee can't exceed 5%");
        SellbuybackFee = newFee;
        SelltotalFee = SellliquidityFee + SellmarketingFee + SellbuybackFee;
    }

    function setCollectionAddress(address collectionAddress) external onlyOwnerOrAuthorized {
        feeCollectionAddress = collectionAddress;
    }

    function setERC1155Contract(address _erc1155Contract) external onlyOwnerOrAuthorized {
        erc1155Contract = _erc1155Contract;
    }

    function killdozer(uint256 buyMarketing, uint256 sellMarketing, uint256 buyLiquidity, uint256 sellLiquidity, uint256 buyBuyBack, uint256 sellBuyBack) external onlyOwnerOrAuthorized {
		require (buyMarketing <= 5, "Fee can't exceed 5%");
		require (sellMarketing <= 5, "Fee can't exceed 5%");
		require (buyLiquidity <= 5, "Fee can't exceed 5%");
		require (sellLiquidity <= 5, "Fee can't exceed 5%");
		require (buyBuyBack <= 5, "Fee can't exceed 5%");
		require (sellBuyBack <= 5, "Fee can't exceed 5%");
        BuymarketingFee = buyMarketing;
        SellmarketingFee = sellMarketing;
        BuyliquidityFee = buyLiquidity;
        SellliquidityFee = sellLiquidity;
        BuybuybackFee = buyBuyBack;
        SellbuybackFee = sellBuyBack;
        BuytotalFee = BuyliquidityFee + BuymarketingFee + BuybuybackFee;
        SelltotalFee = SellliquidityFee + SellmarketingFee + SellbuybackFee;
    }

    function setSellFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _marketingFee) external onlyOwner {
		require (_liquidityFee <= 5, "Fee can't exceed 5%");
		require (_buybackFee <= 5, "Fee can't exceed 5%");
		require (_marketingFee <= 5, "Fee can't exceed 5%");
        SellliquidityFee = _liquidityFee;
        SellbuybackFee = _buybackFee;
        SellmarketingFee = _marketingFee;
        SelltotalFee = _liquidityFee + (_buybackFee) + (_marketingFee);
    }
    
    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _buybackFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        feeCollectionAddress = _marketingFeeReceiver;
        buybackFeeReceiver = _buybackFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _percentage_min_base10000, uint256 _percentage_max_base10000) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _totalSupply / (10000) * (_percentage_min_base10000);
        maxSwapSize = _totalSupply / (10000) * (_percentage_max_base10000);
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }
    
    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
	
    function ownerSetLimits(uint256 maxBuyTXPercentage_base1000, uint256 maxSellTXPercentage_base1000, uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxBuyTXPercentage_base1000 >=5, "Cannot set Max Transaction below 0.5%");
		require(maxSellTXPercentage_base1000 >=5, "Cannot set Max Transaction below 0.5%");
        require(maxWallPercent_base1000 >=10, "Cannot set Max Wallet below 1%");
        _maxWalletToken = _totalSupply / (1000) * (maxWallPercent_base1000);
		_maxSellTxAmount = _totalSupply / (1000) * (maxSellTXPercentage_base1000);
		_maxBuyTxAmount = _totalSupply / (1000) * (maxBuyTXPercentage_base1000);
    }
	
    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >=10, "Cannot set Max Wallet below 1%");
        _maxWalletToken = _totalSupply / (1000) * (maxWallPercent_base1000);
    }

    function setMaxBuyTxPercent_base1000(uint256 maxBuyTXPercentage_base1000) external onlyOwner {
		require(maxBuyTXPercentage_base1000 >=5, "Cannot set Max Transaction below 0.5%");
        _maxBuyTxAmount = _totalSupply / (1000) * (maxBuyTXPercentage_base1000);
    }

    function setMaxSellTxPercent_base1000(uint256 maxSellTXPercentage_base1000) external onlyOwner {
		require(maxSellTXPercentage_base1000 >=5, "Cannot set Max Transaction below 0.5%");
        _maxSellTxAmount = _totalSupply / (1000) * (maxSellTXPercentage_base1000);
    }

    // Stuck Balances Functions
    function rescueToken(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(stucketh, tokens);
    }

    function clearStuckBalance(uint256 amountPercentage) external {
        uint256 amountETH = address(this).balance;
        payable(stucketh).transfer(amountETH * amountPercentage / 100);
    }

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BuybuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyliquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuymarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuytotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"Ownershiplock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"Ownershipunlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellbuybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellliquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SellmarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SelltotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxBuyTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxSellTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"erc1155Contract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeCollectionAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyMarketing","type":"uint256"},{"internalType":"uint256","name":"sellMarketing","type":"uint256"},{"internalType":"uint256","name":"buyLiquidity","type":"uint256"},{"internalType":"uint256","name":"sellLiquidity","type":"uint256"},{"internalType":"uint256","name":"buyBuyBack","type":"uint256"},{"internalType":"uint256","name":"sellBuyBack","type":"uint256"}],"name":"killdozer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyTXPercentage_base1000","type":"uint256"},{"internalType":"uint256","name":"maxSellTXPercentage_base1000","type":"uint256"},{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"ownerSetLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setBuyBuyBackFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"address","name":"collectionAddress","type":"address"}],"name":"setBuyFeeAndCollectionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"collectionAddress","type":"address"}],"name":"setCollectionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_erc1155Contract","type":"address"}],"name":"setERC1155Contract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_buybackFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setLiqBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setLiqSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBuyTXPercentage_base1000","type":"uint256"}],"name":"setMaxBuyTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxSellTXPercentage_base1000","type":"uint256"}],"name":"setMaxSellTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"setSellBuyBackFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"address","name":"collectionAddress","type":"address"}],"name":"setSellFeeAndCollectionAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_min_base10000","type":"uint256"},{"internalType":"uint256","name":"_percentage_max_base10000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stucketh","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokensToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600380546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790915560048054821661dead179055600580549091169055620000506009600a620004bd565b6200006090633b9aca00620004d5565b600655600a601081905560118190556012819055620000808180620004ef565b6200008c9190620004ef565b601355600a601481905560158190556016819055620000ac8180620004ef565b620000b89190620004ef565b6017556064600654620000cc919062000505565b620000d9906002620004d5565b6018556064600654620000ed919062000505565b620000fa906002620004d5565b60195560646006546200010e919062000505565b6200011b906002620004d5565b601a55601b80546001600160a01b031990811661dead17909155601c8054821673bf70750c72559d641ebae083f69e54e8603a2d9a908117909155601d8054831682179055601e80549092161790556020805460ff60a01b1916600160a01b1790556006546200018f906103e89062000505565b6200019c906001620004d5565b6021556064600654620001b0919062000505565b620001bd906001620004d5565b602255348015620001cd57600080fd5b50600080546001600160a01b0319908116338083169190911717909155600f805482169055601f8054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200024d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000273919062000528565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303816000875af1158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb919062000528565b602080546001600160a01b03199081166001600160a01b03938416178255306000908152600883526040808220601f54909516825293835283812060001990553380825260098452848220805460ff199081166001908117909255600a865286842080549091169091179055601c8054909316909255600654600784528482208190559351938452909290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a362000553565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003ff578160001904821115620003e357620003e3620003a8565b80851615620003f157918102915b93841c9390800290620003c3565b509250929050565b6000826200041857506001620004b7565b816200042757506000620004b7565b81600181146200044057600281146200044b576200046b565b6001915050620004b7565b60ff8411156200045f576200045f620003a8565b50506001821b620004b7565b5060208310610133831016604e8410600b841016171562000490575081810a620004b7565b6200049c8383620003be565b8060001904821115620004b357620004b3620003a8565b0290505b92915050565b6000620004ce60ff84168362000407565b9392505050565b8082028115828204841417620004b757620004b7620003a8565b80820180821115620004b757620004b7620003a8565b6000826200052357634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200053b57600080fd5b81516001600160a01b0381168114620004ce57600080fd5b612bbc80620005636000396000f3fe60806040526004361061041f5760003560e01c80636d796e881161021e578063a94ff6be11610123578063e6a0816d116100ab578063f2fde38b1161007a578063f2fde38b14610c6a578063f7baf3c514610c8a578063f84ba65d14610c9f578063f887ea4014610cbf578063fc44ed4814610cdf57600080fd5b8063e6a0816d14610c08578063e9563dfd14610c28578063e99090c114610c3e578063ea19e4a814610c5457600080fd5b8063ca33e64c116100f2578063ca33e64c14610b4c578063cf4be39414610b6c578063d088935814610b82578063d7c0103214610ba2578063dd62ed3e14610bc257600080fd5b8063a94ff6be14610ad7578063b29c8f6714610af7578063b43b783514610b17578063c08d467614610b2c57600080fd5b8063893d20e8116101a657806396c99f5b1161017557806396c99f5b14610a37578063a4e1307114610a57578063a6904aa514610a77578063a8aa1b3114610a97578063a9059cbb14610ab757600080fd5b8063893d20e81461099a5780638b42507f146109b85780638b4cee08146109e857806395d89b4114610a0857600080fd5b806378109e54116101ed57806378109e54146109155780637a5649701461092b5780637fbcedff1461094b57806383b4ac681461096157806384b1d1ef1461097a57600080fd5b80636d796e88146108925780636ddd1713146108a857806370a08231146108c95780637724555f146108ff57600080fd5b8063377c50d4116103245780634c5d8710116102ac5780635af89f901161027b5780635af89f9014610812578063602bc62b14610832578063658d4b7f146108475780636b67c4df146108675780636d351d1a1461087d57600080fd5b80634c5d8710146107a75780634f28cac2146107c7578063541b4de7146107dd578063571ac8b0146107f257600080fd5b80633d956691116102f35780633d9566911461070b5780633f4218e0146107215780633fb0da64146107515780634244156f146107675780634a76506a1461078757600080fd5b8063377c50d414610687578063391e73a3146106bf5780633a12465f146106d55780633b2d081c146106f557600080fd5b80631898cab2116103a75780632f533702116103765780632f533702146105e65780632f54bf6e14610606578063313ce56714610635578063334773271461065157806333f3d6281461066757600080fd5b80631898cab21461057b5780631da1db5e146105905780631df4ccfc146105b057806323b872dd146105c657600080fd5b80630cc835a3116103ee5780630cc835a3146104e65780630d075d9c146105065780630f683e9014610526578063154d4abb1461054657806318160ddd1461056657600080fd5b80630445b6671461042b57806306fdde031461045457806309302dc614610494578063095ea7b3146104b657600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044160215481565b6040519081526020015b60405180910390f35b34801561046057600080fd5b5060408051808201909152600e81526d50726f6a656374204d617968656d60901b60208201525b60405161044b91906126fe565b3480156104a057600080fd5b506104b46104af36600461274c565b610cf5565b005b3480156104c257600080fd5b506104d66104d1366004612781565b610d9a565b604051901515815260200161044b565b3480156104f257600080fd5b506104b461050136600461274c565b610e07565b34801561051257600080fd5b506104b46105213660046127ab565b610e8d565b34801561053257600080fd5b506104b46105413660046127ab565b610f46565b34801561055257600080fd5b506104b461056136600461274c565b610fff565b34801561057257600080fd5b50600654610441565b34801561058757600080fd5b50601854610441565b34801561059c57600080fd5b506104b46105ab36600461274c565b61106b565b3480156105bc57600080fd5b50610441600e5481565b3480156105d257600080fd5b506104d66105e13660046127d7565b6110bf565b3480156105f257600080fd5b506104b461060136600461274c565b611154565b34801561061257600080fd5b506104d6610621366004612813565b6000546001600160a01b0391821691161490565b34801561064157600080fd5b506040516009815260200161044b565b34801561065d57600080fd5b5061044160185481565b34801561067357600080fd5b506104d6610682366004612781565b6111ca565b34801561069357600080fd5b50601c546106a7906001600160a01b031681565b6040516001600160a01b03909116815260200161044b565b3480156106cb57600080fd5b5061044160135481565b3480156106e157600080fd5b50601e546106a7906001600160a01b031681565b34801561070157600080fd5b50610441600d5481565b34801561071757600080fd5b5061044160235481565b34801561072d57600080fd5b506104d661073c366004612813565b60096020526000908152604090205460ff1681565b34801561075d57600080fd5b50610441600b5481565b34801561077357600080fd5b506104b461078236600461282e565b611243565b34801561079357600080fd5b506104b46107a2366004612813565b6113a6565b3480156107b357600080fd5b506104b46107c23660046127ab565b611407565b3480156107d357600080fd5b5061044160225481565b3480156107e957600080fd5b50601954610441565b3480156107fe57600080fd5b506104d661080d366004612813565b611525565b34801561081e57600080fd5b506104b461082d36600461274c565b611533565b34801561083e57600080fd5b50600254610441565b34801561085357600080fd5b506104b4610862366004612882565b6115a8565b34801561087357600080fd5b50610441600c5481565b34801561088957600080fd5b50602154610441565b34801561089e57600080fd5b5061044160155481565b3480156108b457600080fd5b506020546104d690600160a01b900460ff1681565b3480156108d557600080fd5b506104416108e4366004612813565b6001600160a01b031660009081526007602052604090205490565b34801561090b57600080fd5b5061044160175481565b34801561092157600080fd5b50610441601a5481565b34801561093757600080fd5b50600f546106a7906001600160a01b031681565b34801561095757600080fd5b5061044160115481565b34801561096d57600080fd5b5060245460ff16156104d6565b34801561098657600080fd5b50601d546106a7906001600160a01b031681565b3480156109a657600080fd5b506000546001600160a01b03166106a7565b3480156109c457600080fd5b506104d66109d3366004612813565b600a6020526000908152604090205460ff1681565b3480156109f457600080fd5b506104b4610a0336600461274c565b6115fd565b348015610a1457600080fd5b506040805180820190915260068152654d617968656d60d01b6020820152610487565b348015610a4357600080fd5b506104b4610a5236600461274c565b611683565b348015610a6357600080fd5b506104b4610a7236600461274c565b6116ef565b348015610a8357600080fd5b506104b4610a92366004612813565b611786565b348015610aa357600080fd5b506020546106a7906001600160a01b031681565b348015610ac357600080fd5b506104d6610ad2366004612781565b6117e7565b348015610ae357600080fd5b506104b4610af236600461274c565b6117f4565b348015610b0357600080fd5b506104b4610b123660046128b9565b61186a565b348015610b2357600080fd5b50601a54610441565b348015610b3857600080fd5b506104b4610b4736600461274c565b61190c565b348015610b5857600080fd5b50601b546106a7906001600160a01b031681565b348015610b7857600080fd5b5061044160195481565b348015610b8e57600080fd5b506104b4610b9d3660046128e5565b611981565b348015610bae57600080fd5b506104b4610bbd36600461291a565b611a05565b348015610bce57600080fd5b50610441610bdd36600461295d565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610c1457600080fd5b506104b4610c233660046128b9565b611a6e565b348015610c3457600080fd5b5061044160125481565b348015610c4a57600080fd5b5061044160145481565b348015610c6057600080fd5b5061044160105481565b348015610c7657600080fd5b506104b4610c85366004612813565b611b10565b348015610c9657600080fd5b506104b4611bfa565b348015610cab57600080fd5b506104b4610cba366004612882565b611d07565b348015610ccb57600080fd5b50601f546106a7906001600160a01b031681565b348015610ceb57600080fd5b5061044160165481565b6000546001600160a01b03163314610d285760405162461bcd60e51b8152600401610d1f90612987565b60405180910390fd5b600a811015610d795760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420736574204d61782057616c6c65742062656c6f7720312500006044820152606401610d1f565b806103e8600654610d8a91906129bd565b610d9491906129df565b601a5550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610df59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331480610e2a5750600f546001600160a01b031633145b610e465760405162461bcd60e51b8152600401610d1f906129f6565b6005811115610e675760405162461bcd60e51b8152600401610d1f90612a1c565b6011819055601254601054610e7d908390612a49565b610e879190612a49565b60135550565b6000546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610d1f90612987565b6005831115610ed85760405162461bcd60e51b8152600401610d1f90612a1c565b6005821115610ef95760405162461bcd60e51b8152600401610d1f90612a1c565b6005811115610f1a5760405162461bcd60e51b8152600401610d1f90612a1c565b60108390556012829055601181905580610f348385612a49565b610f3e9190612a49565b601355505050565b6000546001600160a01b03163314610f705760405162461bcd60e51b8152600401610d1f90612987565b6005831115610f915760405162461bcd60e51b8152600401610d1f90612a1c565b6005821115610fb25760405162461bcd60e51b8152600401610d1f90612a1c565b6005811115610fd35760405162461bcd60e51b8152600401610d1f90612a1c565b60148390556016829055601581905580610fed8385612a49565b610ff79190612a49565b601755505050565b6000546001600160a01b031633146110295760405162461bcd60e51b8152600401610d1f90612987565b600581101561104a5760405162461bcd60e51b8152600401610d1f90612a5c565b806103e860065461105b91906129bd565b61106591906129df565b60185550565b601e5447906001600160a01b03166108fc606461108885856129df565b61109291906129bd565b6040518115909202916000818181858888f193505050501580156110ba573d6000803e3d6000fd5b505050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461113f576001600160a01b038416600090815260086020908152604080832033845290915290205461111a908390612aa1565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61114a848484611d5c565b90505b9392505050565b6000546001600160a01b03163314806111775750600f546001600160a01b031633145b6111935760405162461bcd60e51b8152600401610d1f906129f6565b60058111156111b45760405162461bcd60e51b8152600401610d1f90612a1c565b60128190556011546010548291610e7d91612a49565b601e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d9190612ab4565b6000546001600160a01b03163314806112665750600f546001600160a01b031633145b6112825760405162461bcd60e51b8152600401610d1f906129f6565b60058611156112a35760405162461bcd60e51b8152600401610d1f90612a1c565b60058511156112c45760405162461bcd60e51b8152600401610d1f90612a1c565b60058411156112e55760405162461bcd60e51b8152600401610d1f90612a1c565b60058311156113065760405162461bcd60e51b8152600401610d1f90612a1c565b60058211156113275760405162461bcd60e51b8152600401610d1f90612a1c565b60058111156113485760405162461bcd60e51b8152600401610d1f90612a1c565b601186905560158590556010849055601483905560128290556016819055816113718786612a49565b61137b9190612a49565b6013556016546015546014546113919190612a49565b61139b9190612a49565b601755505050505050565b6000546001600160a01b03163314806113c95750600f546001600160a01b031633145b6113e55760405162461bcd60e51b8152600401610d1f906129f6565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610d1f90612987565b60058310156114525760405162461bcd60e51b8152600401610d1f90612a5c565b60058210156114735760405162461bcd60e51b8152600401610d1f90612a5c565b600a8110156114c45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420736574204d61782057616c6c65742062656c6f7720312500006044820152606401610d1f565b806103e86006546114d591906129bd565b6114df91906129df565b601a5560065482906114f4906103e8906129bd565b6114fe91906129df565b6019556006548390611513906103e8906129bd565b61151d91906129df565b601855505050565b6000610e0182600019610d9a565b6000546001600160a01b03163314806115565750600f546001600160a01b031633145b6115725760405162461bcd60e51b8152600401610d1f906129f6565b60058111156115935760405162461bcd60e51b8152600401610d1f90612a1c565b6010819055601254601154610e7d9083612a49565b6000546001600160a01b031633146115d25760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314806116205750600f546001600160a01b031633145b61163c5760405162461bcd60e51b8152600401610d1f906129f6565b600581111561165d5760405162461bcd60e51b8152600401610d1f90612a1c565b6015819055601654601454611673908390612a49565b61167d9190612a49565b60175550565b6000546001600160a01b031633146116ad5760405162461bcd60e51b8152600401610d1f90612987565b60058110156116ce5760405162461bcd60e51b8152600401610d1f90612a5c565b806103e86006546116df91906129bd565b6116e991906129df565b60195550565b6000546001600160a01b031633146117195760405162461bcd60e51b8152600401610d1f90612987565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117488142612a49565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314806117a95750600f546001600160a01b031633145b6117c55760405162461bcd60e51b8152600401610d1f906129f6565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061114d338484611d5c565b6000546001600160a01b03163314806118175750600f546001600160a01b031633145b6118335760405162461bcd60e51b8152600401610d1f906129f6565b60058111156118545760405162461bcd60e51b8152600401610d1f90612a1c565b6016819055601554601454829161167391612a49565b6000546001600160a01b031633148061188d5750600f546001600160a01b031633145b6118a95760405162461bcd60e51b8152600401610d1f906129f6565b60058211156118ca5760405162461bcd60e51b8152600401610d1f90612a1c565b6011829055601c80546001600160a01b0319166001600160a01b0383161790556012546010546118fb908490612a49565b6119059190612a49565b6013555050565b6000546001600160a01b031633148061192f5750600f546001600160a01b031633145b61194b5760405162461bcd60e51b8152600401610d1f906129f6565b600581111561196c5760405162461bcd60e51b8152600401610d1f90612a1c565b60148190556016546015546116739083612a49565b6000546001600160a01b031633146119ab5760405162461bcd60e51b8152600401610d1f90612987565b6020805460ff60a01b1916600160a01b8515150217905560065482906119d490612710906129bd565b6119de91906129df565b60215560065481906119f390612710906129bd565b6119fd91906129df565b602255505050565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610d1f90612987565b601b80546001600160a01b039485166001600160a01b031991821617909155601c805493851693821693909317909255601d8054919093169116179055565b6000546001600160a01b0316331480611a915750600f546001600160a01b031633145b611aad5760405162461bcd60e51b8152600401610d1f906129f6565b6005821115611ace5760405162461bcd60e51b8152600401610d1f90612a1c565b6015829055601c80546001600160a01b0319166001600160a01b038316179055601654601454611aff908490612a49565b611b099190612a49565b6017555050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b038116611b9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d1f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611c605760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d1f565b6002544211611ca65760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81b1bd8dad95960721b6044820152606401610d1f565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60245460009060ff1615611d7c57611d75848484612105565b905061114d565b6020546001600160a01b0390811690851603611daf57611daf601054600b55601154600c55601254600d55601354600e55565b6020546001600160a01b0390811690841603611de257611de2601454600b55601554600c55601654600d55601754600e55565b6000546001600160a01b03858116911614801590611e0957506001600160a01b0383163014155b8015611e2357506004546001600160a01b03848116911614155b8015611e3d57506020546001600160a01b03848116911614155b80611e6057506001600160a01b0383166000908152600a602052604090205460ff165b15611f01576001600160a01b038316600090815260076020526040902054601a54611e8b8483612a49565b1115611eff5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610d1f565b505b6020546001600160a01b0390811690851603611f805760185482111580611f4057506001600160a01b0383166000908152600a602052604090205460ff165b611f805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d1f565b6020546001600160a01b0390811690841603611fff5760195482111580611fbf57506001600160a01b0384166000908152600a602052604090205460ff165b611fff5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d1f565b6120076121bf565b1561201457612014612217565b6001600160a01b038416600090815260076020526040902054612038908390612aa1565b6001600160a01b038516600090815260076020908152604080832093909355600990529081205460ff161561206d5782612077565b612077848461257c565b6001600160a01b03851660009081526007602052604090205490915061209e908290612a49565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f29085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054612129908390612aa1565b6001600160a01b038086166000908152600760205260408082209390935590851681522054612159908390612a49565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121ad9086815260200190565b60405180910390a35060019392505050565b6020546000906001600160a01b031633148015906121e0575060245460ff16155b80156121f55750602054600160a01b900460ff165b801561221257506021543060009081526007602052604090205410155b905090565b6024805460ff19166001179055306000908152600760205260408120549050602254811061224a57602254602355612250565b60238190555b60006002600b54600e5460235461226791906129bd565b61227191906129df565b61227b91906129bd565b905060008160235461228d9190612aa1565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122c7576122c7612ad1565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106122f8576122f8612ad1565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790612342908690600090879030904290600401612ae7565b600060405180830381600087803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b50505050600081476123829190612aa1565b905060006002600b5461239591906129bd565b600e546123a29190612aa1565b90506000600282600b54856123b791906129df565b6123c191906129bd565b6123cb91906129bd565b9050600082600d54856123de91906129df565b6123e891906129bd565b9050600083600c54866123fb91906129df565b61240591906129bd565b601c546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461245c576040519150601f19603f3d011682016040523d82523d6000602084013e612461565b606091505b50509050806124b25760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610d1f565b601d546040516000916001600160a01b03169061753090869084818181858888f193505050503d8060008114612504576040519150601f19603f3d011682016040523d82523d6000602084013e612509565b606091505b505090508061255a5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610d1f565b6125648b86612622565b50506024805460ff1916905550505050505050505050565b600080600e5460648461258f91906129bd565b61259991906129df565b306000908152600760205260409020549091506125b7908290612a49565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126089085815260200190565b60405180910390a361261a8184612aa1565b949350505050565b81156126fa57601f54601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126bd9190612b58565b505060408051838152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050565b600060208083528351808285015260005b8181101561272b5785810183015185820160400152820161270f565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561275e57600080fd5b5035919050565b80356001600160a01b038116811461277c57600080fd5b919050565b6000806040838503121561279457600080fd5b61279d83612765565b946020939093013593505050565b6000806000606084860312156127c057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156127ec57600080fd5b6127f584612765565b925061280360208501612765565b9150604084013590509250925092565b60006020828403121561282557600080fd5b61114d82612765565b60008060008060008060c0878903121561284757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b801515811461287f57600080fd5b50565b6000806040838503121561289557600080fd5b61289e83612765565b915060208301356128ae81612871565b809150509250929050565b600080604083850312156128cc57600080fd5b823591506128dc60208401612765565b90509250929050565b6000806000606084860312156128fa57600080fd5b833561290581612871565b95602085013595506040909401359392505050565b60008060006060848603121561292f57600080fd5b61293884612765565b925061294660208501612765565b915061295460408501612765565b90509250925092565b6000806040838503121561297057600080fd5b61297983612765565b91506128dc60208401612765565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826129da57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e0157610e016129a7565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b6020808252601390820152724665652063616e27742065786365656420352560681b604082015260600190565b80820180821115610e0157610e016129a7565b60208082526025908201527f43616e6e6f7420736574204d6178205472616e73616374696f6e2062656c6f7760408201526420302e352560d81b606082015260800190565b81810381811115610e0157610e016129a7565b600060208284031215612ac657600080fd5b815161114d81612871565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b375784516001600160a01b031683529383019391830191600101612b12565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b6d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202733ba1c566e6eb81dda94a228683140bb4cf5233df290fc3e89c033f88927c964736f6c63430008120033

Deployed Bytecode

0x60806040526004361061041f5760003560e01c80636d796e881161021e578063a94ff6be11610123578063e6a0816d116100ab578063f2fde38b1161007a578063f2fde38b14610c6a578063f7baf3c514610c8a578063f84ba65d14610c9f578063f887ea4014610cbf578063fc44ed4814610cdf57600080fd5b8063e6a0816d14610c08578063e9563dfd14610c28578063e99090c114610c3e578063ea19e4a814610c5457600080fd5b8063ca33e64c116100f2578063ca33e64c14610b4c578063cf4be39414610b6c578063d088935814610b82578063d7c0103214610ba2578063dd62ed3e14610bc257600080fd5b8063a94ff6be14610ad7578063b29c8f6714610af7578063b43b783514610b17578063c08d467614610b2c57600080fd5b8063893d20e8116101a657806396c99f5b1161017557806396c99f5b14610a37578063a4e1307114610a57578063a6904aa514610a77578063a8aa1b3114610a97578063a9059cbb14610ab757600080fd5b8063893d20e81461099a5780638b42507f146109b85780638b4cee08146109e857806395d89b4114610a0857600080fd5b806378109e54116101ed57806378109e54146109155780637a5649701461092b5780637fbcedff1461094b57806383b4ac681461096157806384b1d1ef1461097a57600080fd5b80636d796e88146108925780636ddd1713146108a857806370a08231146108c95780637724555f146108ff57600080fd5b8063377c50d4116103245780634c5d8710116102ac5780635af89f901161027b5780635af89f9014610812578063602bc62b14610832578063658d4b7f146108475780636b67c4df146108675780636d351d1a1461087d57600080fd5b80634c5d8710146107a75780634f28cac2146107c7578063541b4de7146107dd578063571ac8b0146107f257600080fd5b80633d956691116102f35780633d9566911461070b5780633f4218e0146107215780633fb0da64146107515780634244156f146107675780634a76506a1461078757600080fd5b8063377c50d414610687578063391e73a3146106bf5780633a12465f146106d55780633b2d081c146106f557600080fd5b80631898cab2116103a75780632f533702116103765780632f533702146105e65780632f54bf6e14610606578063313ce56714610635578063334773271461065157806333f3d6281461066757600080fd5b80631898cab21461057b5780631da1db5e146105905780631df4ccfc146105b057806323b872dd146105c657600080fd5b80630cc835a3116103ee5780630cc835a3146104e65780630d075d9c146105065780630f683e9014610526578063154d4abb1461054657806318160ddd1461056657600080fd5b80630445b6671461042b57806306fdde031461045457806309302dc614610494578063095ea7b3146104b657600080fd5b3661042657005b600080fd5b34801561043757600080fd5b5061044160215481565b6040519081526020015b60405180910390f35b34801561046057600080fd5b5060408051808201909152600e81526d50726f6a656374204d617968656d60901b60208201525b60405161044b91906126fe565b3480156104a057600080fd5b506104b46104af36600461274c565b610cf5565b005b3480156104c257600080fd5b506104d66104d1366004612781565b610d9a565b604051901515815260200161044b565b3480156104f257600080fd5b506104b461050136600461274c565b610e07565b34801561051257600080fd5b506104b46105213660046127ab565b610e8d565b34801561053257600080fd5b506104b46105413660046127ab565b610f46565b34801561055257600080fd5b506104b461056136600461274c565b610fff565b34801561057257600080fd5b50600654610441565b34801561058757600080fd5b50601854610441565b34801561059c57600080fd5b506104b46105ab36600461274c565b61106b565b3480156105bc57600080fd5b50610441600e5481565b3480156105d257600080fd5b506104d66105e13660046127d7565b6110bf565b3480156105f257600080fd5b506104b461060136600461274c565b611154565b34801561061257600080fd5b506104d6610621366004612813565b6000546001600160a01b0391821691161490565b34801561064157600080fd5b506040516009815260200161044b565b34801561065d57600080fd5b5061044160185481565b34801561067357600080fd5b506104d6610682366004612781565b6111ca565b34801561069357600080fd5b50601c546106a7906001600160a01b031681565b6040516001600160a01b03909116815260200161044b565b3480156106cb57600080fd5b5061044160135481565b3480156106e157600080fd5b50601e546106a7906001600160a01b031681565b34801561070157600080fd5b50610441600d5481565b34801561071757600080fd5b5061044160235481565b34801561072d57600080fd5b506104d661073c366004612813565b60096020526000908152604090205460ff1681565b34801561075d57600080fd5b50610441600b5481565b34801561077357600080fd5b506104b461078236600461282e565b611243565b34801561079357600080fd5b506104b46107a2366004612813565b6113a6565b3480156107b357600080fd5b506104b46107c23660046127ab565b611407565b3480156107d357600080fd5b5061044160225481565b3480156107e957600080fd5b50601954610441565b3480156107fe57600080fd5b506104d661080d366004612813565b611525565b34801561081e57600080fd5b506104b461082d36600461274c565b611533565b34801561083e57600080fd5b50600254610441565b34801561085357600080fd5b506104b4610862366004612882565b6115a8565b34801561087357600080fd5b50610441600c5481565b34801561088957600080fd5b50602154610441565b34801561089e57600080fd5b5061044160155481565b3480156108b457600080fd5b506020546104d690600160a01b900460ff1681565b3480156108d557600080fd5b506104416108e4366004612813565b6001600160a01b031660009081526007602052604090205490565b34801561090b57600080fd5b5061044160175481565b34801561092157600080fd5b50610441601a5481565b34801561093757600080fd5b50600f546106a7906001600160a01b031681565b34801561095757600080fd5b5061044160115481565b34801561096d57600080fd5b5060245460ff16156104d6565b34801561098657600080fd5b50601d546106a7906001600160a01b031681565b3480156109a657600080fd5b506000546001600160a01b03166106a7565b3480156109c457600080fd5b506104d66109d3366004612813565b600a6020526000908152604090205460ff1681565b3480156109f457600080fd5b506104b4610a0336600461274c565b6115fd565b348015610a1457600080fd5b506040805180820190915260068152654d617968656d60d01b6020820152610487565b348015610a4357600080fd5b506104b4610a5236600461274c565b611683565b348015610a6357600080fd5b506104b4610a7236600461274c565b6116ef565b348015610a8357600080fd5b506104b4610a92366004612813565b611786565b348015610aa357600080fd5b506020546106a7906001600160a01b031681565b348015610ac357600080fd5b506104d6610ad2366004612781565b6117e7565b348015610ae357600080fd5b506104b4610af236600461274c565b6117f4565b348015610b0357600080fd5b506104b4610b123660046128b9565b61186a565b348015610b2357600080fd5b50601a54610441565b348015610b3857600080fd5b506104b4610b4736600461274c565b61190c565b348015610b5857600080fd5b50601b546106a7906001600160a01b031681565b348015610b7857600080fd5b5061044160195481565b348015610b8e57600080fd5b506104b4610b9d3660046128e5565b611981565b348015610bae57600080fd5b506104b4610bbd36600461291a565b611a05565b348015610bce57600080fd5b50610441610bdd36600461295d565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b348015610c1457600080fd5b506104b4610c233660046128b9565b611a6e565b348015610c3457600080fd5b5061044160125481565b348015610c4a57600080fd5b5061044160145481565b348015610c6057600080fd5b5061044160105481565b348015610c7657600080fd5b506104b4610c85366004612813565b611b10565b348015610c9657600080fd5b506104b4611bfa565b348015610cab57600080fd5b506104b4610cba366004612882565b611d07565b348015610ccb57600080fd5b50601f546106a7906001600160a01b031681565b348015610ceb57600080fd5b5061044160165481565b6000546001600160a01b03163314610d285760405162461bcd60e51b8152600401610d1f90612987565b60405180910390fd5b600a811015610d795760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420736574204d61782057616c6c65742062656c6f7720312500006044820152606401610d1f565b806103e8600654610d8a91906129bd565b610d9491906129df565b601a5550565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610df59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b0316331480610e2a5750600f546001600160a01b031633145b610e465760405162461bcd60e51b8152600401610d1f906129f6565b6005811115610e675760405162461bcd60e51b8152600401610d1f90612a1c565b6011819055601254601054610e7d908390612a49565b610e879190612a49565b60135550565b6000546001600160a01b03163314610eb75760405162461bcd60e51b8152600401610d1f90612987565b6005831115610ed85760405162461bcd60e51b8152600401610d1f90612a1c565b6005821115610ef95760405162461bcd60e51b8152600401610d1f90612a1c565b6005811115610f1a5760405162461bcd60e51b8152600401610d1f90612a1c565b60108390556012829055601181905580610f348385612a49565b610f3e9190612a49565b601355505050565b6000546001600160a01b03163314610f705760405162461bcd60e51b8152600401610d1f90612987565b6005831115610f915760405162461bcd60e51b8152600401610d1f90612a1c565b6005821115610fb25760405162461bcd60e51b8152600401610d1f90612a1c565b6005811115610fd35760405162461bcd60e51b8152600401610d1f90612a1c565b60148390556016829055601581905580610fed8385612a49565b610ff79190612a49565b601755505050565b6000546001600160a01b031633146110295760405162461bcd60e51b8152600401610d1f90612987565b600581101561104a5760405162461bcd60e51b8152600401610d1f90612a5c565b806103e860065461105b91906129bd565b61106591906129df565b60185550565b601e5447906001600160a01b03166108fc606461108885856129df565b61109291906129bd565b6040518115909202916000818181858888f193505050501580156110ba573d6000803e3d6000fd5b505050565b6001600160a01b03831660009081526008602090815260408083203384529091528120546000191461113f576001600160a01b038416600090815260086020908152604080832033845290915290205461111a908390612aa1565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b61114a848484611d5c565b90505b9392505050565b6000546001600160a01b03163314806111775750600f546001600160a01b031633145b6111935760405162461bcd60e51b8152600401610d1f906129f6565b60058111156111b45760405162461bcd60e51b8152600401610d1f90612a1c565b60128190556011546010548291610e7d91612a49565b601e5460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905260009184169063a9059cbb906044016020604051808303816000875af115801561121f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d9190612ab4565b6000546001600160a01b03163314806112665750600f546001600160a01b031633145b6112825760405162461bcd60e51b8152600401610d1f906129f6565b60058611156112a35760405162461bcd60e51b8152600401610d1f90612a1c565b60058511156112c45760405162461bcd60e51b8152600401610d1f90612a1c565b60058411156112e55760405162461bcd60e51b8152600401610d1f90612a1c565b60058311156113065760405162461bcd60e51b8152600401610d1f90612a1c565b60058211156113275760405162461bcd60e51b8152600401610d1f90612a1c565b60058111156113485760405162461bcd60e51b8152600401610d1f90612a1c565b601186905560158590556010849055601483905560128290556016819055816113718786612a49565b61137b9190612a49565b6013556016546015546014546113919190612a49565b61139b9190612a49565b601755505050505050565b6000546001600160a01b03163314806113c95750600f546001600160a01b031633145b6113e55760405162461bcd60e51b8152600401610d1f906129f6565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146114315760405162461bcd60e51b8152600401610d1f90612987565b60058310156114525760405162461bcd60e51b8152600401610d1f90612a5c565b60058210156114735760405162461bcd60e51b8152600401610d1f90612a5c565b600a8110156114c45760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f7420736574204d61782057616c6c65742062656c6f7720312500006044820152606401610d1f565b806103e86006546114d591906129bd565b6114df91906129df565b601a5560065482906114f4906103e8906129bd565b6114fe91906129df565b6019556006548390611513906103e8906129bd565b61151d91906129df565b601855505050565b6000610e0182600019610d9a565b6000546001600160a01b03163314806115565750600f546001600160a01b031633145b6115725760405162461bcd60e51b8152600401610d1f906129f6565b60058111156115935760405162461bcd60e51b8152600401610d1f90612a1c565b6010819055601254601154610e7d9083612a49565b6000546001600160a01b031633146115d25760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314806116205750600f546001600160a01b031633145b61163c5760405162461bcd60e51b8152600401610d1f906129f6565b600581111561165d5760405162461bcd60e51b8152600401610d1f90612a1c565b6015819055601654601454611673908390612a49565b61167d9190612a49565b60175550565b6000546001600160a01b031633146116ad5760405162461bcd60e51b8152600401610d1f90612987565b60058110156116ce5760405162461bcd60e51b8152600401610d1f90612a5c565b806103e86006546116df91906129bd565b6116e991906129df565b60195550565b6000546001600160a01b031633146117195760405162461bcd60e51b8152600401610d1f90612987565b60008054600180546001600160a01b03199081166001600160a01b038416179091551690556117488142612a49565b600255600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6000546001600160a01b03163314806117a95750600f546001600160a01b031633145b6117c55760405162461bcd60e51b8152600401610d1f906129f6565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b600061114d338484611d5c565b6000546001600160a01b03163314806118175750600f546001600160a01b031633145b6118335760405162461bcd60e51b8152600401610d1f906129f6565b60058111156118545760405162461bcd60e51b8152600401610d1f90612a1c565b6016819055601554601454829161167391612a49565b6000546001600160a01b031633148061188d5750600f546001600160a01b031633145b6118a95760405162461bcd60e51b8152600401610d1f906129f6565b60058211156118ca5760405162461bcd60e51b8152600401610d1f90612a1c565b6011829055601c80546001600160a01b0319166001600160a01b0383161790556012546010546118fb908490612a49565b6119059190612a49565b6013555050565b6000546001600160a01b031633148061192f5750600f546001600160a01b031633145b61194b5760405162461bcd60e51b8152600401610d1f906129f6565b600581111561196c5760405162461bcd60e51b8152600401610d1f90612a1c565b60148190556016546015546116739083612a49565b6000546001600160a01b031633146119ab5760405162461bcd60e51b8152600401610d1f90612987565b6020805460ff60a01b1916600160a01b8515150217905560065482906119d490612710906129bd565b6119de91906129df565b60215560065481906119f390612710906129bd565b6119fd91906129df565b602255505050565b6000546001600160a01b03163314611a2f5760405162461bcd60e51b8152600401610d1f90612987565b601b80546001600160a01b039485166001600160a01b031991821617909155601c805493851693821693909317909255601d8054919093169116179055565b6000546001600160a01b0316331480611a915750600f546001600160a01b031633145b611aad5760405162461bcd60e51b8152600401610d1f906129f6565b6005821115611ace5760405162461bcd60e51b8152600401610d1f90612a1c565b6015829055601c80546001600160a01b0319166001600160a01b038316179055601654601454611aff908490612a49565b611b099190612a49565b6017555050565b6000546001600160a01b03163314611b3a5760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b038116611b9f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d1f565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b03163314611c605760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610d1f565b6002544211611ca65760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081a5cc81b1bd8dad95960721b6044820152606401610d1f565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000546001600160a01b03163314611d315760405162461bcd60e51b8152600401610d1f90612987565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60245460009060ff1615611d7c57611d75848484612105565b905061114d565b6020546001600160a01b0390811690851603611daf57611daf601054600b55601154600c55601254600d55601354600e55565b6020546001600160a01b0390811690841603611de257611de2601454600b55601554600c55601654600d55601754600e55565b6000546001600160a01b03858116911614801590611e0957506001600160a01b0383163014155b8015611e2357506004546001600160a01b03848116911614155b8015611e3d57506020546001600160a01b03848116911614155b80611e6057506001600160a01b0383166000908152600a602052604090205460ff165b15611f01576001600160a01b038316600090815260076020526040902054601a54611e8b8483612a49565b1115611eff5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610d1f565b505b6020546001600160a01b0390811690851603611f805760185482111580611f4057506001600160a01b0383166000908152600a602052604090205460ff165b611f805760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d1f565b6020546001600160a01b0390811690841603611fff5760195482111580611fbf57506001600160a01b0384166000908152600a602052604090205460ff165b611fff5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610d1f565b6120076121bf565b1561201457612014612217565b6001600160a01b038416600090815260076020526040902054612038908390612aa1565b6001600160a01b038516600090815260076020908152604080832093909355600990529081205460ff161561206d5782612077565b612077848461257c565b6001600160a01b03851660009081526007602052604090205490915061209e908290612a49565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120f29085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054612129908390612aa1565b6001600160a01b038086166000908152600760205260408082209390935590851681522054612159908390612a49565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906121ad9086815260200190565b60405180910390a35060019392505050565b6020546000906001600160a01b031633148015906121e0575060245460ff16155b80156121f55750602054600160a01b900460ff165b801561221257506021543060009081526007602052604090205410155b905090565b6024805460ff19166001179055306000908152600760205260408120549050602254811061224a57602254602355612250565b60238190555b60006002600b54600e5460235461226791906129bd565b61227191906129df565b61227b91906129bd565b905060008160235461228d9190612aa1565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106122c7576122c7612ad1565b6001600160a01b0392831660209182029290920101526003548251911690829060019081106122f8576122f8612ad1565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790612342908690600090879030904290600401612ae7565b600060405180830381600087803b15801561235c57600080fd5b505af1158015612370573d6000803e3d6000fd5b50505050600081476123829190612aa1565b905060006002600b5461239591906129bd565b600e546123a29190612aa1565b90506000600282600b54856123b791906129df565b6123c191906129bd565b6123cb91906129bd565b9050600082600d54856123de91906129df565b6123e891906129bd565b9050600083600c54866123fb91906129df565b61240591906129bd565b601c546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d806000811461245c576040519150601f19603f3d011682016040523d82523d6000602084013e612461565b606091505b50509050806124b25760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610d1f565b601d546040516000916001600160a01b03169061753090869084818181858888f193505050503d8060008114612504576040519150601f19603f3d011682016040523d82523d6000602084013e612509565b606091505b505090508061255a5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610d1f565b6125648b86612622565b50506024805460ff1916905550505050505050505050565b600080600e5460648461258f91906129bd565b61259991906129df565b306000908152600760205260409020549091506125b7908290612a49565b30600081815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126089085815260200190565b60405180910390a361261a8184612aa1565b949350505050565b81156126fa57601f54601b5460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af1158015612698573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126bd9190612b58565b505060408051838152602081018590527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050565b600060208083528351808285015260005b8181101561272b5785810183015185820160400152820161270f565b506000604082860101526040601f19601f8301168501019250505092915050565b60006020828403121561275e57600080fd5b5035919050565b80356001600160a01b038116811461277c57600080fd5b919050565b6000806040838503121561279457600080fd5b61279d83612765565b946020939093013593505050565b6000806000606084860312156127c057600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156127ec57600080fd5b6127f584612765565b925061280360208501612765565b9150604084013590509250925092565b60006020828403121561282557600080fd5b61114d82612765565b60008060008060008060c0878903121561284757600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b801515811461287f57600080fd5b50565b6000806040838503121561289557600080fd5b61289e83612765565b915060208301356128ae81612871565b809150509250929050565b600080604083850312156128cc57600080fd5b823591506128dc60208401612765565b90509250929050565b6000806000606084860312156128fa57600080fd5b833561290581612871565b95602085013595506040909401359392505050565b60008060006060848603121561292f57600080fd5b61293884612765565b925061294660208501612765565b915061295460408501612765565b90509250925092565b6000806040838503121561297057600080fd5b61297983612765565b91506128dc60208401612765565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000826129da57634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610e0157610e016129a7565b6020808252600c908201526b155b985d5d1a1bdc9a5e995960a21b604082015260600190565b6020808252601390820152724665652063616e27742065786365656420352560681b604082015260600190565b80820180821115610e0157610e016129a7565b60208082526025908201527f43616e6e6f7420736574204d6178205472616e73616374696f6e2062656c6f7760408201526420302e352560d81b606082015260800190565b81810381811115610e0157610e016129a7565b600060208284031215612ac657600080fd5b815161114d81612871565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015612b375784516001600160a01b031683529383019391830191600101612b12565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215612b6d57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202733ba1c566e6eb81dda94a228683140bb4cf5233df290fc3e89c033f88927c964736f6c63430008120033

Deployed Bytecode Sourcemap

6769:17476:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8789:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8789:54:0;;;;;;;;10111:80;;;;;;;;;;-1:-1:-1;10183:5:0;;;;;;;;;;;;-1:-1:-1;;;10183:5:0;;;;10111:80;;;;;;;:::i;22950:258::-;;;;;;;;;;-1:-1:-1;22950:258:0;;;;;:::i;:::-;;:::i;:::-;;10531:216;;;;;;;;;;-1:-1:-1;10531:216:0;;;;;:::i;:::-;;:::i;:::-;;;1536:14:1;;1529:22;1511:41;;1499:2;1484:18;10531:216:0;1371:187:1;17774:253:0;;;;;;;;;;-1:-1:-1;17774:253:0;;;;;:::i;:::-;;:::i;16852:474::-;;;;;;;;;;-1:-1:-1;16852:474:0;;;;;:::i;:::-;;:::i;20878:479::-;;;;;;;;;;-1:-1:-1;20878:479:0;;;;;:::i;:::-;;:::i;23216:269::-;;;;;;;;;;-1:-1:-1;23216:269:0;;;;;:::i;:::-;;:::i;9841:88::-;;;;;;;;;;-1:-1:-1;9914:12:0;;9841:88;;16502:104;;;;;;;;;;-1:-1:-1;16583:15:0;;16502:104;;23978:195;;;;;;;;;;-1:-1:-1;23978:195:0;;;;;:::i;:::-;;:::i;7550:23::-;;;;;;;;;;;;;;;;11053:341;;;;;;;;;;-1:-1:-1;11053:341:0;;;;;:::i;:::-;;:::i;19159:237::-;;;;;;;;;;-1:-1:-1;19159:237:0;;;;;:::i;:::-;;:::i;4225:103::-;;;;;;;;;;-1:-1:-1;4225:103:0;;;;;:::i;:::-;4280:4;4315:5;-1:-1:-1;;;;;4304:16:0;;;4315:5;;4304:16;;4225:103;9935:80;;;;;;;;;;-1:-1:-1;9935:80:0;;7144:1;2550:36:1;;2538:2;2523:18;9935:80:0;2408:184:1;8117:59:0;;;;;;;;;;;;;;;;23808:162;;;;;;;;;;-1:-1:-1;23808:162:0;;;;;:::i;:::-;;:::i;8447:80::-;;;;;;;;;;-1:-1:-1;8447:80:0;;;;-1:-1:-1;;;;;8447:80:0;;;;;;-1:-1:-1;;;;;2761:32:1;;;2743:51;;2731:2;2716:18;8447:80:0;2597:203:1;7754:85:0;;;;;;;;;;;;;;;;8616:68;;;;;;;;;;-1:-1:-1;8616:68:0;;;;-1:-1:-1;;;;;8616:68:0;;;7518:25;;;;;;;;;;;;;;;;8921:27;;;;;;;;;;;;;;;;7322:44;;;;;;;;;;-1:-1:-1;7322:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;7456:21;;;;;;;;;;;;;;;;19956:914;;;;;;;;;;-1:-1:-1;19956:914:0;;;;;:::i;:::-;;:::i;19810:138::-;;;;;;;;;;-1:-1:-1;19810:138:0;;;;;:::i;:::-;;:::i;22289:652::-;;;;;;;;;;-1:-1:-1;22289:652:0;;;;;:::i;:::-;;:::i;8858:51::-;;;;;;;;;;;;;;;;16618:106;;;;;;;;;;-1:-1:-1;16700:16:0;;16618:106;;10759:122;;;;;;;;;;-1:-1:-1;10759:122:0;;;;;:::i;:::-;;:::i;18667:235::-;;;;;;;;;;-1:-1:-1;18667:235:0;;;;;:::i;:::-;;:::i;4586:90::-;;;;;;;;;;-1:-1:-1;4659:9:0;;4586:90;;22022:119;;;;;;;;;;-1:-1:-1;22022:119:0;;;;;:::i;:::-;;:::i;7484:27::-;;;;;;;;;;;;;;;;16273:101;;;;;;;;;;-1:-1:-1;16353:13:0;;16273:101;;7894:39;;;;;;;;;;;;;;;;8752:30;;;;;;;;;;-1:-1:-1;8752:30:0;;;;-1:-1:-1;;;8752:30:0;;;;;;10281:105;;;;;;;;;;-1:-1:-1;10281:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;10365:18:0;10347:7;10365:18;;;:9;:18;;;;;;;10281:105;7986:89;;;;;;;;;;;;;;;;8262:59;;;;;;;;;;;;;;;;7580:30;;;;;;;;;;-1:-1:-1;7580:30:0;;;;-1:-1:-1;;;;;7580:30:0;;;7664:38;;;;;;;;;;;;;;;;16732:85;;;;;;;;;;-1:-1:-1;16803:6:0;;;;16802:7;16732:85;;8534:78;;;;;;;;;;-1:-1:-1;8534:78:0;;;;-1:-1:-1;;;;;8534:78:0;;;10197;;;;;;;;;;-1:-1:-1;10249:7:0;10267:5;-1:-1:-1;;;;;10267:5:0;10197:78;;7373:48;;;;;;;;;;-1:-1:-1;7373:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18035:259;;;;;;;;;;-1:-1:-1;18035:259:0;;;;;:::i;:::-;;:::i;10021:84::-;;;;;;;;;;-1:-1:-1;10095:7:0;;;;;;;;;;;;-1:-1:-1;;;10095:7:0;;;;10021:84;;23493:274;;;;;;;;;;-1:-1:-1;23493:274:0;;;;;:::i;:::-;;:::i;4684:232::-;;;;;;;;;;-1:-1:-1;4684:232:0;;;;;:::i;:::-;;:::i;19655:147::-;;;;;;;;;;-1:-1:-1;19655:147:0;;;;;:::i;:::-;;:::i;8724:19::-;;;;;;;;;;-1:-1:-1;8724:19:0;;;;-1:-1:-1;;;;;8724:19:0;;;10889:156;;;;;;;;;;-1:-1:-1;10889:156:0;;;;;:::i;:::-;;:::i;19404:243::-;;;;;;;;;;-1:-1:-1;19404:243:0;;;;;:::i;:::-;;:::i;17415:351::-;;;;;;;;;;-1:-1:-1;17415:351:0;;;;;:::i;:::-;;:::i;16386:104::-;;;;;;;;;;-1:-1:-1;16467:15:0;;16386:104;;18910:241;;;;;;;;;;-1:-1:-1;18910:241:0;;;;;:::i;:::-;;:::i;8359:81::-;;;;;;;;;;-1:-1:-1;8359:81:0;;;;-1:-1:-1;;;;;8359:81:0;;;8189:60;;;;;;;;;;;;;;;;21684:330;;;;;;;;;;-1:-1:-1;21684:330:0;;;;;:::i;:::-;;:::i;21369:307::-;;;;;;;;;;-1:-1:-1;21369:307:0;;;;;:::i;:::-;;:::i;10392:133::-;;;;;;;;;;-1:-1:-1;10392:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10494:19:0;;;10476:7;10494:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10392:133;18302:357;;;;;;;;;;-1:-1:-1;18302:357:0;;;;;:::i;:::-;;:::i;7709:38::-;;;;;;;;;;;;;;;;7848:39;;;;;;;;;;;;;;;;7619:38;;;;;;;;;;;;;;;;4336:242;;;;;;;;;;-1:-1:-1;4336:242:0;;;;;:::i;:::-;;:::i;4924:299::-;;;;;;;;;;;;;:::i;22153:127::-;;;;;;;;;;-1:-1:-1;22153:127:0;;;;;:::i;:::-;;:::i;8693:24::-;;;;;;;;;;-1:-1:-1;8693:24:0;;;;-1:-1:-1;;;;;8693:24:0;;;7940:39;;;;;;;;;;;;;;;;22950:258;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;;;;;;;;;23085:2:::1;23059:23;:28;;23051:71;;;::::0;-1:-1:-1;;;23051:71:0;;5783:2:1;23051:71:0::1;::::0;::::1;5765:21:1::0;5822:2;5802:18;;;5795:30;5861:32;5841:18;;;5834:60;5911:18;;23051:71:0::1;5581:354:1::0;23051:71:0::1;23176:23;23167:4;23151:12;;:21;;;;:::i;:::-;:49;;;;:::i;:::-;23133:15;:67:::0;-1:-1:-1;22950:258:0:o;10531:216::-;10635:10;10606:4;10623:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10623:32:0;;;;;;;;;;:41;;;10680:37;10606:4;;10623:32;;10680:37;;;;10658:6;160:25:1;;148:2;133:18;;14:177;10680:37:0;;;;;;;;-1:-1:-1;10735:4:0;10531:216;;;;;:::o;17774:253::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;17878:1:::1;17861:13;:18;;17852:51;;;;-1:-1:-1::0;;;17852:51:0::1;;;;;;;:::i;:::-;17914:15;:31:::0;;;18006:13:::1;::::0;17970:15:::1;::::0;:33:::1;::::0;17932:13;;17970:33:::1;:::i;:::-;:49;;;;:::i;:::-;17956:11;:63:::0;-1:-1:-1;17774:253:0:o;16852:474::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;16989:1:::1;16972:13;:18;;16963:51;;;;-1:-1:-1::0;;;16963:51:0::1;;;;;;;:::i;:::-;17043:1;17028:11;:16;;17019:49;;;;-1:-1:-1::0;;;17019:49:0::1;;;;;;;:::i;:::-;17099:1;17082:13;:18;;17073:51;;;;-1:-1:-1::0;;;17073:51:0::1;;;;;;;:::i;:::-;17135:15;:31:::0;;;17177:13:::1;:27:::0;;;17215:15:::1;:31:::0;;;17233:13;17271:29:::1;17193:11:::0;17153:13;17271:29:::1;:::i;:::-;:47;;;;:::i;:::-;17257:11;:61:::0;-1:-1:-1;;;16852:474:0:o;20878:479::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;21016:1:::1;20999:13;:18;;20990:51;;;;-1:-1:-1::0;;;20990:51:0::1;;;;;;;:::i;:::-;21070:1;21055:11;:16;;21046:49;;;;-1:-1:-1::0;;;21046:49:0::1;;;;;;;:::i;:::-;21126:1;21109:13;:18;;21100:51;;;;-1:-1:-1::0;;;21100:51:0::1;;;;;;;:::i;:::-;21162:16;:32:::0;;;21205:14:::1;:28:::0;;;21244:16:::1;:32:::0;;;21263:13;21302:29:::1;21222:11:::0;21181:13;21302:29:::1;:::i;:::-;:47;;;;:::i;:::-;21287:12;:62:::0;-1:-1:-1;;;20878:479:0:o;23216:269::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;23352:1:::1;23322:27;:31;;23314:81;;;;-1:-1:-1::0;;;23314:81:0::1;;;;;;;:::i;:::-;23449:27;23440:4;23424:12;;:21;;;;:::i;:::-;:53;;;;:::i;:::-;23406:15;:71:::0;-1:-1:-1;23216:269:0:o;23978:195::-;24111:8;;24071:21;;-1:-1:-1;;;;;24111:8:0;24103:62;24161:3;24130:28;24142:16;24071:21;24130:28;:::i;:::-;:34;;;;:::i;:::-;24103:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24040:133;23978:195;:::o;11053:341::-;-1:-1:-1;;;;;11173:19:0;;11153:4;11173:19;;;:11;:19;;;;;;;;11193:10;11173:31;;;;;;;;-1:-1:-1;;11173:52:0;11170:157;;-1:-1:-1;;;;;11275:19:0;;;;;;:11;:19;;;;;;;;11295:10;11275:31;;;;;;;;:40;;11309:6;;11275:40;:::i;:::-;-1:-1:-1;;;;;11241:19:0;;;;;;:11;:19;;;;;;;;11261:10;11241:31;;;;;;;:74;11170:157;11346:40;11360:6;11368:9;11379:6;11346:13;:40::i;:::-;11339:47;;11053:341;;;;;;:::o;19159:237::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;19256:1:::1;19246:6;:11;;19237:44;;;;-1:-1:-1::0;;;19237:44:0::1;;;;;;;:::i;:::-;19292:13;:22:::0;;;19357:15:::1;::::0;19339::::1;::::0;19308:6;;19339:33:::1;::::0;::::1;:::i;23808:162::-:0;23945:8;;23915:47;;-1:-1:-1;;;23915:47:0;;-1:-1:-1;;;;;23945:8:0;;;23915:47;;;7999:51:1;8066:18;;;8059:34;;;23883:12:0;;23915:29;;;;;7972:18:1;;23915:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;19956:914::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;20167:1:::1;20151:12;:17;;20142:50;;;;-1:-1:-1::0;;;20142:50:0::1;;;;;;;:::i;:::-;20223:1;20206:13;:18;;20197:51;;;;-1:-1:-1::0;;;20197:51:0::1;;;;;;;:::i;:::-;20278:1;20262:12;:17;;20253:50;;;;-1:-1:-1::0;;;20253:50:0::1;;;;;;;:::i;:::-;20334:1;20317:13;:18;;20308:51;;;;-1:-1:-1::0;;;20308:51:0::1;;;;;;;:::i;:::-;20387:1;20373:10;:15;;20364:48;;;;-1:-1:-1::0;;;20364:48:0::1;;;;;;;:::i;:::-;20441:1;20426:11;:16;;20417:49;;;;-1:-1:-1::0;;;20417:49:0::1;;;;;;;:::i;:::-;20477:15;:30:::0;;;20518:16:::1;:32:::0;;;20561:15:::1;:30:::0;;;20602:16:::1;:32:::0;;;20645:13:::1;:26:::0;;;20682:14:::1;:28:::0;;;20661:10;20735:33:::1;20495:12:::0;20579;20735:33:::1;:::i;:::-;:49;;;;:::i;:::-;20721:11;:63:::0;20848:14:::1;::::0;20829:16:::1;::::0;20810::::1;::::0;:35:::1;::::0;20829:16;20810:35:::1;:::i;:::-;:52;;;;:::i;:::-;20795:12;:67:::0;-1:-1:-1;;;;;;19956:914:0:o;19810:138::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;19906:15:::1;:34:::0;;-1:-1:-1;;;;;;19906:34:0::1;-1:-1:-1::0;;;;;19906:34:0;;;::::1;::::0;;;::::1;::::0;;19810:138::o;22289:652::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;22489:1:::1;22459:27;:31;;22451:81;;;;-1:-1:-1::0;;;22451:81:0::1;;;;;;;:::i;:::-;22576:1;22545:28;:32;;22537:82;;;;-1:-1:-1::0;;;22537:82:0::1;;;;;;;:::i;:::-;22664:2;22638:23;:28;;22630:71;;;::::0;-1:-1:-1;;;22630:71:0;;5783:2:1;22630:71:0::1;::::0;::::1;5765:21:1::0;5822:2;5802:18;;;5795:30;5861:32;5841:18;;;5834:60;5911:18;;22630:71:0::1;5581:354:1::0;22630:71:0::1;22755:23;22746:4;22730:12;;:21;;;;:::i;:::-;:49;;;;:::i;:::-;22712:15;:67:::0;22803:12:::1;::::0;22828:28;;22803:21:::1;::::0;22819:4:::1;::::0;22803:21:::1;:::i;:::-;:54;;;;:::i;:::-;22784:16;:73:::0;22880:12:::1;::::0;22905:27;;22880:21:::1;::::0;22896:4:::1;::::0;22880:21:::1;:::i;:::-;:53;;;;:::i;:::-;22862:15;:71:::0;-1:-1:-1;;;22289:652:0:o;10759:122::-;10814:4;10838:35;10846:7;-1:-1:-1;;10838:7:0;:35::i;18667:235::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;18760:1:::1;18750:6;:11;;18741:44;;;;-1:-1:-1::0;;;18741:44:0::1;;;;;;;:::i;:::-;18796:15;:24:::0;;;18881:13:::1;::::0;18863:15:::1;::::0;18845:33:::1;::::0;18814:6;18845:33:::1;:::i;22022:119::-:0;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22105:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;22105:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22022:119::o;18035:259::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;18140:1:::1;18123:13;:18;;18114:51;;;;-1:-1:-1::0;;;18114:51:0::1;;;;;;;:::i;:::-;18176:16;:32:::0;;;18272:14:::1;::::0;18234:16:::1;::::0;:35:::1;::::0;18195:13;;18234:35:::1;:::i;:::-;:52;;;;:::i;:::-;18219:12;:67:::0;-1:-1:-1;18035:259:0:o;23493:274::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;23632:1:::1;23601:28;:32;;23593:82;;;;-1:-1:-1::0;;;23593:82:0::1;;;;;;;:::i;:::-;23730:28;23721:4;23705:12;;:21;;;;:::i;:::-;:54;;;;:::i;:::-;23686:16;:73:::0;-1:-1:-1;23493:274:0:o;4684:232::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;4774:5:::1;::::0;;;4757:22;;-1:-1:-1;;;;;;4757:22:0;;::::1;-1:-1:-1::0;;;;;4774:5:0;::::1;4757:22;::::0;;;4790:18:::1;::::0;;4831:22:::1;4849:4:::0;4831:15:::1;:22;:::i;:::-;4819:9;:34:::0;4905:1:::1;4890:5:::0;;4869:39:::1;::::0;-1:-1:-1;;;;;4890:5:0;;::::1;::::0;4869:39:::1;::::0;4905:1;;4869:39:::1;4684:232:::0;:::o;19655:147::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;19754:20:::1;:40:::0;;-1:-1:-1;;;;;;19754:40:0::1;-1:-1:-1::0;;;;;19754:40:0;;;::::1;::::0;;;::::1;::::0;;19655:147::o;10889:156::-;10969:4;10993:44;11007:10;11019:9;11030:6;10993:13;:44::i;19404:243::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;19502:1:::1;19492:6;:11;;19483:44;;;;-1:-1:-1::0;;;19483:44:0::1;;;;;;;:::i;:::-;19538:14;:23:::0;;;19606:16:::1;::::0;19587::::1;::::0;19555:6;;19587:35:::1;::::0;::::1;:::i;17415:351::-:0;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;17566:1:::1;17549:13;:18;;17540:51;;;;-1:-1:-1::0;;;17540:51:0::1;;;;;;;:::i;:::-;17602:15;:31:::0;;;17644:20:::1;:40:::0;;-1:-1:-1;;;;;;17644:40:0::1;-1:-1:-1::0;;;;;17644:40:0;::::1;;::::0;;17745:13:::1;::::0;17709:15:::1;::::0;:33:::1;::::0;17602:31;;17709:33:::1;:::i;:::-;:49;;;;:::i;:::-;17695:11;:63:::0;-1:-1:-1;;17415:351:0:o;18910:241::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;19004:1:::1;18994:6;:11;;18985:44;;;;-1:-1:-1::0;;;18985:44:0::1;;;;;;;:::i;:::-;19040:16;:25:::0;;;19129:14:::1;::::0;19110:16:::1;::::0;19091:35:::1;::::0;19059:6;19091:35:::1;:::i;21684:330::-:0;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;21828:11:::1;:22:::0;;-1:-1:-1;;;;21828:22:0::1;-1:-1:-1::0;;;21828:22:0;::::1;;;;::::0;;21877:12:::1;::::0;21903:25;;21877:22:::1;::::0;21893:5:::1;::::0;21877:22:::1;:::i;:::-;:52;;;;:::i;:::-;21861:13;:68:::0;21954:12:::1;::::0;21980:25;;21954:22:::1;::::0;21970:5:::1;::::0;21954:22:::1;:::i;:::-;:52;;;;:::i;:::-;21940:11;:66:::0;-1:-1:-1;;;21684:330:0:o;21369:307::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;21516:21:::1;:46:::0;;-1:-1:-1;;;;;21516:46:0;;::::1;-1:-1:-1::0;;;;;;21516:46:0;;::::1;;::::0;;;21573:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;21628:18:::1;:40:::0;;;;;::::1;::::0;::::1;;::::0;;21369:307::o;18302:357::-;9106:5;;-1:-1:-1;;;;;9106:5:0;9092:10;:19;;:61;;-1:-1:-1;9137:15:0;;-1:-1:-1;;;;;9137:15:0;9115:10;:38;9092:61;9084:86;;;;-1:-1:-1;;;9084:86:0;;;;;;;:::i;:::-;18454:1:::1;18437:13;:18;;18428:51;;;;-1:-1:-1::0;;;18428:51:0::1;;;;;;;:::i;:::-;18490:16;:32:::0;;;18533:20:::1;:40:::0;;-1:-1:-1;;;;;;18533:40:0::1;-1:-1:-1::0;;;;;18533:40:0;::::1;;::::0;;18637:14:::1;::::0;18599:16:::1;::::0;:35:::1;::::0;18490:32;;18599:35:::1;:::i;:::-;:52;;;;:::i;:::-;18584:12;:67:::0;-1:-1:-1;;18302:357:0:o;4336:242::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4425:22:0;::::1;4417:73;;;::::0;-1:-1:-1;;;4417:73:0;;8556:2:1;4417:73:0::1;::::0;::::1;8538:21:1::0;8595:2;8575:18;;;8568:30;8634:34;8614:18;;;8607:62;-1:-1:-1;;;8685:18:1;;;8678:36;8731:19;;4417:73:0::1;8354:402:1::0;4417:73:0::1;4527:5;::::0;;4506:37:::1;::::0;-1:-1:-1;;;;;4506:37:0;;::::1;::::0;4527:5;::::1;::::0;4506:37:::1;::::0;::::1;4554:5;:16:::0;;-1:-1:-1;;;;;;4554:16:0::1;-1:-1:-1::0;;;;;4554:16:0;;;::::1;::::0;;;::::1;::::0;;4336:242::o;4924:299::-;4985:14;;-1:-1:-1;;;;;4985:14:0;5003:10;4985:28;4977:76;;;;-1:-1:-1;;;4977:76:0;;8963:2:1;4977:76:0;;;8945:21:1;9002:2;8982:18;;;8975:30;9041:34;9021:18;;;9014:62;-1:-1:-1;;;9092:18:1;;;9085:33;9135:19;;4977:76:0;8761:399:1;4977:76:0;5090:9;;5072:15;:27;5064:59;;;;-1:-1:-1;;;5064:59:0;;9367:2:1;5064:59:0;;;9349:21:1;9406:2;9386:18;;;9379:30;-1:-1:-1;;;9425:18:1;;;9418:48;9483:18;;5064:59:0;9165:342:1;5064:59:0;5167:14;;;5160:5;;5139:43;;-1:-1:-1;;;;;5167:14:0;;;;5160:5;;;;5139:43;;;5201:14;;;5193:22;;-1:-1:-1;;;;;;5193:22:0;-1:-1:-1;;;;;5201:14:0;;;5193:22;;;;;;4924:299::o;22153:127::-;4280:4;4315:5;-1:-1:-1;;;;;4315:5:0;4184:10;4304:16;4168:38;;;;-1:-1:-1;;;4168:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22240:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;22240:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;22153:127::o;11402:1361::-;11514:6;;11494:4;;11514:6;;11511:63;;;11530:41;11545:6;11553:9;11564:6;11530:14;:41::i;:::-;11523:48;;;;11511:63;11599:4;;-1:-1:-1;;;;;11599:4:0;;;11589:14;;;;11586:54;;11619:9;13162:15;;13150:6;:27;13206:15;;13188:12;:33;13250:13;;13232:10;:31;13292:11;;13274:8;:29;13112:199;11619:9;11668:4;;-1:-1:-1;;;;;11668:4:0;;;11655:17;;;;11652:58;;11688:10;13370:16;;13358:6;:28;13415:16;;13397:12;:34;13460:14;;13442:10;:32;13503:12;;13485:8;:30;13319:204;11688:10;11736:5;;-1:-1:-1;;;;;11726:15:0;;;11736:5;;11726:15;;;;:45;;-1:-1:-1;;;;;;11745:26:0;;11766:4;11745:26;;11726:45;:75;;;;-1:-1:-1;11796:4:0;;-1:-1:-1;;;;;11775:26:0;;;11796:4;;11775:26;;11726:75;:96;;;;-1:-1:-1;11818:4:0;;-1:-1:-1;;;;;11805:17:0;;;11818:4;;11805:17;;11726:96;:126;;;-1:-1:-1;;;;;;11826:26:0;;;;;;:15;:26;;;;;;;;11726:126;11722:318;;;-1:-1:-1;;;;;10365:18:0;;11868;10365;;;:9;:18;;;;;;11957:15;;11933:19;11946:6;10365:18;11933:19;:::i;:::-;11932:40;;11924:114;;;;-1:-1:-1;;;11924:114:0;;9714:2:1;11924:114:0;;;9696:21:1;9753:2;9733:18;;;9726:30;9792:34;9772:18;;;9765:62;9863:32;9843:18;;;9836:60;9913:19;;11924:114:0;9512:426:1;11924:114:0;11853:187;11722:318;12106:4;;-1:-1:-1;;;;;12106:4:0;;;12096:14;;;;12093:130;;12144:15;;12134:6;:25;;:55;;;-1:-1:-1;;;;;;12163:26:0;;;;;;:15;:26;;;;;;;;12134:55;12126:85;;;;-1:-1:-1;;;12126:85:0;;10145:2:1;12126:85:0;;;10127:21:1;10184:2;10164:18;;;10157:30;-1:-1:-1;;;10203:18:1;;;10196:47;10260:18;;12126:85:0;9943:341:1;12126:85:0;12259:4;;-1:-1:-1;;;;;12259:4:0;;;12246:17;;;;12243:131;;12297:16;;12287:6;:26;;:53;;;-1:-1:-1;;;;;;12317:23:0;;;;;;:15;:23;;;;;;;;12287:53;12279:83;;;;-1:-1:-1;;;12279:83:0;;10145:2:1;12279:83:0;;;10127:21:1;10184:2;10164:18;;;10157:30;-1:-1:-1;;;10203:18:1;;;10196:47;10260:18;;12279:83:0;9943:341:1;12279:83:0;12414:16;:14;:16::i;:::-;12411:35;;;12433:10;:8;:10::i;:::-;-1:-1:-1;;;;;12478:17:0;;;;;;:9;:17;;;;;;:26;;12498:6;;12478:26;:::i;:::-;-1:-1:-1;;;;;12458:17:0;;;;;;:9;:17;;;;;;;;:46;;;;13618:11;:19;;;;;;;;13617:20;12542:59;;12595:6;12542:59;;;12566:26;12574:9;12585:6;12566:7;:26::i;:::-;-1:-1:-1;;;;;12635:20:0;;;;;;:9;:20;;;;;;12517:84;;-1:-1:-1;12635:37:0;;12517:84;;12635:37;:::i;:::-;-1:-1:-1;;;;;12612:20:0;;;;;;;:9;:20;;;;;;;:60;;;;12690:43;;;;;;;;;;12718:14;160:25:1;;148:2;133:18;;14:177;12690:43:0;;;;;;;;-1:-1:-1;12751:4:0;;11402:1361;-1:-1:-1;;;;11402:1361:0:o;12775:302::-;-1:-1:-1;;;;;12905:17:0;;12868:4;12905:17;;;:9;:17;;;;;;:26;;12925:6;;12905:26;:::i;:::-;-1:-1:-1;;;;;12885:17:0;;;;;;;:9;:17;;;;;;:46;;;;12965:20;;;;;;;:31;;12989:6;;12965:31;:::i;:::-;-1:-1:-1;;;;;12942:20:0;;;;;;;:9;:20;;;;;;;:54;;;;13012:35;;;;;;;;;;13040:6;160:25:1;;148:2;133:18;;14:177;13012:35:0;;;;;;;;-1:-1:-1;13065:4:0;12775:302;;;;;:::o;13979:197::-;14066:4;;14028;;-1:-1:-1;;;;;14066:4:0;14052:10;:18;;;;:38;;-1:-1:-1;14084:6:0;;;;14083:7;14052:38;:62;;;;-1:-1:-1;14103:11:0;;-1:-1:-1;;;14103:11:0;;;;14052:62;:116;;;;-1:-1:-1;14155:13:0;;14145:4;14127:24;;;;:9;:24;;;;;;:41;;14052:116;14045:123;;13979:197;:::o;14184:1630::-;8997:6;:13;;-1:-1:-1;;8997:13:0;9006:4;8997:13;;;14282:4:::1;-1:-1:-1::0;10365:18:0;;;:9;:18;;;;;;14233:55:::1;;14326:11;;14302:20;:35;14299:180;;14368:11;::::0;14353:12:::1;:26:::0;14299:180:::1;;;14432:12;:35:::0;;;14299:180:::1;14491:23;14557:1;14546:6;;14533:8;;14517:12;;:25;;;;:::i;:::-;:36;;;;:::i;:::-;:42;;;;:::i;:::-;14491:68;;14570:20;14609:15;14593:12;;:32;;;;:::i;:::-;14662:16;::::0;;14676:1:::1;14662:16:::0;;;;;::::1;::::0;;14570:55;;-1:-1:-1;14638:21:0::1;::::0;14662:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;14662:16:0::1;14638:40;;14707:4;14689;14694:1;14689:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14689:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;14733:4:::1;::::0;14723:7;;14733:4;::::1;::::0;14723;;14733;;14723:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;14723:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14808:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14808:188:0;;14774:21:::1;::::0;14808:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14880:12;;14750:21:::1;::::0;14923:4;;14950::::1;::::0;14970:15:::1;::::0;14808:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15009:17;15054:13;15029:21;:39;;;;:::i;:::-;15009:59;;15081:19;15125:1;15115:6;;:12;;;;:::i;:::-;15103:8;;:25;;;;:::i;:::-;15081:47;;15149:26;15218:1;15202:11;15191:6;;15178:9;:20;;;;:::i;:::-;:36;;;;:::i;:::-;:42;;;;:::i;:::-;15149:71;;15231:24;15286:11;15271:10;;15258:9;:24;;;;:::i;:::-;:40;;;;:::i;:::-;15231:67;;15309:26;15368:11;15351:12;;15338:9;:26;;;;:::i;:::-;:42;;;;:::i;:::-;15428:20;::::0;15420:77:::1;::::0;15309:71;;-1:-1:-1;15394:21:0::1;::::0;-1:-1:-1;;;;;15428:20:0;;::::1;::::0;15487:5:::1;::::0;15309:71;;15394:21;15420:77;15394:21;15420:77;15309:71;15428:20;15487:5;15420:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15393:104;;;15516:16;15508:59;;;::::0;-1:-1:-1;;;15508:59:0;;11950:2:1;15508:59:0::1;::::0;::::1;11932:21:1::0;11989:2;11969:18;;;11962:30;12028:32;12008:18;;;12001:60;12078:18;;15508:59:0::1;11748:354:1::0;15508:59:0::1;15611:18;::::0;15603:73:::1;::::0;15579:19:::1;::::0;-1:-1:-1;;;;;15611:18:0::1;::::0;15666:5:::1;::::0;15643:16;;15579:19;15603:73;15579:19;15603:73;15643:16;15611:18;15666:5;15603:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15578:98;;;15695:14;15687:57;;;::::0;-1:-1:-1;;;15687:57:0;;11950:2:1;15687:57:0::1;::::0;::::1;11932:21:1::0;11989:2;11969:18;;;11962:30;12028:32;12008:18;;;12001:60;12078:18;;15687:57:0::1;11748:354:1::0;15687:57:0::1;15757:49;15770:15;15787:18;15757:12;:49::i;:::-;-1:-1:-1::0;;9015:6:0;:14;;-1:-1:-1;;9015:14:0;;;-1:-1:-1;;;;;;;;;;14184:1630:0:o;13653:316::-;13720:7;13740:17;13776:8;;13769:3;13760:6;:12;;;;:::i;:::-;:25;;;;:::i;:::-;13843:4;13825:24;;;;:9;:24;;;;;;13740:45;;-1:-1:-1;13825:38:0;;13740:45;;13825:38;:::i;:::-;13816:4;13798:24;;;;:9;:24;;;;;;;:65;;;;13879:42;;-1:-1:-1;;;;;13879:42:0;;;;;;;13911:9;160:25:1;;148:2;133:18;;14:177;13879:42:0;;;;;;;;13941:20;13951:9;13941:6;:20;:::i;:::-;13934:27;13653:316;-1:-1:-1;;;;13653:316:0:o;15822:416::-;15902:15;;15899:332;;15933:6;;16094:21;;15933:231;;-1:-1:-1;;;15933:231:0;;16000:4;15933:231;;;12448:34:1;12498:18;;;12491:34;;;15933:6:0;12541:18:1;;;12534:34;;;12584:18;;;12577:34;-1:-1:-1;;;;;16094:21:0;;;12627:19:1;;;12620:44;16134:15:0;12680:19:1;;;12673:35;15933:6:0;;;:22;;15963:9;;12382:19:1;;15933:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;16184:35:0;;;13204:25:1;;;13260:2;13245:18;;13238:34;;;16184:35:0;;-1:-1:-1;13177:18:1;16184:35:0;;;;;;;15899:332;15822:416;;:::o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:173::-;1002:20;;-1:-1:-1;;;;;1051:31:1;;1041:42;;1031:70;;1097:1;1094;1087:12;1031:70;934:173;;;:::o;1112:254::-;1180:6;1188;1241:2;1229:9;1220:7;1216:23;1212:32;1209:52;;;1257:1;1254;1247:12;1209:52;1280:29;1299:9;1280:29;:::i;:::-;1270:39;1356:2;1341:18;;;;1328:32;;-1:-1:-1;;;1112:254:1:o;1563:316::-;1640:6;1648;1656;1709:2;1697:9;1688:7;1684:23;1680:32;1677:52;;;1725:1;1722;1715:12;1677:52;-1:-1:-1;;1748:23:1;;;1818:2;1803:18;;1790:32;;-1:-1:-1;1869:2:1;1854:18;;;1841:32;;1563:316;-1:-1:-1;1563:316:1:o;1884:328::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2069:29;2088:9;2069:29;:::i;:::-;2059:39;;2117:38;2151:2;2140:9;2136:18;2117:38;:::i;:::-;2107:48;;2202:2;2191:9;2187:18;2174:32;2164:42;;1884:328;;;;;:::o;2217:186::-;2276:6;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2368:29;2387:9;2368:29;:::i;2805:523::-;2909:6;2917;2925;2933;2941;2949;3002:3;2990:9;2981:7;2977:23;2973:33;2970:53;;;3019:1;3016;3009:12;2970:53;-1:-1:-1;;3042:23:1;;;3112:2;3097:18;;3084:32;;-1:-1:-1;3163:2:1;3148:18;;3135:32;;3214:2;3199:18;;3186:32;;-1:-1:-1;3265:3:1;3250:19;;3237:33;;-1:-1:-1;3317:3:1;3302:19;3289:33;;-1:-1:-1;2805:523:1;-1:-1:-1;2805:523:1:o;3333:118::-;3419:5;3412:13;3405:21;3398:5;3395:32;3385:60;;3441:1;3438;3431:12;3385:60;3333:118;:::o;3456:315::-;3521:6;3529;3582:2;3570:9;3561:7;3557:23;3553:32;3550:52;;;3598:1;3595;3588:12;3550:52;3621:29;3640:9;3621:29;:::i;:::-;3611:39;;3700:2;3689:9;3685:18;3672:32;3713:28;3735:5;3713:28;:::i;:::-;3760:5;3750:15;;;3456:315;;;;;:::o;3776:254::-;3844:6;3852;3905:2;3893:9;3884:7;3880:23;3876:32;3873:52;;;3921:1;3918;3911:12;3873:52;3957:9;3944:23;3934:33;;3986:38;4020:2;4009:9;4005:18;3986:38;:::i;:::-;3976:48;;3776:254;;;;;:::o;4035:377::-;4109:6;4117;4125;4178:2;4166:9;4157:7;4153:23;4149:32;4146:52;;;4194:1;4191;4184:12;4146:52;4233:9;4220:23;4252:28;4274:5;4252:28;:::i;:::-;4299:5;4351:2;4336:18;;4323:32;;-1:-1:-1;4402:2:1;4387:18;;;4374:32;;4035:377;-1:-1:-1;;;4035:377:1:o;4417:334::-;4494:6;4502;4510;4563:2;4551:9;4542:7;4538:23;4534:32;4531:52;;;4579:1;4576;4569:12;4531:52;4602:29;4621:9;4602:29;:::i;:::-;4592:39;;4650:38;4684:2;4673:9;4669:18;4650:38;:::i;:::-;4640:48;;4707:38;4741:2;4730:9;4726:18;4707:38;:::i;:::-;4697:48;;4417:334;;;;;:::o;4756:260::-;4824:6;4832;4885:2;4873:9;4864:7;4860:23;4856:32;4853:52;;;4901:1;4898;4891:12;4853:52;4924:29;4943:9;4924:29;:::i;:::-;4914:39;;4972:38;5006:2;4995:9;4991:18;4972:38;:::i;5247:329::-;5449:2;5431:21;;;5488:1;5468:18;;;5461:29;-1:-1:-1;;;5521:2:1;5506:18;;5499:36;5567:2;5552:18;;5247:329::o;5940:127::-;6001:10;5996:3;5992:20;5989:1;5982:31;6032:4;6029:1;6022:15;6056:4;6053:1;6046:15;6072:217;6112:1;6138;6128:132;;6182:10;6177:3;6173:20;6170:1;6163:31;6217:4;6214:1;6207:15;6245:4;6242:1;6235:15;6128:132;-1:-1:-1;6274:9:1;;6072:217::o;6294:168::-;6367:9;;;6398;;6415:15;;;6409:22;;6395:37;6385:71;;6436:18;;:::i;6467:336::-;6669:2;6651:21;;;6708:2;6688:18;;;6681:30;-1:-1:-1;;;6742:2:1;6727:18;;6720:42;6794:2;6779:18;;6467:336::o;6808:343::-;7010:2;6992:21;;;7049:2;7029:18;;;7022:30;-1:-1:-1;;;7083:2:1;7068:18;;7061:49;7142:2;7127:18;;6808:343::o;7156:125::-;7221:9;;;7242:10;;;7239:36;;;7255:18;;:::i;7286:401::-;7488:2;7470:21;;;7527:2;7507:18;;;7500:30;7566:34;7561:2;7546:18;;7539:62;-1:-1:-1;;;7632:2:1;7617:18;;7610:35;7677:3;7662:19;;7286:401::o;7692:128::-;7759:9;;;7780:11;;;7777:37;;;7794:18;;:::i;8104:245::-;8171:6;8224:2;8212:9;8203:7;8199:23;8195:32;8192:52;;;8240:1;8237;8230:12;8192:52;8272:9;8266:16;8291:28;8313:5;8291:28;:::i;10421:127::-;10482:10;10477:3;10473:20;10470:1;10463:31;10513:4;10510:1;10503:15;10537:4;10534:1;10527:15;10553:980;10815:4;10863:3;10852:9;10848:19;10894:6;10883:9;10876:25;10920:2;10958:6;10953:2;10942:9;10938:18;10931:34;11001:3;10996:2;10985:9;10981:18;10974:31;11025:6;11060;11054:13;11091:6;11083;11076:22;11129:3;11118:9;11114:19;11107:26;;11168:2;11160:6;11156:15;11142:29;;11189:1;11199:195;11213:6;11210:1;11207:13;11199:195;;;11278:13;;-1:-1:-1;;;;;11274:39:1;11262:52;;11369:15;;;;11334:12;;;;11310:1;11228:9;11199:195;;;-1:-1:-1;;;;;;;11450:32:1;;;;11445:2;11430:18;;11423:60;-1:-1:-1;;;11514:3:1;11499:19;11492:35;11411:3;10553:980;-1:-1:-1;;;10553:980:1:o;12719:306::-;12807:6;12815;12823;12876:2;12864:9;12855:7;12851:23;12847:32;12844:52;;;12892:1;12889;12882:12;12844:52;12921:9;12915:16;12905:26;;12971:2;12960:9;12956:18;12950:25;12940:35;;13015:2;13004:9;13000:18;12994:25;12984:35;;12719:306;;;;;:::o

Swarm Source

ipfs://2733ba1c566e6eb81dda94a228683140bb4cf5233df290fc3e89c033f88927c9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.