ETH Price: $2,516.09 (+0.99%)

Token

XENOMORPH (XENOMORPH)
 

Overview

Max Total Supply

1,000,000,000 XENOMORPH

Holders

92

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
9,800,000 XENOMORPH

Value
$0.00
0x8da3E12f6CDFd04A419b4a1168eb006d7B7264d9
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Xenomorph

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-11
*/

// Xenomorph 
// 
// Xenomorph is completely self-sufficient as all taxes are assigned to directly Buy and Burn the Native Token
// Self-Sufficient - Community Oriented - Simple Tokenomics - A new type of ERC20 Contract - 
// The first rule of any technology is that automation applied to an efficient operation will magnify the efficiency.
// Tax: 2% Automated Tax allocated to Buyback and Burn 
// SPDX-License-Identifier: MIT
pragma solidity 0.8.12;

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 IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    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 getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}


contract Xenomorph is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 constant private startingSupply = 1_000_000_000;

    string constant private _name = "XENOMORPH";
    string constant private _symbol = "XENOMORPH";
    uint8 constant private _decimals = 18;

    uint256 constant private _tTotal = startingSupply * 10**_decimals;

    struct Fees {
        uint16 buyFee;
        uint16 sellFee;
        uint16 transferFee;
    }

    struct Ratios {
        
        uint16 tokens;
        uint16 swap;
        uint16 burn;
        uint16 total;
    }

    Fees public _taxRates = Fees({
        buyFee: 200,
        sellFee: 200,
        transferFee: 0
        });

    Ratios public _ratios = Ratios({
        tokens: 0,
        swap: 0,
        burn: 10,
        total: 10
        });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 2000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant masterTaxDivisor = 10000;

    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address tokens;
        address payable swap;
    }

    TaxWallets public _taxWallets = TaxWallets({
        tokens: 0xdb809F4a17E59B05d7AB707aF49b518F1A684903,
        swap: payable(0xdb809F4a17E59B05d7AB707aF49b518F1A684903)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 public _amountTokensLastSold;
    uint256 public _percentLastSoldToBuyBackTimesTen = 10;
    uint256 private _buyBackAmount;
    

    uint256 private _maxTxAmount = _tTotal;
    uint256 private _maxWalletSize = _tTotal;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    bool public buyBackEnabled = false;
    

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    event SwapETHForTokens(uint256 amountIn, address[] path);
      
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[msg.sender] = _tTotal;
        emit Transfer(address(0), msg.sender, _tTotal);

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert();
        }

        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;

        _approve(_owner, address(dexRouter), type(uint256).max);
        _approve(address(this), address(dexRouter), type(uint256).max);

        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[DEAD] = true;
        _liquidityHolders[_owner] = true;
        _isExcludedFromLimits[address(this)] = true;
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external pure override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    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 allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, 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] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

    function setNewRouter(address newRouter) public onlyOwner {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

    function setLpPair(address pair, bool enabled) external onlyOwner {
        if (enabled == false) {
            lpPairs[pair] = false;
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
        }
    }

    
    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }
    
    function setRatios(uint16 tokens, uint16 swap, uint16 burn) external onlyOwner {
        
        _ratios.tokens = tokens;
        _ratios.swap = swap;
        _ratios.burn = burn;
        _ratios.total =  swap + burn;
    }

    
    function setExcludedFromLimits(address account, bool enabled) external onlyOwner {
        _isExcludedFromLimits[account] = enabled;
    }

    function isExcludedFromLimits(address account) public view returns (bool) {
        return _isExcludedFromLimits[account];
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function setExcludedFromFees(address account, bool enabled) public onlyOwner {
        _isExcludedFromFees[account] = enabled;
    }

    function getMaxTX() public view returns (uint256) {
        return _maxTxAmount / (10**_decimals);
    }

    function getMaxWallet() public view returns (uint256) {
        return _maxWalletSize / (10**_decimals);
    }


    function getAmountTokensLastSold() public view returns (uint256) {
        return _amountTokensLastSold;
    }

    function percentLastSoldToBuyBackTimesTen() public view returns (uint256) {
        return _percentLastSoldToBuyBackTimesTen;
    }

    
    function setBuyBackEnabled(bool _enabled) public onlyOwner {
        buyBackEnabled = _enabled;
        
    }

    function setPercentLastSoldToBuyBackTimesTen(uint256 percentLastSoldToBuyBackTimesTenNew) public onlyOwner {
        _percentLastSoldToBuyBackTimesTen = percentLastSoldToBuyBackTimesTenNew;
    }

     function _getSellBnBAmount(uint256 tokenAmount) private view returns(uint256) {
        address[] memory path = new address[](2);

        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint[] memory amounts = dexRouter.getAmountsOut(tokenAmount, path);

        return amounts[1];
        
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor, uint256 time) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        contractSwapTimer = time;
    }

    function setWallets(address tokens, address payable swap) external onlyOwner {
        _taxWallets.tokens = tokens;
        _taxWallets.swap = payable(swap);
    }

    function setContractSwapEnabled(bool enabled) external onlyOwner {
        contractSwapEnabled = enabled;
        emit ContractSwapEnabledUpdated(enabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if(to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (sell) 
        {
            if (!inSwap
                && contractSwapEnabled
            ) {
                if (lastSwap + contractSwapTimer < block.timestamp) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                        contractSwap();
                        lastSwap = block.timestamp;
                    }
                }

            }
            
            uint256 balance = address(this).balance;
            if (buyBackEnabled && contractSwapEnabled) {
                        _amountTokensLastSold += _getSellBnBAmount(amount);
                        uint256 buyBackAmount = _amountTokensLastSold / (1000) * (_percentLastSoldToBuyBackTimesTen);
                        if(buyBackAmount < balance){
                            buyBackTokens(buyBackAmount);
			                _amountTokensLastSold;
                        }else{
			                _amountTokensLastSold = 0;
                        }
                    }
                

            
               
            
            
        }
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, other);
        
    }

    function contractSwap() internal lockTheSwap {
        uint256 amountToSwap = swapAmount;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        uint256 balanceBefore = address(this).balance;

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

        );
        uint256 amountBNB = address(this).balance - (balanceBefore);
        uint256 amountBNBMarketing = amountBNB * (_ratios.swap) / (_ratios.total);
        
        (bool MarketingSuccess, /* bytes memory data */) = payable(_taxWallets.swap).call{value: amountBNBMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

    }
    
  function buyBackTokens(uint256 amount) private lockTheSwap {
    	if (amount > 0) {
    	    swapETHForTokens(amount);
	    }
    }

    //swapExactETHForTokens
    function swapETHForTokens(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = dexRouter.WETH();
        path[1] = address(this);

      // make the swap
        dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0, // accept any amount of Tokens
            path,
            DEAD, // Burn address
            block.timestamp 
        );

        emit SwapETHForTokens(amount, path);
    }
    
    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 5) / 10000;
        swapAmount = (balanceOf(lpPair) * 5) / 10000;
    }

    function sweepContingency() external onlyOwner {
        payable(_owner).transfer(address(this).balance);
    }


    function transferContractToken(address _token, address _to, uint256 _quant) public onlyOwner returns(bool _sent){
        _sent = IERC20(_token).transfer(_to, _quant);
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint8 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]);
            _finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, false, true);
        }
    }

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 tokenAmount = (feeAmount * _ratios.tokens) / (_ratios.total);
        if (tokenAmount > 0) {
            feeAmount -= tokenAmount;
            address destination = _taxWallets.tokens;
            _tOwned[destination] += tokenAmount;
            emit Transfer(from, destination, tokenAmount);
        }
        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - (feeAmount + tokenAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"amountCurrency","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","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":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_amountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAmountTokensLastSold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"percentLastSoldToBuyBackTimesTen","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setBuyBackEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percentLastSoldToBuyBackTimesTenNew","type":"uint256"}],"name":"setPercentLastSoldToBuyBackTimesTen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"tokens","type":"uint16"},{"internalType":"uint16","name":"swap","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"},{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokens","type":"address"},{"internalType":"address payable","name":"swap","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_quant","type":"uint256"}],"name":"transferContractToken","outputs":[{"internalType":"bool","name":"_sent","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":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6000600381905560c8608081905260a05260c08190526008805465ffffffffffff191662c800c817905560e0819052610100819052600a61012081905261014081905260098054660a000a000000006001600160401b03199091161790556101a060405273db809f4a17e59b05d7ab707af49b518f1a684903610160819052610180819052600c80546001600160a01b03199081168317909155600d80549091169091179055600e805461ff0019169055600f919091556014819055620000c99060129062000754565b620000d990633b9aca006200076c565b601655620000ea6012600a62000754565b620000fa90633b9aca006200076c565b6017556018805462ffffff19169055620001176012600a62000754565b6200012790633b9aca006200076c565b33600081815260016020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200016a6012600a62000754565b6200017a90633b9aca006200076c565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620001d357600a80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002c9565b46606114156200020957600a80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002c9565b4660011480620002195750466004145b80620002255750466003145b156200025757600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002c9565b4661a86a14156200028e57600a80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002c9565b4660fa1415620002c457600a80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002c9565b600080fd5b600a60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200031d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034391906200078e565b6001600160a01b031663c9c65396600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003cb91906200078e565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043e91906200078e565b600b80546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260408120805460ff1916600117905554600a546200048d9291821691166000196200053e565b600a54620004a99030906001600160a01b03166000196200053e565b600080546001600160a01b0390811682526005602090815260408084208054600160ff1991821681179092553080875283872080548316841790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805483168417905586549095168652600784528286208054821683179055938552600690925290922080549091169091179055620007b9565b6001600160a01b038316620005905760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005de5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000587565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620006965781600019048211156200067a576200067a6200063f565b808516156200068857918102915b93841c93908002906200065a565b509250929050565b600082620006af575060016200074e565b81620006be575060006200074e565b8160018114620006d75760028114620006e25762000702565b60019150506200074e565b60ff841115620006f657620006f66200063f565b50506001821b6200074e565b5060208310610133831016604e8410600b841016171562000727575081810a6200074e565b62000733838362000655565b80600019048211156200074a576200074a6200063f565b0290505b92915050565b60006200076560ff8416836200069e565b9392505050565b60008160001904831182151516156200078957620007896200063f565b500290565b600060208284031215620007a157600080fd5b81516001600160a01b03811681146200076557600080fd5b612fd680620007c96000396000f3fe6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610909578063f94aa1b41461091e578063fcbab4ab14610965578063fdb78c0e1461097b57600080fd5b8063dd62ed3e1461088d578063e4fcfd18146108d3578063eafb5a3c146108e957600080fd5b8063b1b08f71146104ca578063b3d514fb146104ca578063b74f7eb5146107c5578063cab5ebea146107e5578063cf84770614610805578063d3f6a1571461086d57600080fd5b806380c581d11161014957806395d89b411161012357806395d89b41146103a157806398077fa114610765578063a9059cbb14610785578063aa22b172146107a557600080fd5b806380c581d114610712578063893d20e8146107325780638a8c523c1461075057600080fd5b8063590ffdce1461064f5780635cce86cd1461066f5780636053a0e3146106a85780636ebd0078146106c857806370a08231146106dd578063715018a6146106fd57600080fd5b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146105bd5780634fb2e45d146105d75780634fbee193146105f757806350a8e0161461063057600080fd5b806336fddb04146105685780633bb8ef6814610588578063452ed4f11461059d57600080fd5b80632b28fc7a146104ca5780632e8fa821146104e05780632f83f7bf146104f6578063313ce5671461050c57806332cde6641461052857806334cd82601461054857600080fd5b80630fa604e4116102a15780630fa604e414610429578063163140a61461043e57806318160ddd1461045357806323b872dd146104685780632610eaca1461048857806329370cc6146104aa57600080fd5b806303fd2a45146102f45780630445b66714610327578063069d955f1461034b57806306fdde03146103a15780630758d924146103d9578063095ea7b3146103f957600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033357600080fd5b5061033d60115481565b60405190815260200161031e565b34801561035757600080fd5b5060085461037c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161031e565b3480156103ad57600080fd5b5060408051808201825260098152680b08a9c9e9a9ea4a0960bb1b6020820152905161031e91906127de565b3480156103e557600080fd5b50600a5461030a906001600160a01b031681565b34801561040557600080fd5b50610419610414366004612848565b61099a565b604051901515815260200161031e565b34801561043557600080fd5b5061033d6109b1565b34801561044a57600080fd5b5060135461033d565b34801561045f57600080fd5b5061033d6109d1565b34801561047457600080fd5b50610419610483366004612874565b610a10565b34801561049457600080fd5b506104a86104a336600461298b565b610a88565b005b3480156104b657600080fd5b506104a86104c5366004612a5b565b610b90565b3480156104d657600080fd5b5061033d6107d081565b3480156104ec57600080fd5b5061033d60125481565b34801561050257600080fd5b5061033d60135481565b34801561051857600080fd5b506040516012815260200161031e565b34801561053457600080fd5b506104a8610543366004612a8f565b610bd6565b34801561055457600080fd5b506104a8610563366004612ad2565b610cb9565b34801561057457600080fd5b506104a8610583366004612b0d565b610d52565b34801561059457600080fd5b5060145461033d565b3480156105a957600080fd5b50600b5461030a906001600160a01b031681565b3480156105c957600080fd5b506018546104199060ff1681565b3480156105e357600080fd5b506104a86105f2366004612b46565b610da7565b34801561060357600080fd5b50610419610612366004612b46565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063c57600080fd5b5060185461041990610100900460ff1681565b34801561065b57600080fd5b506104a861066a366004612b0d565b610ece565b34801561067b57600080fd5b5061041961068a366004612b46565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106b457600080fd5b506018546104199062010000900460ff1681565b3480156106d457600080fd5b5061033d610f23565b3480156106e957600080fd5b5061033d6106f8366004612b46565b610f3e565b34801561070957600080fd5b506104a8610f59565b34801561071e57600080fd5b506104a861072d366004612b0d565b610fd8565b34801561073e57600080fd5b506000546001600160a01b031661030a565b34801561075c57600080fd5b506104a86110af565b34801561077157600080fd5b50610419610780366004612874565b6111f4565b34801561079157600080fd5b506104196107a0366004612848565b611292565b3480156107b157600080fd5b506104a86107c0366004612a8f565b6112a9565b3480156107d157600080fd5b506104a86107e0366004612b63565b61133f565b3480156107f157600080fd5b506104a8610800366004612a5b565b61136e565b34801561081157600080fd5b5060095461083f9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161031e565b34801561087957600080fd5b506104a8610888366004612b7c565b6113ec565b34801561089957600080fd5b5061033d6108a8366004612b7c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108df57600080fd5b5061033d600f5481565b3480156108f557600080fd5b506104a8610904366004612b46565b611444565b34801561091557600080fd5b506104a8611778565b34801561092a57600080fd5b50600c54600d54610945916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161031e565b34801561097157600080fd5b5061033d60145481565b34801561098757600080fd5b50600e5461041990610100900460ff1681565b60006109a73384846117df565b5060015b92915050565b60006109bf6012600a612ca4565b6017546109cc9190612cb3565b905090565b60006109df6012600a612ca4565b6109ed90633b9aca00612cd5565b6109f657600080fd5b610a026012600a612ca4565b6109cc90633b9aca00612cd5565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a75576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a6f908490612cf4565b90915550505b610a808484846118d8565b949350505050565b8051825114610ad65760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064015b60405180910390fd5b60005b82518160ff161015610b8b57818160ff1681518110610afa57610afa612d0b565b6020026020010151610b0b33610f3e565b1015610b1657600080fd5b610b7833848360ff1681518110610b2f57610b2f612d0b565b60200260200101516012600a610b459190612ca4565b858560ff1681518110610b5a57610b5a612d0b565b6020026020010151610b6c9190612cd5565b60008060006001611d8d565b5080610b8381612d21565b915050610ad9565b505050565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610acd90612d41565b60188054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610c005760405162461bcd60e51b8152600401610acd90612d41565b6107d08361ffff1611158015610c1c57506107d08261ffff1611155b8015610c2e57506107d08161ffff1611155b610c7a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610acd565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610ce35760405162461bcd60e51b8152600401610acd90612d41565b8385610cf16012600a612ca4565b610cff90633b9aca00612cd5565b610d099190612cd5565b610d139190612cb3565b6011558183610d246012600a612ca4565b610d3290633b9aca00612cd5565b610d3c9190612cd5565b610d469190612cb3565b601255600f5550505050565b6000546001600160a01b03163314610d7c5760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dd15760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b038116610df75760405162461bcd60e51b8152600401610acd90612d6c565b6001600160a01b03811661dead1415610e225760405162461bcd60e51b8152600401610acd90612d6c565b60008054610e3b916001600160a01b0390911690610ece565b610e46816001610ece565b60008054610e5c906001600160a01b0316610f3e565b1115610e8357600054610e81906001600160a01b031682610e7c82610f3e565b6118d8565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610ef85760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000610f316012600a612ca4565b6016546109cc9190612cb3565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610f835760405162461bcd60e51b8152600401610acd90612d41565b60008054610f9c916001600160a01b0390911690610ece565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110025760405162461bcd60e51b8152600401610acd90612d41565b8061102957506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415611083576203f480600354426110439190612cf4565b116110835760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610acd565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146110d95760405162461bcd60e51b8152600401610acd90612d41565b60185460ff161561112c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610acd565b601854610100900460ff166111835760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610acd565b6018805460ff19166001179055600b54612710906111a9906001600160a01b0316610f3e565b6111b4906005612cd5565b6111be9190612cb3565b601155600b54612710906111da906001600160a01b0316610f3e565b6111e5906005612cd5565b6111ef9190612cb3565b601255565b600080546001600160a01b0316331461121f5760405162461bcd60e51b8152600401610acd90612d41565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561126e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612dc9565b600061129f3384846118d8565b5060019392505050565b6000546001600160a01b031633146112d35760405162461bcd60e51b8152600401610acd90612d41565b6009805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790556113168183612de6565b6009805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146113695760405162461bcd60e51b8152600401610acd90612d41565b601455565b6000546001600160a01b031633146113985760405162461bcd60e51b8152600401610acd90612d41565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906113e190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610acd90612d41565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6000546001600160a01b0316331461146e5760405162461bcd60e51b8152600401610acd90612d41565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190612e0c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115489190612e0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190612e0c565b90506001600160a01b03811661173057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190612e0c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190612e0c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b9190612e0c565b600b80546001600160a01b0319166001600160a01b039290921691909117905561174c565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b038416908117909155610b8b9030906000196117df565b6000546001600160a01b031633146117a25760405162461bcd60e51b8152600401610acd90612d41565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156117dc573d6000803e3d6000fd5b50565b6001600160a01b03831661182b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acd565b6001600160a01b0382166118775760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acd565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661193e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acd565b6001600160a01b0383166119a05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acd565b60008211611a025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610acd565b6001600160a01b0384166000908152600260205260408120548190819060ff1615611a305760019250611a5e565b6001600160a01b03861660009081526002602052604090205460ff1615611a5a5760019150611a5e565b5060015b611a688787611ef8565b15611c305760185460ff16611abf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610acd565b8280611ac85750815b15611b77576001600160a01b03871660009081526006602052604090205460ff16158015611b0f57506001600160a01b03861660009081526006602052604090205460ff16155b15611b7757601654851115611b775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610acd565b600a546001600160a01b03878116911614801590611b93575081155b15611c30576001600160a01b03861660009081526006602052604090205460ff16611c305760175485611bc588610f3e565b611bcf9190612e29565b1115611c305760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610acd565b6001600160a01b03871660009081526005602052604090205460019060ff1680611c7257506001600160a01b03871660009081526005602052604090205460ff165b15611c7b575060005b8215611d7257600e5460ff16158015611c9b5750600e54610100900460ff165b15611cea5742600f54601054611cb19190612e29565b1015611cea576000611cc230610f3e565b90506011548110611ce8576012548110611cdb57506012545b611ce3611fcd565b426010555b505b601854479062010000900460ff168015611d0b5750600e54610100900460ff165b15611d7057611d198761221d565b60136000828254611d2a9190612e29565b9250508190555060006014546103e8601354611d469190612cb3565b611d509190612cd5565b905081811015611d6857611d6381612395565b611d6e565b60006013555b505b505b611d8188888884888888611d8d565b98975050505050505050565b601854600090610100900460ff16611e2157611da988886123be565b601854610100900460ff16158015611dc65750611dc68888611ef8565b15611e215760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610acd565b6001600160a01b03881660009081526001602052604081208054889290611e49908490612cf4565b909155506000905085611e5c5786611e68565b611e688986868a6124ca565b6001600160a01b038916600090815260016020526040812080549293508392909190611e95908490612e29565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ee191815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590611f2557506000546001600160a01b03838116911614155b8015611f3c57506000546001600160a01b03163214155b8015611f6157506001600160a01b03821660009081526007602052604090205460ff16155b8015611f8657506001600160a01b03831660009081526007602052604090205460ff16155b8015611f9d57506001600160a01b03821661dead14155b8015611fb157506001600160a01b03821615155b8015611fc657506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055601254604080516002808252606082018352600092602083019080368337019050509050308160008151811061201257612012612d0b565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190612e0c565b816001815181106120a2576120a2612d0b565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81524792919091169063791ac947906120ec908690600090879030904290600401612e85565b600060405180830381600087803b15801561210657600080fd5b505af115801561211a573d6000803e3d6000fd5b505050506000814761212c9190612cf4565b60095490915060009061ffff600160301b820481169161215491620100009091041684612cd5565b61215e9190612cb3565b600d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146121b5576040519150601f19603f3d011682016040523d82523d6000602084013e6121ba565b606091505b505090508061220b5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610acd565b5050600e805460ff1916905550505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061225657612256612d0b565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190612e0c565b816001815181106122e6576122e6612d0b565b6001600160a01b039283166020918202929092010152600a5460405163d06ca61f60e01b8152600092919091169063d06ca61f9061232a9087908690600401612ec1565b600060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261236f9190810190612eda565b90508060018151811061238457612384612d0b565b602002602001015192505050919050565b600e805460ff1916600117905580156123b1576123b18161265e565b50600e805460ff19169055565b601854610100900460ff16156124225760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610acd565b61242c8282611ef8565b1580156124465750600b546001600160a01b038281169116145b156110ab576001600160a01b0382166000908152600760209081526040918290208054600160ff1990911681179091556018805461010061ff00199182168117909255600e8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791015b60405180910390a15050565b60008084156124e0575060085461ffff1661250a565b83156124f9575060085462010000900461ffff1661250a565b50600854640100000000900461ffff165b60006127106125198386612cd5565b6125239190612cb3565b60095490915060009061ffff600160301b8204811691612544911684612cd5565b61254e9190612cb3565b905080156125e6576125608183612cf4565b600c546001600160a01b031660008181526001602052604081208054939550919284929190612590908490612e29565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125dc91815260200190565b60405180910390a3505b3060009081526001602052604081208054849290612605908490612e29565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36126548183612e29565b611d819086612cf4565b6040805160028082526060820183526000926020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190612e0c565b816000815181106126ff576126ff612d0b565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061273357612733612d0b565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590849061277b90600090869061dead904290600401612f6b565b6000604051808303818588803b15801561279457600080fd5b505af11580156127a8573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516124be929190612ec1565b600060208083528351808285015260005b8181101561280b578581018301518582016040015282016127ef565b8181111561281d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146117dc57600080fd5b6000806040838503121561285b57600080fd5b823561286681612833565b946020939093013593505050565b60008060006060848603121561288957600080fd5b833561289481612833565b925060208401356128a481612833565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128f4576128f46128b5565b604052919050565b600067ffffffffffffffff821115612916576129166128b5565b5060051b60200190565b600082601f83011261293157600080fd5b81356020612946612941836128fc565b6128cb565b82815260059290921b8401810191818101908684111561296557600080fd5b8286015b848110156129805780358352918301918301612969565b509695505050505050565b6000806040838503121561299e57600080fd5b823567ffffffffffffffff808211156129b657600080fd5b818501915085601f8301126129ca57600080fd5b813560206129da612941836128fc565b82815260059290921b840181019181810190898411156129f957600080fd5b948201945b83861015612a20578535612a1181612833565b825294820194908201906129fe565b96505086013592505080821115612a3657600080fd5b50612a4385828601612920565b9150509250929050565b80151581146117dc57600080fd5b600060208284031215612a6d57600080fd5b8135611fc681612a4d565b803561ffff81168114612a8a57600080fd5b919050565b600080600060608486031215612aa457600080fd5b612aad84612a78565b9250612abb60208501612a78565b9150612ac960408501612a78565b90509250925092565b600080600080600060a08688031215612aea57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612b2057600080fd5b8235612b2b81612833565b91506020830135612b3b81612a4d565b809150509250929050565b600060208284031215612b5857600080fd5b8135611fc681612833565b600060208284031215612b7557600080fd5b5035919050565b60008060408385031215612b8f57600080fd5b8235612b9a81612833565b91506020830135612b3b81612833565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612bfb578160001904821115612be157612be1612baa565b80851615612bee57918102915b93841c9390800290612bc5565b509250929050565b600082612c12575060016109ab565b81612c1f575060006109ab565b8160018114612c355760028114612c3f57612c5b565b60019150506109ab565b60ff841115612c5057612c50612baa565b50506001821b6109ab565b5060208310610133831016604e8410600b8410161715612c7e575081810a6109ab565b612c888383612bc0565b8060001904821115612c9c57612c9c612baa565b029392505050565b6000611fc660ff841683612c03565b600082612cd057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612cef57612cef612baa565b500290565b600082821015612d0657612d06612baa565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d3857612d38612baa565b60010192915050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060208284031215612ddb57600080fd5b8151611fc681612a4d565b600061ffff808316818516808303821115612e0357612e03612baa565b01949350505050565b600060208284031215612e1e57600080fd5b8151611fc681612833565b60008219821115612e3c57612e3c612baa565b500190565b600081518084526020808501945080840160005b83811015612e7a5781516001600160a01b031687529582019590820190600101612e55565b509495945050505050565b85815284602082015260a060408201526000612ea460a0830186612e41565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610a806040830184612e41565b60006020808385031215612eed57600080fd5b825167ffffffffffffffff811115612f0457600080fd5b8301601f81018513612f1557600080fd5b8051612f23612941826128fc565b81815260059190911b82018301908381019087831115612f4257600080fd5b928401925b82841015612f6057835182529284019290840190612f47565b979650505050505050565b848152608060208201526000612f846080830186612e41565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212206f2a8af208c49e544f32926ac9bf59ea92f4917973b896b649eafbd9c8e04d8f64736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106102e85760003560e01c8063590ffdce11610190578063b1b08f71116100dc578063dd62ed3e11610095578063ee5d9c2d1161006f578063ee5d9c2d14610909578063f94aa1b41461091e578063fcbab4ab14610965578063fdb78c0e1461097b57600080fd5b8063dd62ed3e1461088d578063e4fcfd18146108d3578063eafb5a3c146108e957600080fd5b8063b1b08f71146104ca578063b3d514fb146104ca578063b74f7eb5146107c5578063cab5ebea146107e5578063cf84770614610805578063d3f6a1571461086d57600080fd5b806380c581d11161014957806395d89b411161012357806395d89b41146103a157806398077fa114610765578063a9059cbb14610785578063aa22b172146107a557600080fd5b806380c581d114610712578063893d20e8146107325780638a8c523c1461075057600080fd5b8063590ffdce1461064f5780635cce86cd1461066f5780636053a0e3146106a85780636ebd0078146106c857806370a08231146106dd578063715018a6146106fd57600080fd5b80632b28fc7a1161024f57806336fddb04116102085780634ada218b116101e25780634ada218b146105bd5780634fb2e45d146105d75780634fbee193146105f757806350a8e0161461063057600080fd5b806336fddb04146105685780633bb8ef6814610588578063452ed4f11461059d57600080fd5b80632b28fc7a146104ca5780632e8fa821146104e05780632f83f7bf146104f6578063313ce5671461050c57806332cde6641461052857806334cd82601461054857600080fd5b80630fa604e4116102a15780630fa604e414610429578063163140a61461043e57806318160ddd1461045357806323b872dd146104685780632610eaca1461048857806329370cc6146104aa57600080fd5b806303fd2a45146102f45780630445b66714610327578063069d955f1461034b57806306fdde03146103a15780630758d924146103d9578063095ea7b3146103f957600080fd5b366102ef57005b600080fd5b34801561030057600080fd5b5061030a61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033357600080fd5b5061033d60115481565b60405190815260200161031e565b34801561035757600080fd5b5060085461037c9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161031e565b3480156103ad57600080fd5b5060408051808201825260098152680b08a9c9e9a9ea4a0960bb1b6020820152905161031e91906127de565b3480156103e557600080fd5b50600a5461030a906001600160a01b031681565b34801561040557600080fd5b50610419610414366004612848565b61099a565b604051901515815260200161031e565b34801561043557600080fd5b5061033d6109b1565b34801561044a57600080fd5b5060135461033d565b34801561045f57600080fd5b5061033d6109d1565b34801561047457600080fd5b50610419610483366004612874565b610a10565b34801561049457600080fd5b506104a86104a336600461298b565b610a88565b005b3480156104b657600080fd5b506104a86104c5366004612a5b565b610b90565b3480156104d657600080fd5b5061033d6107d081565b3480156104ec57600080fd5b5061033d60125481565b34801561050257600080fd5b5061033d60135481565b34801561051857600080fd5b506040516012815260200161031e565b34801561053457600080fd5b506104a8610543366004612a8f565b610bd6565b34801561055457600080fd5b506104a8610563366004612ad2565b610cb9565b34801561057457600080fd5b506104a8610583366004612b0d565b610d52565b34801561059457600080fd5b5060145461033d565b3480156105a957600080fd5b50600b5461030a906001600160a01b031681565b3480156105c957600080fd5b506018546104199060ff1681565b3480156105e357600080fd5b506104a86105f2366004612b46565b610da7565b34801561060357600080fd5b50610419610612366004612b46565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561063c57600080fd5b5060185461041990610100900460ff1681565b34801561065b57600080fd5b506104a861066a366004612b0d565b610ece565b34801561067b57600080fd5b5061041961068a366004612b46565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106b457600080fd5b506018546104199062010000900460ff1681565b3480156106d457600080fd5b5061033d610f23565b3480156106e957600080fd5b5061033d6106f8366004612b46565b610f3e565b34801561070957600080fd5b506104a8610f59565b34801561071e57600080fd5b506104a861072d366004612b0d565b610fd8565b34801561073e57600080fd5b506000546001600160a01b031661030a565b34801561075c57600080fd5b506104a86110af565b34801561077157600080fd5b50610419610780366004612874565b6111f4565b34801561079157600080fd5b506104196107a0366004612848565b611292565b3480156107b157600080fd5b506104a86107c0366004612a8f565b6112a9565b3480156107d157600080fd5b506104a86107e0366004612b63565b61133f565b3480156107f157600080fd5b506104a8610800366004612a5b565b61136e565b34801561081157600080fd5b5060095461083f9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff9586168152938516602085015291841691830191909152909116606082015260800161031e565b34801561087957600080fd5b506104a8610888366004612b7c565b6113ec565b34801561089957600080fd5b5061033d6108a8366004612b7c565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156108df57600080fd5b5061033d600f5481565b3480156108f557600080fd5b506104a8610904366004612b46565b611444565b34801561091557600080fd5b506104a8611778565b34801561092a57600080fd5b50600c54600d54610945916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161031e565b34801561097157600080fd5b5061033d60145481565b34801561098757600080fd5b50600e5461041990610100900460ff1681565b60006109a73384846117df565b5060015b92915050565b60006109bf6012600a612ca4565b6017546109cc9190612cb3565b905090565b60006109df6012600a612ca4565b6109ed90633b9aca00612cd5565b6109f657600080fd5b610a026012600a612ca4565b6109cc90633b9aca00612cd5565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a75576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a6f908490612cf4565b90915550505b610a808484846118d8565b949350505050565b8051825114610ad65760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b60448201526064015b60405180910390fd5b60005b82518160ff161015610b8b57818160ff1681518110610afa57610afa612d0b565b6020026020010151610b0b33610f3e565b1015610b1657600080fd5b610b7833848360ff1681518110610b2f57610b2f612d0b565b60200260200101516012600a610b459190612ca4565b858560ff1681518110610b5a57610b5a612d0b565b6020026020010151610b6c9190612cd5565b60008060006001611d8d565b5080610b8381612d21565b915050610ad9565b505050565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610acd90612d41565b60188054911515620100000262ff000019909216919091179055565b6000546001600160a01b03163314610c005760405162461bcd60e51b8152600401610acd90612d41565b6107d08361ffff1611158015610c1c57506107d08261ffff1611155b8015610c2e57506107d08161ffff1611155b610c7a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610acd565b6008805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6000546001600160a01b03163314610ce35760405162461bcd60e51b8152600401610acd90612d41565b8385610cf16012600a612ca4565b610cff90633b9aca00612cd5565b610d099190612cd5565b610d139190612cb3565b6011558183610d246012600a612ca4565b610d3290633b9aca00612cd5565b610d3c9190612cd5565b610d469190612cb3565b601255600f5550505050565b6000546001600160a01b03163314610d7c5760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dd15760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b038116610df75760405162461bcd60e51b8152600401610acd90612d6c565b6001600160a01b03811661dead1415610e225760405162461bcd60e51b8152600401610acd90612d6c565b60008054610e3b916001600160a01b0390911690610ece565b610e46816001610ece565b60008054610e5c906001600160a01b0316610f3e565b1115610e8357600054610e81906001600160a01b031682610e7c82610f3e565b6118d8565b505b600080546001600160a01b0319166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b03163314610ef85760405162461bcd60e51b8152600401610acd90612d41565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000610f316012600a612ca4565b6016546109cc9190612cb3565b6001600160a01b031660009081526001602052604090205490565b6000546001600160a01b03163314610f835760405162461bcd60e51b8152600401610acd90612d41565b60008054610f9c916001600160a01b0390911690610ece565b600080546001600160a01b031916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146110025760405162461bcd60e51b8152600401610acd90612d41565b8061102957506001600160a01b03166000908152600260205260409020805460ff19169055565b60035415611083576203f480600354426110439190612cf4565b116110835760405162461bcd60e51b815260206004820152601060248201526f332044617920636f6f6c646f776e2e2160801b6044820152606401610acd565b6001600160a01b0382166000908152600260205260409020805460ff19166001179055426003555b5050565b6000546001600160a01b031633146110d95760405162461bcd60e51b8152600401610acd90612d41565b60185460ff161561112c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610acd565b601854610100900460ff166111835760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610acd565b6018805460ff19166001179055600b54612710906111a9906001600160a01b0316610f3e565b6111b4906005612cd5565b6111be9190612cb3565b601155600b54612710906111da906001600160a01b0316610f3e565b6111e5906005612cd5565b6111ef9190612cb3565b601255565b600080546001600160a01b0316331461121f5760405162461bcd60e51b8152600401610acd90612d41565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905285169063a9059cbb906044016020604051808303816000875af115801561126e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a809190612dc9565b600061129f3384846118d8565b5060019392505050565b6000546001600160a01b031633146112d35760405162461bcd60e51b8152600401610acd90612d41565b6009805461ffff8381166401000000000265ffff0000000019868316620100000263ffffffff199094169288169290921792909217161790556113168183612de6565b6009805461ffff92909216600160301b0267ffff00000000000019909216919091179055505050565b6000546001600160a01b031633146113695760405162461bcd60e51b8152600401610acd90612d41565b601455565b6000546001600160a01b031633146113985760405162461bcd60e51b8152600401610acd90612d41565b600e80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906113e190831515815260200190565b60405180910390a150565b6000546001600160a01b031633146114165760405162461bcd60e51b8152600401610acd90612d41565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6000546001600160a01b0316331461146e5760405162461bcd60e51b8152600401610acd90612d41565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d79190612e0c565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115489190612e0c565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190612e0c565b90506001600160a01b03811661173057816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116299190612e0c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169a9190612e0c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156116e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061170b9190612e0c565b600b80546001600160a01b0319166001600160a01b039290921691909117905561174c565b600b80546001600160a01b0319166001600160a01b0383161790555b600a80546001600160a01b0319166001600160a01b038416908117909155610b8b9030906000196117df565b6000546001600160a01b031633146117a25760405162461bcd60e51b8152600401610acd90612d41565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156117dc573d6000803e3d6000fd5b50565b6001600160a01b03831661182b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acd565b6001600160a01b0382166118775760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acd565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b03841661193e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acd565b6001600160a01b0383166119a05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acd565b60008211611a025760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610acd565b6001600160a01b0384166000908152600260205260408120548190819060ff1615611a305760019250611a5e565b6001600160a01b03861660009081526002602052604090205460ff1615611a5a5760019150611a5e565b5060015b611a688787611ef8565b15611c305760185460ff16611abf5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610acd565b8280611ac85750815b15611b77576001600160a01b03871660009081526006602052604090205460ff16158015611b0f57506001600160a01b03861660009081526006602052604090205460ff16155b15611b7757601654851115611b775760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610acd565b600a546001600160a01b03878116911614801590611b93575081155b15611c30576001600160a01b03861660009081526006602052604090205460ff16611c305760175485611bc588610f3e565b611bcf9190612e29565b1115611c305760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610acd565b6001600160a01b03871660009081526005602052604090205460019060ff1680611c7257506001600160a01b03871660009081526005602052604090205460ff165b15611c7b575060005b8215611d7257600e5460ff16158015611c9b5750600e54610100900460ff165b15611cea5742600f54601054611cb19190612e29565b1015611cea576000611cc230610f3e565b90506011548110611ce8576012548110611cdb57506012545b611ce3611fcd565b426010555b505b601854479062010000900460ff168015611d0b5750600e54610100900460ff165b15611d7057611d198761221d565b60136000828254611d2a9190612e29565b9250508190555060006014546103e8601354611d469190612cb3565b611d509190612cd5565b905081811015611d6857611d6381612395565b611d6e565b60006013555b505b505b611d8188888884888888611d8d565b98975050505050505050565b601854600090610100900460ff16611e2157611da988886123be565b601854610100900460ff16158015611dc65750611dc68888611ef8565b15611e215760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b6064820152608401610acd565b6001600160a01b03881660009081526001602052604081208054889290611e49908490612cf4565b909155506000905085611e5c5786611e68565b611e688986868a6124ca565b6001600160a01b038916600090815260016020526040812080549293508392909190611e95908490612e29565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ee191815260200190565b60405180910390a350600198975050505050505050565b600080546001600160a01b03848116911614801590611f2557506000546001600160a01b03838116911614155b8015611f3c57506000546001600160a01b03163214155b8015611f6157506001600160a01b03821660009081526007602052604090205460ff16155b8015611f8657506001600160a01b03831660009081526007602052604090205460ff16155b8015611f9d57506001600160a01b03821661dead14155b8015611fb157506001600160a01b03821615155b8015611fc657506001600160a01b0383163014155b9392505050565b600e805460ff19166001179055601254604080516002808252606082018352600092602083019080368337019050509050308160008151811061201257612012612d0b565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190612e0c565b816001815181106120a2576120a2612d0b565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b81524792919091169063791ac947906120ec908690600090879030904290600401612e85565b600060405180830381600087803b15801561210657600080fd5b505af115801561211a573d6000803e3d6000fd5b505050506000814761212c9190612cf4565b60095490915060009061ffff600160301b820481169161215491620100009091041684612cd5565b61215e9190612cb3565b600d546040519192506000916001600160a01b039091169061753090849084818181858888f193505050503d80600081146121b5576040519150601f19603f3d011682016040523d82523d6000602084013e6121ba565b606091505b505090508061220b5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e7366657200006044820152606401610acd565b5050600e805460ff1916905550505050565b60408051600280825260608201835260009283929190602083019080368337019050509050308160008151811061225657612256612d0b565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d39190612e0c565b816001815181106122e6576122e6612d0b565b6001600160a01b039283166020918202929092010152600a5460405163d06ca61f60e01b8152600092919091169063d06ca61f9061232a9087908690600401612ec1565b600060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261236f9190810190612eda565b90508060018151811061238457612384612d0b565b602002602001015192505050919050565b600e805460ff1916600117905580156123b1576123b18161265e565b50600e805460ff19169055565b601854610100900460ff16156124225760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610acd565b61242c8282611ef8565b1580156124465750600b546001600160a01b038281169116145b156110ab576001600160a01b0382166000908152600760209081526040918290208054600160ff1990911681179091556018805461010061ff00199182168117909255600e8054909116909117905591519182527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325791015b60405180910390a15050565b60008084156124e0575060085461ffff1661250a565b83156124f9575060085462010000900461ffff1661250a565b50600854640100000000900461ffff165b60006127106125198386612cd5565b6125239190612cb3565b60095490915060009061ffff600160301b8204811691612544911684612cd5565b61254e9190612cb3565b905080156125e6576125608183612cf4565b600c546001600160a01b031660008181526001602052604081208054939550919284929190612590908490612e29565b92505081905550806001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125dc91815260200190565b60405180910390a3505b3060009081526001602052604081208054849290612605908490612e29565b909155505060405182815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36126548183612e29565b611d819086612cf4565b6040805160028082526060820183526000926020830190803683375050600a54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa1580156126c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126ec9190612e0c565b816000815181106126ff576126ff612d0b565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061273357612733612d0b565b6001600160a01b039283166020918202929092010152600a5460405163b6f9de9560e01b815291169063b6f9de9590849061277b90600090869061dead904290600401612f6b565b6000604051808303818588803b15801561279457600080fd5b505af11580156127a8573d6000803e3d6000fd5b50505050507f6fd378a9d8b7345c2e5b18229aaf1e39d32b177b501d0a0d26a0a858a23a962482826040516124be929190612ec1565b600060208083528351808285015260005b8181101561280b578581018301518582016040015282016127ef565b8181111561281d576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146117dc57600080fd5b6000806040838503121561285b57600080fd5b823561286681612833565b946020939093013593505050565b60008060006060848603121561288957600080fd5b833561289481612833565b925060208401356128a481612833565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128f4576128f46128b5565b604052919050565b600067ffffffffffffffff821115612916576129166128b5565b5060051b60200190565b600082601f83011261293157600080fd5b81356020612946612941836128fc565b6128cb565b82815260059290921b8401810191818101908684111561296557600080fd5b8286015b848110156129805780358352918301918301612969565b509695505050505050565b6000806040838503121561299e57600080fd5b823567ffffffffffffffff808211156129b657600080fd5b818501915085601f8301126129ca57600080fd5b813560206129da612941836128fc565b82815260059290921b840181019181810190898411156129f957600080fd5b948201945b83861015612a20578535612a1181612833565b825294820194908201906129fe565b96505086013592505080821115612a3657600080fd5b50612a4385828601612920565b9150509250929050565b80151581146117dc57600080fd5b600060208284031215612a6d57600080fd5b8135611fc681612a4d565b803561ffff81168114612a8a57600080fd5b919050565b600080600060608486031215612aa457600080fd5b612aad84612a78565b9250612abb60208501612a78565b9150612ac960408501612a78565b90509250925092565b600080600080600060a08688031215612aea57600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60008060408385031215612b2057600080fd5b8235612b2b81612833565b91506020830135612b3b81612a4d565b809150509250929050565b600060208284031215612b5857600080fd5b8135611fc681612833565b600060208284031215612b7557600080fd5b5035919050565b60008060408385031215612b8f57600080fd5b8235612b9a81612833565b91506020830135612b3b81612833565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115612bfb578160001904821115612be157612be1612baa565b80851615612bee57918102915b93841c9390800290612bc5565b509250929050565b600082612c12575060016109ab565b81612c1f575060006109ab565b8160018114612c355760028114612c3f57612c5b565b60019150506109ab565b60ff841115612c5057612c50612baa565b50506001821b6109ab565b5060208310610133831016604e8410600b8410161715612c7e575081810a6109ab565b612c888383612bc0565b8060001904821115612c9c57612c9c612baa565b029392505050565b6000611fc660ff841683612c03565b600082612cd057634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615612cef57612cef612baa565b500290565b600082821015612d0657612d06612baa565b500390565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff811415612d3857612d38612baa565b60010192915050565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b600060208284031215612ddb57600080fd5b8151611fc681612a4d565b600061ffff808316818516808303821115612e0357612e03612baa565b01949350505050565b600060208284031215612e1e57600080fd5b8151611fc681612833565b60008219821115612e3c57612e3c612baa565b500190565b600081518084526020808501945080840160005b83811015612e7a5781516001600160a01b031687529582019590820190600101612e55565b509495945050505050565b85815284602082015260a060408201526000612ea460a0830186612e41565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610a806040830184612e41565b60006020808385031215612eed57600080fd5b825167ffffffffffffffff811115612f0457600080fd5b8301601f81018513612f1557600080fd5b8051612f23612941826128fc565b81815260059190911b82018301908381019087831115612f4257600080fd5b928401925b82841015612f6057835182529284019290840190612f47565b979650505050505050565b848152608060208201526000612f846080830186612e41565b6001600160a01b0394909416604083015250606001529291505056fea26469706673582212206f2a8af208c49e544f32926ac9bf59ea92f4917973b896b649eafbd9c8e04d8f64736f6c634300080c0033

Deployed Bytecode Sourcemap

3727:19623:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5286:73;;;;;;;;;;;;5317:42;5286:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5286:73:0;;;;;;;;5801:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5801:28:0;222:177:1;4773:111:0;;;;;;;;;;-1:-1:-1;4773:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;610:6:1;643:15;;;625:34;;695:15;;;690:2;675:18;;668:43;747:15;;727:18;;;720:43;;;;588:2;573:18;4773:111:0;404:365:1;10185:80:0;;;;;;;;;;-1:-1:-1;10257:5:0;;;;;;;;;;;-1:-1:-1;;;10257:5:0;;;;10185:80;;;;10257:5;10185:80;:::i;5225:26::-;;;;;;;;;;-1:-1:-1;5225:26:0;;;;-1:-1:-1;;;;;5225:26:0;;;10795:159;;;;;;;;;;-1:-1:-1;10795:159:0;;;;;:::i;:::-;;:::i;:::-;;;2222:14:1;;2215:22;2197:41;;2185:2;2170:18;10795:159:0;2057:187:1;13895:112:0;;;;;;;;;;;;;:::i;14017:::-;;;;;;;;;;-1:-1:-1;14100:21:0;;14017:112;;9888:115;;;;;;;;;;;;;:::i;11284:306::-;;;;;;;;;;-1:-1:-1;11284:306:0;;;;;:::i;:::-;;:::i;21389:408::-;;;;;;;;;;-1:-1:-1;21389:408:0;;;;;:::i;:::-;;:::i;:::-;;14284:113;;;;;;;;;;-1:-1:-1;14284:113:0;;;;;:::i;:::-;;:::i;5022:42::-;;;;;;;;;;;;5060:4;5022:42;;5836:25;;;;;;;;;;;;;;;;5874:36;;;;;;;;;;;;;;;;10009:80;;;;;;;;;;-1:-1:-1;10009:80:0;;4451:2;5708:36:1;;5696:2;5681:18;10009:80:0;5566:184:1;12567:397:0;;;;;;;;;;-1:-1:-1;12567:397:0;;;;;:::i;:::-;;:::i;14948:338::-;;;;;;;;;;-1:-1:-1;14948:338:0;;;;;:::i;:::-;;:::i;13220:140::-;;;;;;;;;;-1:-1:-1;13220:140:0;;;;;:::i;:::-;;:::i;14137:133::-;;;;;;;;;;-1:-1:-1;14229:33:0;;14137:133;;5258:21;;;;;;;;;;-1:-1:-1;5258:21:0;;;;-1:-1:-1;;;;;5258:21:0;;;6116:34;;;;;;;;;;-1:-1:-1;6116:34:0;;;;;;;;8746:588;;;;;;;;;;-1:-1:-1;8746:588:0;;;;;:::i;:::-;;:::i;13506:125::-;;;;;;;;;;-1:-1:-1;13506:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;13595:28:0;13571:4;13595:28;;;:19;:28;;;;;;;;;13506:125;6157:36;;;;;;;;;;-1:-1:-1;6157:36:0;;;;;;;;;;;13639:134;;;;;;;;;;-1:-1:-1;13639:134:0;;;;;:::i;:::-;;:::i;13368:130::-;;;;;;;;;;-1:-1:-1;13368:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;13460:30:0;13436:4;13460:30;;;:21;:30;;;;;;;;;13368:130;6200:34;;;;;;;;;;-1:-1:-1;6200:34:0;;;;;;;;;;;13781:106;;;;;;;;;;;;;:::i;10497:117::-;;;;;;;;;;-1:-1:-1;10497:117:0;;;;;:::i;:::-;;:::i;9342:193::-;;;;;;;;;;;;;:::i;12146:407::-;;;;;;;;;;-1:-1:-1;12146:407:0;;;;;:::i;:::-;;:::i;10271:79::-;;;;;;;;;;-1:-1:-1;10323:7:0;10341:6;-1:-1:-1;;;;;10341:6:0;10271:79;;20743:332;;;;;;;;;;;;;:::i;21206:175::-;;;;;;;;;;-1:-1:-1;21206:175:0;;;;;:::i;:::-;;:::i;10622:165::-;;;;;;;;;;-1:-1:-1;10622:165:0;;;;;:::i;:::-;;:::i;12976:230::-;;;;;;;;;;-1:-1:-1;12976:230:0;;;;;:::i;:::-;;:::i;14405:197::-;;;;;;;;;;-1:-1:-1;14405:197:0;;;;;:::i;:::-;;:::i;15468:164::-;;;;;;;;;;-1:-1:-1;15468:164:0;;;;;:::i;:::-;;:::i;4893:120::-;;;;;;;;;;-1:-1:-1;4893:120:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4893:120:0;;;;;;;;;7768:6:1;7801:15;;;7783:34;;7853:15;;;7848:2;7833:18;;7826:43;7905:15;;;7885:18;;;7878:43;;;;7957:15;;;7952:2;7937:18;;7930:43;7745:3;7730:19;4893:120:0;7535:444:1;15294:166:0;;;;;;;;;;-1:-1:-1;15294:166:0;;;;;:::i;:::-;;:::i;10356:133::-;;;;;;;;;;-1:-1:-1;10356:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10458:19:0;;;10440:7;10458:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10356:133;5719:44;;;;;;;;;;;;;;;;11598:540;;;;;;;;;;-1:-1:-1;11598:540:0;;;;;:::i;:::-;;:::i;21083:113::-;;;;;;;;;;;;;:::i;5458:184::-;;;;;;;;;;-1:-1:-1;5458:184:0;;;;;;-1:-1:-1;;;;;5458:184:0;;;;;;;;;;;-1:-1:-1;;;;;9024:15:1;;;9006:34;;9076:15;;;;9071:2;9056:18;;9049:43;8941:18;5458:184:0;8778:320:1;5917:53:0;;;;;;;;;;;;;;;;5673:39;;;;;;;;;;-1:-1:-1;5673:39:0;;;;;;;;;;;10795:159;10870:4;10887:37;10896:10;10908:7;10917:6;10887:8;:37::i;:::-;-1:-1:-1;10942:4:0;10795:159;;;;;:::o;13895:112::-;13940:7;13985:13;4451:2;13985;:13;:::i;:::-;13967:14;;:32;;;;:::i;:::-;13960:39;;13895:112;:::o;9888:115::-;9943:7;4514:13;4451:2;4514;:13;:::i;:::-;4497:30;;4292:13;4497:30;:::i;:::-;9954:31;;9974:8;;;9954:31;4514:13;4451:2;4514;:13;:::i;:::-;4497:30;;4292:13;4497:30;:::i;11284:306::-;-1:-1:-1;;;;;11405:19:0;;11384:4;11405:19;;;:11;:19;;;;;;;;11425:10;11405:31;;;;;;;;-1:-1:-1;;11405:52:0;11401:126;;-1:-1:-1;;;;;11474:19:0;;;;;;:11;:19;;;;;;;;11494:10;11474:31;;;;;;;:41;;11509:6;;11474:19;:41;;11509:6;;11474:41;:::i;:::-;;;;-1:-1:-1;;11401:126:0;11546:36;11556:6;11564:9;11575:6;11546:9;:36::i;:::-;11539:43;11284:306;-1:-1:-1;;;;11284:306:0:o;21389:408::-;21514:7;:14;21495:8;:15;:33;21487:67;;;;-1:-1:-1;;;21487:67:0;;11345:2:1;21487:67:0;;;11327:21:1;11384:2;11364:18;;;11357:30;-1:-1:-1;;;11403:18:1;;;11396:51;11464:18;;21487:67:0;;;;;;;;;21570:7;21565:225;21587:8;:15;21583:1;:19;;;21565:225;;;21657:7;21665:1;21657:10;;;;;;;;;;:::i;:::-;;;;;;;21632:21;21642:10;21632:9;:21::i;:::-;:35;;21624:44;;;;;;21683:95;21701:10;21713:8;21722:1;21713:11;;;;;;;;;;:::i;:::-;;;;;;;4451:2;21737;:13;;;;:::i;:::-;21726:7;21734:1;21726:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21752:5;21759;21766;21773:4;21683:17;:95::i;:::-;-1:-1:-1;21604:3:0;;;;:::i;:::-;;;;21565:225;;;;21389:408;;:::o;14284:113::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;14354:14:::1;:25:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;14354:25:0;;::::1;::::0;;;::::1;::::0;;14284:113::o;12567:397::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;5060:4:::1;12674:6;:21;;;;:65;;;;;5110:4;12716:7;:23;;;;12674:65;:117;;;;;5164:4;12760:11;:31;;;;12674:117;12666:170;;;::::0;-1:-1:-1;;;12666:170:0;;12353:2:1;12666:170:0::1;::::0;::::1;12335:21:1::0;12392:2;12372:18;;;12365:30;12431:25;12411:18;;;12404:53;12474:18;;12666:170:0::1;12151:347:1::0;12666:170:0::1;12847:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;12883:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;12921:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;12567:397::o;14948:338::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;15162:16;15142;4514:13:::1;4451:2;4514;:13;:::i;:::-;4497:30;::::0;4292:13:::1;4497:30;:::i;:::-;15132:26;;;;:::i;:::-;15131:47;;;;:::i;:::-;15115:13;:63:::0;15230:13;15213;4514::::1;4451:2;4514;:13;:::i;:::-;4497:30;::::0;4292:13:::1;4497:30;:::i;:::-;15203:23;;;;:::i;:::-;15202:41;;;;:::i;:::-;15189:10;:54:::0;15254:17:::1;:24:::0;-1:-1:-1;;;;14948:338:0:o;13220:140::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13312:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13312:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13220:140::o;8746:588::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8825:22:0;::::1;8817:96;;;;-1:-1:-1::0;;;8817:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8932:16:0;::::1;5317:42;8932:16;;8924:90;;;;-1:-1:-1::0;;;8924:90:0::1;;;;;;;:::i;:::-;9045:6;::::0;;9025:34:::1;::::0;-1:-1:-1;;;;;9045:6:0;;::::1;::::0;9025:19:::1;:34::i;:::-;9070:35;9090:8;9100:4;9070:19;:35::i;:::-;9149:1;9139:6:::0;;9129:17:::1;::::0;-1:-1:-1;;;;;9139:6:0::1;9129:9;:17::i;:::-;:21;9126:99;;;9177:6;::::0;9167:46:::1;::::0;-1:-1:-1;;;;;9177:6:0::1;9185:8:::0;9195:17:::1;9177:6:::0;9195:9:::1;:17::i;:::-;9167:9;:46::i;:::-;;9126:99;9245:6;:17:::0;;-1:-1:-1;;;;;;9245:17:0::1;-1:-1:-1::0;;;;;9245:17:0;::::1;::::0;;::::1;::::0;;9278:38:::1;::::0;9245:17;;;;9278:38:::1;::::0;9245:6;9278:38:::1;8746:588:::0;:::o;13639:134::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13727:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13727:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13639:134::o;13781:106::-;13822:7;13865:13;4451:2;13865;:13;:::i;:::-;13849:12;;:30;;;;:::i;10497:117::-;-1:-1:-1;;;;;10590:16:0;10563:7;10590:16;;;:7;:16;;;;;;;10497:117::o;9342:193::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;9427:6:::1;::::0;;9407:34:::1;::::0;-1:-1:-1;;;;;9427:6:0;;::::1;::::0;9407:19:::1;:34::i;:::-;9469:1;9452:19:::0;;-1:-1:-1;;;;;;9452:19:0::1;::::0;;9487:40:::1;::::0;9469:1;;9487:40:::1;::::0;9469:1;;9487:40:::1;9342:193::o:0;12146:407::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;12227:16;12223:323:::1;;-1:-1:-1::0;;;;;;12260:13:0::1;12276:5;12260:13:::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;12260:21:0::1;::::0;;12146:407::o;12223:323::-:1;12318:17;::::0;:22;12314:136:::1;;12407:6;12387:17;;12369:15;:35;;;;:::i;:::-;:44;12361:73;;;::::0;-1:-1:-1;;;12361:73:0;;13135:2:1;12361:73:0::1;::::0;::::1;13117:21:1::0;13174:2;13154:18;;;13147:30;-1:-1:-1;;;13193:18:1;;;13186:46;13249:18;;12361:73:0::1;12933:340:1::0;12361:73:0::1;-1:-1:-1::0;;;;;12464:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;:20;;-1:-1:-1;;12464:20:0::1;12480:4;12464:20;::::0;;12519:15:::1;12499:17;:35:::0;12223:323:::1;12146:407:::0;;:::o;20743:332::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;20805:14:::1;::::0;::::1;;20804:15;20796:52;;;::::0;-1:-1:-1;;;20796:52:0;;13480:2:1;20796:52:0::1;::::0;::::1;13462:21:1::0;13519:2;13499:18;;;13492:30;13558:26;13538:18;;;13531:54;13602:18;;20796:52:0::1;13278:348:1::0;20796:52:0::1;20867:16;::::0;::::1;::::0;::::1;;;20859:53;;;::::0;-1:-1:-1;;;20859:53:0;;13833:2:1;20859:53:0::1;::::0;::::1;13815:21:1::0;13872:2;13852:18;;;13845:30;13911:26;13891:18;;;13884:54;13955:18;;20859:53:0::1;13631:348:1::0;20859:53:0::1;20933:14;:21:::0;;-1:-1:-1;;20933:21:0::1;20950:4;20933:21;::::0;;20992:6:::1;::::0;21007:5:::1;::::0;20982:17:::1;::::0;-1:-1:-1;;;;;20992:6:0::1;20982:9;:17::i;:::-;:21;::::0;21002:1:::1;20982:21;:::i;:::-;20981:31;;;;:::i;:::-;20965:13;:47:::0;21047:6:::1;::::0;21062:5:::1;::::0;21037:17:::1;::::0;-1:-1:-1;;;;;21047:6:0::1;21037:9;:17::i;:::-;:21;::::0;21057:1:::1;21037:21;:::i;:::-;21036:31;;;;:::i;:::-;21023:10;:44:::0;20743:332::o;21206:175::-;21307:10;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;21337:36:::1;::::0;-1:-1:-1;;;21337:36:0;;-1:-1:-1;;;;;14176:32:1;;;21337:36:0::1;::::0;::::1;14158:51:1::0;14225:18;;;14218:34;;;21337:23:0;::::1;::::0;::::1;::::0;14131:18:1;;21337:36:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;10622:165::-:0;10700:4;10717:40;10727:10;10739:9;10750:6;10717:9;:40::i;:::-;-1:-1:-1;10775:4:0;;10622:165;-1:-1:-1;;;10622:165:0:o;12976:230::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;13076:7:::1;:23:::0;;::::1;13140:19:::0;;::::1;::::0;::::1;-1:-1:-1::0;;13110:19:0;;::::1;::::0;::::1;-1:-1:-1::0;;13110:19:0;;;13076:23;;::::1;13110:19:::0;;;;;;;::::1;13140;;::::0;;13187:11:::1;13155:4:::0;13125;13187:11:::1;:::i;:::-;13170:7;:28:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;13170:28:0::1;-1:-1:-1::0;;13170:28:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;12976:230:0:o;14405:197::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;14523:33:::1;:71:::0;14405:197::o;15468:164::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;15544:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;15544:29:0;;::::1;;::::0;;15589:35:::1;::::0;::::1;::::0;::::1;::::0;15566:7;2222:14:1;2215:22;2197:41;;2185:2;2170:18;;2057:187;15589:35:0::1;;;;;;;;15468:164:::0;:::o;15294:166::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;15382:11:::1;:27:::0;;-1:-1:-1;;;;;15382:27:0;;::::1;-1:-1:-1::0;;;;;;15382:27:0;;::::1;;::::0;;;15420:16;:32;;;;;::::1;::::0;::::1;;::::0;;15294:166::o;11598:540::-;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;11667:20:::1;11700:9;11667:43;;11721:16;11751:10;-1:-1:-1::0;;;;;11751:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11740:40:0::1;;11789:4;11796:10;-1:-1:-1::0;;;;;11796:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11740:74;::::0;-1:-1:-1;;;;;;11740:74:0::1;::::0;;;;;;-1:-1:-1;;;;;9024:15:1;;;11740:74:0::1;::::0;::::1;9006:34:1::0;9076:15;;9056:18;;;9049:43;8941:18;;11740:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11721:93:::0;-1:-1:-1;;;;;;11829:22:0;::::1;11825:200;;11888:10;-1:-1:-1::0;;;;;11888:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11877:43:0::1;;11929:4;11936:10;-1:-1:-1::0;;;;;11936:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11877:77;::::0;-1:-1:-1;;;;;;11877:77:0::1;::::0;;;;;;-1:-1:-1;;;;;9024:15:1;;;11877:77:0::1;::::0;::::1;9006:34:1::0;9076:15;;9056:18;;;9049:43;8941:18;;11877:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11868:6;:86:::0;;-1:-1:-1;;;;;;11868:86:0::1;-1:-1:-1::0;;;;;11868:86:0;;;::::1;::::0;;;::::1;::::0;;11825:200:::1;;;11996:6;:17:::0;;-1:-1:-1;;;;;;11996:17:0::1;-1:-1:-1::0;;;;;11996:17:0;::::1;;::::0;;11825:200:::1;12035:9;:22:::0;;-1:-1:-1;;;;;;12035:22:0::1;-1:-1:-1::0;;;;;12035:22:0;::::1;::::0;;::::1;::::0;;;12068:62:::1;::::0;12085:4:::1;::::0;-1:-1:-1;;12068:8:0::1;:62::i;21083:113::-:0;6677:6;;-1:-1:-1;;;;;6677:6:0;6687:10;6677:20;6669:50;;;;-1:-1:-1;;;6669:50:0;;;;;;;:::i;:::-;21149:6:::1;::::0;;21141:47:::1;::::0;-1:-1:-1;;;;;21149:6:0;;::::1;::::0;21166:21:::1;21141:47:::0;::::1;;;::::0;21166:21;;21141:47;21149:6;21141:47;21166:21;21149:6;21141:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21083:113::o:0;10962:310::-;-1:-1:-1;;;;;11057:20:0;;11049:52;;;;-1:-1:-1;;;11049:52:0;;15509:2:1;11049:52:0;;;15491:21:1;15548:2;15528:18;;;15521:30;-1:-1:-1;;;15567:18:1;;;15560:49;15626:18;;11049:52:0;15307:343:1;11049:52:0;-1:-1:-1;;;;;11120:21:0;;11112:53;;;;-1:-1:-1;;;11112:53:0;;15509:2:1;11112:53:0;;;15491:21:1;15548:2;15528:18;;;15521:30;-1:-1:-1;;;15567:18:1;;;15560:49;15626:18;;11112:53:0;15307:343:1;11112:53:0;-1:-1:-1;;;;;11178:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11231:33;;368:25:1;;;11231:33:0;;341:18:1;11231:33:0;;;;;;;10962:310;;;:::o;16006:2742::-;16085:4;-1:-1:-1;;;;;16110:18:0;;16102:68;;;;-1:-1:-1;;;16102:68:0;;15857:2:1;16102:68:0;;;15839:21:1;15896:2;15876:18;;;15869:30;15935:34;15915:18;;;15908:62;-1:-1:-1;;;15986:18:1;;;15979:35;16031:19;;16102:68:0;15655:401:1;16102:68:0;-1:-1:-1;;;;;16189:16:0;;16181:64;;;;-1:-1:-1;;;16181:64:0;;16263:2:1;16181:64:0;;;16245:21:1;16302:2;16282:18;;;16275:30;16341:34;16321:18;;;16314:62;-1:-1:-1;;;16392:18:1;;;16385:33;16435:19;;16181:64:0;16061:399:1;16181:64:0;16273:1;16264:6;:10;16256:64;;;;-1:-1:-1;;;16256:64:0;;16667:2:1;16256:64:0;;;16649:21:1;16706:2;16686:18;;;16679:30;16745:34;16725:18;;;16718:62;-1:-1:-1;;;16796:18:1;;;16789:39;16845:19;;16256:64:0;16465:405:1;16256:64:0;-1:-1:-1;;;;;16419:13:0;;16331:8;16419:13;;;:7;:13;;;;;;16331:8;;;;16419:13;;16415:162;;;16455:4;16449:10;;16415:162;;;-1:-1:-1;;;;;16481:11:0;;;;;;:7;:11;;;;;;;;16477:100;;;16516:4;16509:11;;16477:100;;;-1:-1:-1;16561:4:0;16477:100;16590:20;16601:4;16607:2;16590:10;:20::i;:::-;16587:641;;;16631:14;;;;16627:89;;16666:34;;-1:-1:-1;;;16666:34:0;;17077:2:1;16666:34:0;;;17059:21:1;17116:2;17096:18;;;17089:30;17155:26;17135:18;;;17128:54;17199:18;;16666:34:0;16875:348:1;16627:89:0;16733:3;:11;;;;16740:4;16733:11;16730:231;;;-1:-1:-1;;;;;16769:27:0;;;;;;:21;:27;;;;;;;;16768:28;:58;;;;-1:-1:-1;;;;;;16801:25:0;;;;;;:21;:25;;;;;;;;16800:26;16768:58;16764:182;;;16869:12;;16859:6;:22;;16851:75;;;;-1:-1:-1;;;16851:75:0;;17430:2:1;16851:75:0;;;17412:21:1;17469:2;17449:18;;;17442:30;17508:34;17488:18;;;17481:62;-1:-1:-1;;;17559:18:1;;;17552:38;17607:19;;16851:75:0;17228:404:1;16851:75:0;16992:9;;-1:-1:-1;;;;;16978:24:0;;;16992:9;;16978:24;;;;:33;;;17007:4;17006:5;16978:33;16975:242;;;-1:-1:-1;;;;;17037:25:0;;;;;;:21;:25;;;;;;;;17032:170;;17121:14;;17111:6;17095:13;17105:2;17095:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17087:95;;;;-1:-1:-1;;;17087:95:0;;17972:2:1;17087:95:0;;;17954:21:1;18011:2;17991:18;;;17984:30;18050:34;18030:18;;;18023:62;-1:-1:-1;;;18101:18:1;;;18094:40;18151:19;;17087:95:0;17770:406:1;17087:95:0;-1:-1:-1;;;;;17273:25:0;;17240:12;17273:25;;;:19;:25;;;;;;17255:4;;17273:25;;;:52;;-1:-1:-1;;;;;;17302:23:0;;;;;;:19;:23;;;;;;;;17273:52;17270:98;;;-1:-1:-1;17351:5:0;17270:98;17384:4;17380:1271;;;17420:6;;;;17419:7;:47;;;;-1:-1:-1;17447:19:0;;;;;;;17419:47;17415:539;;;17536:15;17516:17;;17505:8;;:28;;;;:::i;:::-;:46;17501:436;;;17576:28;17607:24;17625:4;17607:9;:24::i;:::-;17576:55;;17682:13;;17658:20;:37;17654:264;;17751:10;;17727:20;:34;17724:77;;-1:-1:-1;17788:10:0;;17724:77;17827:14;:12;:14::i;:::-;17879:15;17868:8;:26;17654:264;17553:384;17501:436;18040:14;;18000:21;;18040:14;;;;;:37;;;;-1:-1:-1;18058:19:0;;;;;;;18040:37;18036:525;;;18131:25;18149:6;18131:17;:25::i;:::-;18106:21;;:50;;;;;;;:::i;:::-;;;;;;;;18183:21;18241:33;;18232:4;18207:21;;:30;;;;:::i;:::-;:68;;;;:::i;:::-;18183:92;;18321:7;18305:13;:23;18302:236;;;18360:28;18374:13;18360;:28::i;:::-;18302:236;;;18509:1;18485:21;:25;18302:236;18079:482;18036:525;17400:1251;17380:1271;18668:62;18686:4;18692:2;18696:6;18704:7;18713:3;18718:4;18724:5;18668:17;:62::i;:::-;18661:69;16006:2742;-1:-1:-1;;;;;;;;16006:2742:0:o;21805:632::-;21961:16;;21939:4;;21961:16;;;;;21956:221;;21994:28;22013:4;22019:2;21994:18;:28::i;:::-;22042:16;;;;;;;22041:17;:41;;;;;22062:20;22073:4;22079:2;22062:10;:20::i;:::-;22037:129;;;22103:47;;-1:-1:-1;;;22103:47:0;;18383:2:1;22103:47:0;;;18365:21:1;18422:2;18402:18;;;18395:30;18461:34;18441:18;;;18434:62;-1:-1:-1;;;18512:18:1;;;18505:35;18557:19;;22103:47:0;18181:401:1;22037:129:0;-1:-1:-1;;;;;22201:13:0;;;;;;:7;:13;;;;;:23;;22218:6;;22201:13;:23;;22218:6;;22201:23;:::i;:::-;;;;-1:-1:-1;22235:22:0;;-1:-1:-1;22261:7:0;22260:55;;22309:6;22260:55;;;22272:34;22282:4;22288:3;22293:4;22299:6;22272:9;:34::i;:::-;-1:-1:-1;;;;;22326:11:0;;;;;;:7;:11;;;;;:29;;22235:80;;-1:-1:-1;22235:80:0;;22326:11;;;:29;;22235:80;;22326:29;:::i;:::-;;;;;;;;22388:2;-1:-1:-1;;;;;22373:34:0;22382:4;-1:-1:-1;;;;;22373:34:0;;22392:14;22373:34;;;;368:25:1;;356:2;341:18;;222:177;22373:34:0;;;;;;;;-1:-1:-1;22425:4:0;;21805:632;-1:-1:-1;;;;;;;;21805:632:0:o;15640:358::-;15709:4;15741:6;;-1:-1:-1;;;;;15733:14:0;;;15741:6;;15733:14;;;;:43;;-1:-1:-1;15770:6:0;;-1:-1:-1;;;;;15764:12:0;;;15770:6;;15764:12;;15733:43;:79;;;;-1:-1:-1;15806:6:0;;-1:-1:-1;;;;;15806:6:0;15793:9;:19;;15733:79;:118;;;;-1:-1:-1;;;;;;15830:21:0;;;;;;:17;:21;;;;;;;;15829:22;15733:118;:159;;;;-1:-1:-1;;;;;;15869:23:0;;;;;;:17;:23;;;;;;;;15868:24;15733:159;:186;;;;-1:-1:-1;;;;;;15909:10:0;;5317:42;15909:10;;15733:186;:219;;;;-1:-1:-1;;;;;;15936:16:0;;;;15733:219;:257;;;;-1:-1:-1;;;;;;15969:21:0;;15985:4;15969:21;;15733:257;15726:264;15640:358;-1:-1:-1;;;15640:358:0:o;18756:854::-;6571:6;:13;;-1:-1:-1;;6571:13:0;6580:4;6571:13;;;18835:10:::1;::::0;18880:16:::1;::::0;;18894:1:::1;18880:16:::0;;;;;::::1;::::0;;-1:-1:-1;;18880:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18880:16:0::1;18856:40;;18925:4;18907;18912:1;18907:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18907:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;18951:9:::1;::::0;:16:::1;::::0;;-1:-1:-1;;;18951:16:0;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;18907:7;;18951:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18941:4;18946:1;18941:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18941:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19038:9:::1;::::0;:193:::1;::::0;-1:-1:-1;;;19038:193:0;;19004:21:::1;::::0;19038:9;;;::::1;::::0;:60:::1;::::0;:193:::1;::::0;19113:12;;18980:21:::1;::::0;19156:4;;19183::::1;::::0;19203:15:::1;::::0;19038:193:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19242:17;19287:13;19262:21;:39;;;;:::i;:::-;19371:7;:13:::0;19242:59;;-1:-1:-1;19312:26:0::1;::::0;19371:13:::1;-1:-1:-1::0;;;19371:13:0;::::1;::::0;::::1;::::0;19341:26:::1;::::0;19354:12;;;::::1;;19242:59:::0;19341:26:::1;:::i;:::-;:44;;;;:::i;:::-;19465:16:::0;;19457:73:::1;::::0;19312;;-1:-1:-1;19407:21:0::1;::::0;-1:-1:-1;;;;;19465:16:0;;::::1;::::0;19520:5:::1;::::0;19312:73;;19407:21;19457:73;19407:21;19457:73;19312;19465:16;19520:5;19457:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19406:124;;;19549:16;19541:59;;;::::0;-1:-1:-1;;;19541:59:0;;20052:2:1;19541:59:0::1;::::0;::::1;20034:21:1::0;20091:2;20071:18;;;20064:30;20130:32;20110:18;;;20103:60;20180:18;;19541:59:0::1;19850:354:1::0;19541:59:0::1;-1:-1:-1::0;;6607:6:0;:14;;-1:-1:-1;;6607:14:0;;;-1:-1:-1;;;;18756:854:0:o;14611:329::-;14724:16;;;14738:1;14724:16;;;;;;;;14680:7;;;;14724:16;14738:1;14724:16;;;;;;;;;;-1:-1:-1;14724:16:0;14700:40;;14771:4;14753;14758:1;14753:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14753:23:0;;;:7;;;;;;;;;;:23;;;;14797:9;;:16;;;-1:-1:-1;;;14797:16:0;;;;:9;;;;;:14;;:16;;;;;14753:7;;14797:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14787:4;14792:1;14787:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14787:26:0;;;:7;;;;;;;;;:26;14850:9;;:42;;-1:-1:-1;;;14850:42:0;;14826:21;;14850:9;;;;;:23;;:42;;14874:11;;14887:4;;14850:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14850:42:0;;;;;;;;;;;;:::i;:::-;14826:66;;14912:7;14920:1;14912:10;;;;;;;;:::i;:::-;;;;;;;14905:17;;;;14611:329;;;:::o;19620:135::-;6571:6;:13;;-1:-1:-1;;6571:13:0;6580:4;6571:13;;;19691:10;;19687:61:::1;;19715:24;19732:6;19715:16;:24::i;:::-;-1:-1:-1::0;6607:6:0;:14;;-1:-1:-1;;6607:14:0;;;19620:135::o;20347:388::-;20430:16;;;;;;;20429:17;20421:65;;;;-1:-1:-1;;;20421:65:0;;21634:2:1;20421:65:0;;;21616:21:1;21673:2;21653:18;;;21646:30;21712:34;21692:18;;;21685:62;-1:-1:-1;;;21763:18:1;;;21756:33;21806:19;;20421:65:0;21432:399:1;20421:65:0;20502:20;20513:4;20519:2;20502:10;:20::i;:::-;20501:21;:37;;;;-1:-1:-1;20532:6:0;;-1:-1:-1;;;;;20526:12:0;;;20532:6;;20526:12;20501:37;20497:231;;;-1:-1:-1;;;;;20555:23:0;;;;;;:17;:23;;;;;;;;;:30;;20581:4;-1:-1:-1;;20555:30:0;;;;;;;;20600:16;:23;;20555:30;-1:-1:-1;;20600:23:0;;;;;;;;20638:19;:26;;;;;;;;;;20684:32;;2197:41:1;;;20684:32:0;;2170:18:1;20684:32:0;;;;;;;;20347:388;;:::o;22445:902::-;22533:7;22553:18;22586:3;22582:205;;;-1:-1:-1;22619:9:0;:16;;;22582:205;;;22657:4;22653:134;;;-1:-1:-1;22691:9:0;:17;;;;;;22653:134;;;-1:-1:-1;22754:9:0;:21;;;;;;22653:134;22799:17;5211:5;22819:19;22828:10;22819:6;:19;:::i;:::-;:38;;;;:::i;:::-;22922:7;:13;22799:58;;-1:-1:-1;22868:19:0;;22922:13;-1:-1:-1;;;22922:13:0;;;;;22891:26;;22903:14;22799:58;22891:26;:::i;:::-;22890:46;;;;:::i;:::-;22868:68;-1:-1:-1;22951:15:0;;22947:237;;22983:24;22996:11;22983:24;;:::i;:::-;23044:11;:18;-1:-1:-1;;;;;23044:18:0;23022:19;23077:20;;;23044:18;23077:20;;;;;:35;;22983:24;;-1:-1:-1;23044:18:0;;23101:11;;23077:20;23022:19;23077:35;;23101:11;;23077:35;:::i;:::-;;;;;;;;23147:11;-1:-1:-1;;;;;23132:40:0;23141:4;-1:-1:-1;;;;;23132:40:0;;23160:11;23132:40;;;;368:25:1;;356:2;341:18;;222:177;23132:40:0;;;;;;;;22968:216;22947:237;23210:4;23194:22;;;;:7;:22;;;;;:35;;23220:9;;23194:22;:35;;23220:9;;23194:35;:::i;:::-;;;;-1:-1:-1;;23245:40:0;;368:25:1;;;23268:4:0;;-1:-1:-1;;;;;23245:40:0;;;;;356:2:1;341:18;23245:40:0;;;;;;;23315:23;23327:11;23315:9;:23;:::i;:::-;23305:34;;:6;:34;:::i;19792:543::-;19937:16;;;19951:1;19937:16;;;;;;;;19913:21;;19937:16;;;;;;;;-1:-1:-1;;19974:9:0;;:16;;;-1:-1:-1;;;19974:16:0;;;;19913:40;;-1:-1:-1;;;;;;19974:9:0;;;;:14;;-1:-1:-1;19974:16:0;;;;;;;;;;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19964:4;19969:1;19964:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1;;;;;19964:26:0;;;-1:-1:-1;;;;;19964:26:0;;;;;20019:4;20001;20006:1;20001:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;20001:23:0;;;:7;;;;;;;;;:23;20061:9;;:218;;-1:-1:-1;;;20061:218:0;;:9;;;:60;;20129:6;;20061:218;;:9;;20198:4;;5317:42;;20252:15;;20061:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20297:30;20314:6;20322:4;20297:30;;;;;;;:::i;774:597:1:-;886:4;915:2;944;933:9;926:21;976:6;970:13;1019:6;1014:2;1003:9;999:18;992:34;1044:1;1054:140;1068:6;1065:1;1062:13;1054:140;;;1163:14;;;1159:23;;1153:30;1129:17;;;1148:2;1125:26;1118:66;1083:10;;1054:140;;;1212:6;1209:1;1206:13;1203:91;;;1282:1;1277:2;1268:6;1257:9;1253:22;1249:31;1242:42;1203:91;-1:-1:-1;1355:2:1;1334:15;-1:-1:-1;;1330:29:1;1315:45;;;;1362:2;1311:54;;774:597;-1:-1:-1;;;774:597:1:o;1601:131::-;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1737:315;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1921:9;1908:23;1940:31;1965:5;1940:31;:::i;:::-;1990:5;2042:2;2027:18;;;;2014:32;;-1:-1:-1;;;1737:315:1:o;2249:456::-;2326:6;2334;2342;2395:2;2383:9;2374:7;2370:23;2366:32;2363:52;;;2411:1;2408;2401:12;2363:52;2450:9;2437:23;2469:31;2494:5;2469:31;:::i;:::-;2519:5;-1:-1:-1;2576:2:1;2561:18;;2548:32;2589:33;2548:32;2589:33;:::i;:::-;2249:456;;2641:7;;-1:-1:-1;;;2695:2:1;2680:18;;;;2667:32;;2249:456::o;2710:127::-;2771:10;2766:3;2762:20;2759:1;2752:31;2802:4;2799:1;2792:15;2826:4;2823:1;2816:15;2842:275;2913:2;2907:9;2978:2;2959:13;;-1:-1:-1;;2955:27:1;2943:40;;3013:18;2998:34;;3034:22;;;2995:62;2992:88;;;3060:18;;:::i;:::-;3096:2;3089:22;2842:275;;-1:-1:-1;2842:275:1:o;3122:183::-;3182:4;3215:18;3207:6;3204:30;3201:56;;;3237:18;;:::i;:::-;-1:-1:-1;3282:1:1;3278:14;3294:4;3274:25;;3122:183::o;3310:662::-;3364:5;3417:3;3410:4;3402:6;3398:17;3394:27;3384:55;;3435:1;3432;3425:12;3384:55;3471:6;3458:20;3497:4;3521:60;3537:43;3577:2;3537:43;:::i;:::-;3521:60;:::i;:::-;3615:15;;;3701:1;3697:10;;;;3685:23;;3681:32;;;3646:12;;;;3725:15;;;3722:35;;;3753:1;3750;3743:12;3722:35;3789:2;3781:6;3777:15;3801:142;3817:6;3812:3;3809:15;3801:142;;;3883:17;;3871:30;;3921:12;;;;3834;;3801:142;;;-1:-1:-1;3961:5:1;3310:662;-1:-1:-1;;;;;;3310:662:1:o;3977:1215::-;4095:6;4103;4156:2;4144:9;4135:7;4131:23;4127:32;4124:52;;;4172:1;4169;4162:12;4124:52;4212:9;4199:23;4241:18;4282:2;4274:6;4271:14;4268:34;;;4298:1;4295;4288:12;4268:34;4336:6;4325:9;4321:22;4311:32;;4381:7;4374:4;4370:2;4366:13;4362:27;4352:55;;4403:1;4400;4393:12;4352:55;4439:2;4426:16;4461:4;4485:60;4501:43;4541:2;4501:43;:::i;4485:60::-;4579:15;;;4661:1;4657:10;;;;4649:19;;4645:28;;;4610:12;;;;4685:19;;;4682:39;;;4717:1;4714;4707:12;4682:39;4741:11;;;;4761:217;4777:6;4772:3;4769:15;4761:217;;;4857:3;4844:17;4874:31;4899:5;4874:31;:::i;:::-;4918:18;;4794:12;;;;4956;;;;4761:217;;;4997:5;-1:-1:-1;;5040:18:1;;5027:32;;-1:-1:-1;;5071:16:1;;;5068:36;;;5100:1;5097;5090:12;5068:36;;5123:63;5178:7;5167:8;5156:9;5152:24;5123:63;:::i;:::-;5113:73;;;3977:1215;;;;;:::o;5197:118::-;5283:5;5276:13;5269:21;5262:5;5259:32;5249:60;;5305:1;5302;5295:12;5320:241;5376:6;5429:2;5417:9;5408:7;5404:23;5400:32;5397:52;;;5445:1;5442;5435:12;5397:52;5484:9;5471:23;5503:28;5525:5;5503:28;:::i;5755:159::-;5822:20;;5882:6;5871:18;;5861:29;;5851:57;;5904:1;5901;5894:12;5851:57;5755:159;;;:::o;5919:328::-;5993:6;6001;6009;6062:2;6050:9;6041:7;6037:23;6033:32;6030:52;;;6078:1;6075;6068:12;6030:52;6101:28;6119:9;6101:28;:::i;:::-;6091:38;;6148:37;6181:2;6170:9;6166:18;6148:37;:::i;:::-;6138:47;;6204:37;6237:2;6226:9;6222:18;6204:37;:::i;:::-;6194:47;;5919:328;;;;;:::o;6252:454::-;6347:6;6355;6363;6371;6379;6432:3;6420:9;6411:7;6407:23;6403:33;6400:53;;;6449:1;6446;6439:12;6400:53;-1:-1:-1;;6472:23:1;;;6542:2;6527:18;;6514:32;;-1:-1:-1;6593:2:1;6578:18;;6565:32;;6644:2;6629:18;;6616:32;;-1:-1:-1;6695:3:1;6680:19;6667:33;;-1:-1:-1;6252:454:1;-1:-1:-1;6252:454:1:o;6711:382::-;6776:6;6784;6837:2;6825:9;6816:7;6812:23;6808:32;6805:52;;;6853:1;6850;6843:12;6805:52;6892:9;6879:23;6911:31;6936:5;6911:31;:::i;:::-;6961:5;-1:-1:-1;7018:2:1;7003:18;;6990:32;7031:30;6990:32;7031:30;:::i;:::-;7080:7;7070:17;;;6711:382;;;;;:::o;7098:247::-;7157:6;7210:2;7198:9;7189:7;7185:23;7181:32;7178:52;;;7226:1;7223;7216:12;7178:52;7265:9;7252:23;7284:31;7309:5;7284:31;:::i;7350:180::-;7409:6;7462:2;7450:9;7441:7;7437:23;7433:32;7430:52;;;7478:1;7475;7468:12;7430:52;-1:-1:-1;7501:23:1;;7350:180;-1:-1:-1;7350:180:1:o;7984:396::-;8060:6;8068;8121:2;8109:9;8100:7;8096:23;8092:32;8089:52;;;8137:1;8134;8127:12;8089:52;8176:9;8163:23;8195:31;8220:5;8195:31;:::i;:::-;8245:5;-1:-1:-1;8302:2:1;8287:18;;8274:32;8315:33;8274:32;8315:33;:::i;9103:127::-;9164:10;9159:3;9155:20;9152:1;9145:31;9195:4;9192:1;9185:15;9219:4;9216:1;9209:15;9235:422;9324:1;9367:5;9324:1;9381:270;9402:7;9392:8;9389:21;9381:270;;;9461:4;9457:1;9453:6;9449:17;9443:4;9440:27;9437:53;;;9470:18;;:::i;:::-;9520:7;9510:8;9506:22;9503:55;;;9540:16;;;;9503:55;9619:22;;;;9579:15;;;;9381:270;;;9385:3;9235:422;;;;;:::o;9662:806::-;9711:5;9741:8;9731:80;;-1:-1:-1;9782:1:1;9796:5;;9731:80;9830:4;9820:76;;-1:-1:-1;9867:1:1;9881:5;;9820:76;9912:4;9930:1;9925:59;;;;9998:1;9993:130;;;;9905:218;;9925:59;9955:1;9946:10;;9969:5;;;9993:130;10030:3;10020:8;10017:17;10014:43;;;10037:18;;:::i;:::-;-1:-1:-1;;10093:1:1;10079:16;;10108:5;;9905:218;;10207:2;10197:8;10194:16;10188:3;10182:4;10179:13;10175:36;10169:2;10159:8;10156:16;10151:2;10145:4;10142:12;10138:35;10135:77;10132:159;;;-1:-1:-1;10244:19:1;;;10276:5;;10132:159;10323:34;10348:8;10342:4;10323:34;:::i;:::-;10393:6;10389:1;10385:6;10381:19;10372:7;10369:32;10366:58;;;10404:18;;:::i;:::-;10442:20;;9662:806;-1:-1:-1;;;9662:806:1:o;10473:140::-;10531:5;10560:47;10601:4;10591:8;10587:19;10581:4;10560:47;:::i;10618:217::-;10658:1;10684;10674:132;;10728:10;10723:3;10719:20;10716:1;10709:31;10763:4;10760:1;10753:15;10791:4;10788:1;10781:15;10674:132;-1:-1:-1;10820:9:1;;10618:217::o;10840:168::-;10880:7;10946:1;10942;10938:6;10934:14;10931:1;10928:21;10923:1;10916:9;10909:17;10905:45;10902:71;;;10953:18;;:::i;:::-;-1:-1:-1;10993:9:1;;10840:168::o;11013:125::-;11053:4;11081:1;11078;11075:8;11072:34;;;11086:18;;:::i;:::-;-1:-1:-1;11123:9:1;;11013:125::o;11493:127::-;11554:10;11549:3;11545:20;11542:1;11535:31;11585:4;11582:1;11575:15;11609:4;11606:1;11599:15;11625:175;11662:3;11706:4;11699:5;11695:16;11735:4;11726:7;11723:17;11720:43;;;11743:18;;:::i;:::-;11792:1;11779:15;;11625:175;-1:-1:-1;;11625:175:1:o;11805:341::-;12007:2;11989:21;;;12046:2;12026:18;;;12019:30;-1:-1:-1;;;12080:2:1;12065:18;;12058:47;12137:2;12122:18;;11805:341::o;12503:425::-;12705:2;12687:21;;;12744:2;12724:18;;;12717:30;12783:34;12778:2;12763:18;;12756:62;12854:31;12849:2;12834:18;;12827:59;12918:3;12903:19;;12503:425::o;14263:245::-;14330:6;14383:2;14371:9;14362:7;14358:23;14354:32;14351:52;;;14399:1;14396;14389:12;14351:52;14431:9;14425:16;14450:28;14472:5;14450:28;:::i;14513:224::-;14552:3;14580:6;14613:2;14610:1;14606:10;14643:2;14640:1;14636:10;14674:3;14670:2;14666:12;14661:3;14658:21;14655:47;;;14682:18;;:::i;:::-;14718:13;;14513:224;-1:-1:-1;;;;14513:224:1:o;14742:251::-;14812:6;14865:2;14853:9;14844:7;14840:23;14836:32;14833:52;;;14881:1;14878;14871:12;14833:52;14913:9;14907:16;14932:31;14957:5;14932:31;:::i;17637:128::-;17677:3;17708:1;17704:6;17701:1;17698:13;17695:39;;;17714:18;;:::i;:::-;-1:-1:-1;17750:9:1;;17637:128::o;18587:461::-;18640:3;18678:5;18672:12;18705:6;18700:3;18693:19;18731:4;18760:2;18755:3;18751:12;18744:19;;18797:2;18790:5;18786:14;18818:1;18828:195;18842:6;18839:1;18836:13;18828:195;;;18907:13;;-1:-1:-1;;;;;18903:39:1;18891:52;;18963:12;;;;18998:15;;;;18939:1;18857:9;18828:195;;;-1:-1:-1;19039:3:1;;18587:461;-1:-1:-1;;;;;18587:461:1:o;19053:582::-;19352:6;19341:9;19334:25;19395:6;19390:2;19379:9;19375:18;19368:34;19438:3;19433:2;19422:9;19418:18;19411:31;19315:4;19459:57;19511:3;19500:9;19496:19;19488:6;19459:57;:::i;:::-;-1:-1:-1;;;;;19552:32:1;;;;19547:2;19532:18;;19525:60;-1:-1:-1;19616:3:1;19601:19;19594:35;19451:65;19053:582;-1:-1:-1;;;19053:582:1:o;20209:332::-;20416:6;20405:9;20398:25;20459:2;20454;20443:9;20439:18;20432:30;20379:4;20479:56;20531:2;20520:9;20516:18;20508:6;20479:56;:::i;20546:881::-;20641:6;20672:2;20715;20703:9;20694:7;20690:23;20686:32;20683:52;;;20731:1;20728;20721:12;20683:52;20764:9;20758:16;20797:18;20789:6;20786:30;20783:50;;;20829:1;20826;20819:12;20783:50;20852:22;;20905:4;20897:13;;20893:27;-1:-1:-1;20883:55:1;;20934:1;20931;20924:12;20883:55;20963:2;20957:9;20986:60;21002:43;21042:2;21002:43;:::i;20986:60::-;21080:15;;;21162:1;21158:10;;;;21150:19;;21146:28;;;21111:12;;;;21186:19;;;21183:39;;;21218:1;21215;21208:12;21183:39;21242:11;;;;21262:135;21278:6;21273:3;21270:15;21262:135;;;21344:10;;21332:23;;21295:12;;;;21375;;;;21262:135;;;21416:5;20546:881;-1:-1:-1;;;;;;;20546:881:1:o;21836:510::-;22107:6;22096:9;22089:25;22150:3;22145:2;22134:9;22130:18;22123:31;22070:4;22171:57;22223:3;22212:9;22208:19;22200:6;22171:57;:::i;:::-;-1:-1:-1;;;;;22264:32:1;;;;22259:2;22244:18;;22237:60;-1:-1:-1;22328:2:1;22313:18;22306:34;22163:65;21836:510;-1:-1:-1;;21836:510:1:o

Swarm Source

ipfs://6f2a8af208c49e544f32926ac9bf59ea92f4917973b896b649eafbd9c8e04d8f
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.