ETH Price: $2,535.67 (-17.59%)
 

Overview

Max Total Supply

1,000,000,000,000 Donda

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,670,000,000 Donda

Value
$0.00
0xafe4717625be4ffe108101c1704e13ab7cf07674
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:
DondaInu

Compiler Version
v0.8.12+commit.f00d7308

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-02-22
*/

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  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);
}

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);
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
}

contract DondaInu is IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _rOwned;
    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_000;

    string constant private _name = "Donda Inu";
    string constant private _symbol = "Donda";
    uint8 constant private _decimals = 9;

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

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

    struct Ratios {
        uint16 teamNFT;
        uint16 marketing;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        teamNFT: 6,
        marketing: 5,
        total: 11
        });

    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 payable marketing;
        address payable teamNFT;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xce4dC4ED8c5690052835a00f6A2D42BcD03eAb8D),
        teamNFT: payable(0xce4dC4ED8c5690052835a00f6A2D42BcD03eAb8D)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public contractSwapTimer = 0 seconds;
    uint256 private lastSwap;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    
    uint256 private _maxTxAmount = (_tTotal * 3) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 3) / 100;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    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) {
            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;
    }

    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) private {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

    function approveContractContingency() public onlyOwner returns (bool) {
        _approve(address(this), address(dexRouter), type(uint256).max);
        return true;
    }

    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;
            antiSnipe.setLpPair(pair, false);
        } else {
            if (timeSinceLastPair != 0) {
                require(block.timestamp - timeSinceLastPair > 3 days, "3 Day cooldown.!");
            }
            lpPairs[pair] = true;
            timeSinceLastPair = block.timestamp;
            antiSnipe.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded);
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }

    function removeBlacklisted(address account) external onlyOwner {
        antiSnipe.removeBlacklisted(account);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _algo) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo);
    }

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 300, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

    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 teamNFT, uint16 marketing) external onlyOwner {
        _ratios.teamNFT = teamNFT;
        _ratios.marketing = marketing;
        _ratios.total = teamNFT + marketing;
    }

    function setMaxTxPercent(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Transaction amt must be above 0.1% of total supply.");
        _maxTxAmount = (_tTotal * percent) / divisor;
    }

    function setMaxWalletSize(uint256 percent, uint256 divisor) external onlyOwner {
        require((_tTotal * percent) / divisor >= (_tTotal / 1000), "Max Wallet amt must be above 0.1% of total supply.");
        _maxWalletSize = (_tTotal * percent) / divisor;
    }

    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 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 payable marketing) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
    }

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

    function _hasLimits(address from, address to) private 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 otherTransfer = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            otherTransfer = 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(contractTokenBalance);
                        lastSwap = block.timestamp;
                    }
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee, buy, sell, otherTransfer);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        Ratios memory ratios = _ratios;
        if (ratios.total == 0) {
            return;
        }

        if(_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 teamNFTBalance = (amtBalance * ratios.teamNFT) / ratios.total;
        uint256 marketingBalance = amtBalance - teamNFTBalance;
        if (ratios.teamNFT > 0) {
            _taxWallets.teamNFT.transfer(teamNFTBalance);
        }
        if (ratios.marketing > 0) {
            _taxWallets.marketing.transfer(marketingBalance);
        }
    }

    function _checkLiquidityAdd(address from, address to) private {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            if(address(antiSnipe) == address(0)){
                antiSnipe = AntiSnipe(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
        swapThreshold = balanceOf(lpPair) / 10000;
        swapAmount = (balanceOf(lpPair) * 5) / 10000;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    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]);
            _transfer(msg.sender, accounts[i], amounts[i]*10**_decimals);
        }
    }

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

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _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;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

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":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":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"teamNFT","type":"uint16"},{"internalType":"uint16","name":"marketing","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 payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"teamNFT","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":[],"name":"approveContractContingency","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":"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":"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":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"teamNFT","type":"uint16"},{"internalType":"uint16","name":"marketing","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 payable","name":"marketing","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":"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"}]

6000600481905561044c608081905260a081905260c0526009805465ffffffffffff1990811665044c044c044c178255600660e052600561010052600b61012052600a8054909116640b0005000617815561018060405273ce4dc4ed8c5690052835a00f6a2d42bcd03eab8d610140819052610160819052600d80546001600160a01b03199081168317909155600e80549091169091179055600f805461ff00191690556010929092556103e891620000b991906200075c565b620000ca9064e8d4a5100062000774565b620000d790600362000774565b620000e3919062000796565b6014556064620000f66009600a6200075c565b620001079064e8d4a5100062000774565b6200011490600362000774565b62000120919062000796565b6015556016805461ffff191690556200013c6009600a6200075c565b6200014d9064e8d4a5100062000774565b33600081815260026020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001906009600a6200075c565b620001a19064e8d4a5100062000774565b60405190815260200160405180910390a3600080546001600160a01b031916331790556038461415620001fa57600b80546001600160a01b0319167310ed43c718714eb63d5aa57b78b54704e256024e179055620002e4565b46606114156200023057600b80546001600160a01b031916739ac64cc6e4415144c455bd8e4837fea55603e5c3179055620002e4565b4660011480620002405750466004145b156200027257600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055620002e4565b4661a86a1415620002a957600b80546001600160a01b0319167360ae616a2155ee3d9a68541ba4544862310933d4179055620002e4565b4660fa1415620002df57600b80546001600160a01b03191673f491e7b69e4244ad4002bc14e878a34207e38c29179055620002e4565b600080fd5b600b60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000338573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035e9190620007b9565b6001600160a01b031663c9c65396600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e69190620007b9565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000433573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004599190620007b9565b600c80546001600160a01b0319166001600160a01b039283169081179091556000908152600360205260408120805460ff1916600117905554600b54620004a892918216911660001962000546565b600b54620004c49030906001600160a01b031660001962000546565b600080546001600160a01b0390811682526006602090815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905585549094168552600890925290922080549091169091179055620007e4565b6001600160a01b038316620005985760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005e65760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200058f565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200069e57816000190482111562000682576200068262000647565b808516156200069057918102915b93841c939080029062000662565b509250929050565b600082620006b75750600162000756565b81620006c65750600062000756565b8160018114620006df5760028114620006ea576200070a565b600191505062000756565b60ff841115620006fe57620006fe62000647565b50506001821b62000756565b5060208310610133831016604e8410600b84101617156200072f575081810a62000756565b6200073b83836200065d565b806000190482111562000752576200075262000647565b0290505b92915050565b60006200076d60ff841683620006a6565b9392505050565b600081600019048311821515161562000791576200079162000647565b500290565b600082620007b457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007cc57600080fd5b81516001600160a01b03811681146200076d57600080fd5b613ac480620007f46000396000f3fe6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063ee5d9c2d1161006f578063ee5d9c2d146109d5578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063eb50e70e146109b557600080fd5b8063cab5ebea116100c6578063cab5ebea146108e8578063cf84770614610908578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063c6a276c2146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b8063095ea7b3116102ec57806323b872dd116102c657806323b872dd146104e757806326003957146105075780632610eaca1461052757806329dd87981461054757600080fd5b8063095ea7b31461048d5780630fa604e4146104bd57806318160ddd146104d257600080fd5b806306fdde031161031d57806306fdde03146103fc5780630758d9241461044b578063092316021461046b57600080fd5b806303fd2a451461034f5780630445b66714610382578063069d955f146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860125481565b604051908152602001610379565b3480156103b257600080fd5b506009546103d79061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561040857600080fd5b5060408051808201909152600981527f446f6e646120496e75000000000000000000000000000000000000000000000060208201525b604051610379919061332d565b34801561045757600080fd5b50600b54610365906001600160a01b031681565b34801561047757600080fd5b5061048b610486366004613382565b610a70565b005b34801561049957600080fd5b506104ad6104a83660046133b0565b610b95565b6040519015158152602001610379565b3480156104c957600080fd5b50610398610bac565b3480156104de57600080fd5b50610398610bcc565b3480156104f357600080fd5b506104ad6105023660046133dc565b610c0d565b34801561051357600080fd5b5061048b61052236600461341d565b610c85565b34801561053357600080fd5b5061048b61054236600461352e565b610dd8565b34801561055357600080fd5b5061048b6105623660046135fe565b610ef2565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860135481565b34801561059f57600080fd5b5060405160098152602001610379565b3480156105bb57600080fd5b5061048b6105ca366004613671565b610fdb565b3480156105db57600080fd5b5061048b6105ea3660046136b4565b611116565b3480156105fb57600080fd5b5061048b61060a3660046136d1565b6111b6565b34801561061b57600080fd5b5061048b61062a36600461370c565b611275565b34801561063b57600080fd5b5061048b61064a36600461341d565b6112ee565b34801561065b57600080fd5b50600c54610365906001600160a01b031681565b34801561067b57600080fd5b506016546104ad9060ff1681565b34801561069557600080fd5b5061048b6106a43660046136b4565b611441565b3480156106b557600080fd5b506104ad6106c43660046136b4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ee57600080fd5b506016546104ad90610100900460ff1681565b34801561070d57600080fd5b5061048b61071c36600461370c565b61165a565b34801561072d57600080fd5b5061048b61073c3660046136b4565b6116d3565b34801561074d57600080fd5b506104ad61075c3660046136b4565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078657600080fd5b506103986117cf565b34801561079b57600080fd5b506103986107aa3660046136b4565b6001600160a01b031660009081526002602052604090205490565b3480156107d157600080fd5b5061048b6117ea565b3480156107e657600080fd5b5061048b6107f536600461370c565b6118a5565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104ad611a82565b34801561083957600080fd5b5061048b611af1565b34801561084e57600080fd5b5060408051808201909152600581527f446f6e6461000000000000000000000000000000000000000000000000000000602082015261043e565b34801561089457600080fd5b506104ad6108a33660046133b0565b611d3e565b3480156108b457600080fd5b5061048b6108c3366004613745565b611d55565b3480156108d457600080fd5b5061048b6108e33660046136b4565b611e27565b3480156108f457600080fd5b5061048b610903366004613778565b611ec7565b34801561091457600080fd5b50600a546103d79061ffff808216916201000081048216916401000000009091041683565b34801561094557600080fd5b50610398610954366004613795565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561098b57600080fd5b5061039860105481565b3480156109a157600080fd5b5061048b6109b03660046136b4565b611f69565b3480156109c157600080fd5b5061048b6109d03660046136b4565b612339565b3480156109e157600080fd5b5061048b6123c1565b3480156109f657600080fd5b50600d54600e54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600f546104ad90610100900460ff1681565b348015610a5c57600080fd5b506104ad610a6b3660046136b4565b6124a4565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b61012c811015610b155760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610aba565b6016546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610b7a57600080fd5b505af1158015610b8e573d6000803e3d6000fd5b5050505050565b6000610ba2338484612532565b5060015b92915050565b6000610bba6009600a6138d6565b601554610bc791906138e5565b905090565b6000610bda6009600a6138d6565b610be99064e8d4a51000613920565b610bf257600080fd5b610bfe6009600a6138d6565b610bc79064e8d4a51000613920565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610c72576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610c6c90849061393f565b90915550505b610c7d84848461263f565b949350505050565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610ce26009600a6138d6565b610cf19064e8d4a51000613920565b610cfb91906138e5565b8183610d096009600a6138d6565b610d189064e8d4a51000613920565b610d229190613920565b610d2c91906138e5565b1015610da05760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610dae6009600a6138d6565b610dbd9064e8d4a51000613920565b610dc79190613920565b610dd191906138e5565b6015555050565b8051825114610e295760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610eed57818160ff1681518110610e4d57610e4d613956565b6020026020010151610e74336001600160a01b031660009081526002602052604090205490565b1015610e7f57600080fd5b610eda33848360ff1681518110610e9857610e98613956565b60200260200101516009600a610eae91906138d6565b858560ff1681518110610ec357610ec3613956565b6020026020010151610ed59190613920565b61263f565b5080610ee581613985565b915050610e2c565b505050565b6000546001600160a01b03163314610f405760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b158015610fbd57600080fd5b505af1158015610fd1573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff161115801561104557506107d08261ffff1611155b801561105757506107d08161ffff1611155b6110a35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146111645760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610b60565b6000546001600160a01b031633146112045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856112126009600a6138d6565b6112219064e8d4a51000613920565b61122b9190613920565b61123591906138e5565b60125581836112466009600a6138d6565b6112559064e8d4a51000613920565b61125f9190613920565b61126991906138e5565b60135560105550505050565b6000546001600160a01b031633146112c35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461133c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e861134b6009600a6138d6565b61135a9064e8d4a51000613920565b61136491906138e5565b81836113726009600a6138d6565b6113819064e8d4a51000613920565b61138b9190613920565b61139591906138e5565b10156114095760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826114176009600a6138d6565b6114269064e8d4a51000613920565b6114309190613920565b61143a91906138e5565b6014555050565b6000546001600160a01b0316331461148f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03811661150b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead141561158c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b600080546115a5916001600160a01b039091169061165a565b6115b081600161165a565b600080546001600160a01b0316815260026020526040902054156115f757600080546001600160a01b031680825260026020526040909120546115f59190839061263f565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116a85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117215760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601654610100900460ff161561173657600080fd5b6001600160a01b03811630141561178f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117dd6009600a6138d6565b601454610bc791906138e5565b6000546001600160a01b031633146118385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008054611851916001600160a01b039091169061165a565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b8061199c576001600160a01b03828116600081815260036020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b505050505050565b60045415611a03576203f480600454426119b6919061393f565b11611a035760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560165492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401611966565b5050565b600080546001600160a01b03163314611ad15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600b54611aeb9030906001600160a01b0316600019612532565b50600190565b6000546001600160a01b03163314611b3f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60165460ff1615611b925760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601654610100900460ff16611be95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6016546201000090046001600160a01b0316611c2f57601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611cba57600080fd5b505af1925050508015611ccb575060015b506016805460ff19166001179055600c546001600160a01b031660009081526002602052604090205461271090611d0291906138e5565b601255600c546001600160a01b031660009081526002602052604090205461271090611d2f906005613920565b611d3991906138e5565b601355565b6000611d4b33848461263f565b5060019392505050565b6000546001600160a01b03163314611da35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611de781836139a5565b600a805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611e755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610b60565b6000546001600160a01b03163314611f155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600f80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611f5e90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611fb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202091906139cb565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209191906139cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211891906139cb565b90506001600160a01b0381166122c157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218a91906139cb565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fb91906139cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228491906139cb565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556122f5565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610eed903090600019612532565b6000546001600160a01b031633146123875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461240f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601654610100900460ff16156124675760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156124a1573d6000803e3d6000fd5b50565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561250e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba691906139e8565b6001600160a01b0383166125885760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125de5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166127395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127af5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600360205260408120548190819060ff16156127dd576001925061280b565b6001600160a01b03861660009081526003602052604090205460ff1615612807576001915061280b565b5060015b6128158787612af4565b15612a1b5760165460ff1661286c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b82806128755750815b15612939576001600160a01b03871660009081526007602052604090205460ff161580156128bc57506001600160a01b03861660009081526007602052604090205460ff16155b15612939576014548511156129395760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600b546001600160a01b03878116911614801590612955575081155b15612a1b576001600160a01b03861660009081526007602052604090205460ff16612a1b576015548561299d886001600160a01b031660009081526002602052604090205490565b6129a79190613a05565b1115612a1b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526006602052604090205460019060ff1680612a5d57506001600160a01b03871660009081526006602052604090205460ff165b15612a66575060005b8215612ad957600f5460ff16158015612a865750600f54610100900460ff165b15612ad95742601054601154612a9c9190613a05565b1015612ad957306000908152600260205260409020546012548110612ad7576013548110612ac957506013545b612ad281612bc9565b426011555b505b612ae888888884888888612eb8565b98975050505050505050565b600080546001600160a01b03848116911614801590612b2157506000546001600160a01b03838116911614155b8015612b3857506000546001600160a01b03163214155b8015612b5d57506001600160a01b03821660009081526008602052604090205460ff16155b8015612b8257506001600160a01b03831660009081526008602052604090205460ff16155b8015612b9957506001600160a01b03821661dead14155b8015612bad57506001600160a01b03821615155b8015612bc257506001600160a01b0383163014155b9392505050565b600f805460ff1916600117905560408051606081018252600a5461ffff8082168352620100008204811660208401526401000000009091041691810182905290612c135750612eab565b306000908152600560209081526040808320600b546001600160a01b0316845290915290205460001914612c6c57306000908152600560209081526040808320600b546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ca157612ca1613956565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3791906139cb565b81600181518110612d4a57612d4a613956565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612da9908690600090869030904290600401613a1d565b600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b5050506040830151835147925060009161ffff90811691612df9911684613920565b612e0391906138e5565b90506000612e11828461393f565b855190915061ffff1615612e5b57600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e59573d6000803e3d6000fd5b505b602085015161ffff1615612ea557600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ea3573d6000803e3d6000fd5b505b50505050505b50600f805460ff19169055565b601654600090610100900460ff16612f6457612ed488886130f8565b601654610100900460ff16158015612ef15750612ef18888612af4565b15612f645760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612f6e8888612af4565b15613021576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561300a575060408051601f3d908101601f19168201909252613007918101906139e8565b60015b61301357600080fd5b90508061301f57600080fd5b505b6001600160a01b0388166000908152600260205260408120805488929061304990849061393f565b90915550600090508561305c5786613068565b6130688986868a613256565b6001600160a01b038916600090815260026020526040812080549293508392909190613095908490613a05565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e191815260200190565b60405180910390a350600198975050505050505050565b601654610100900460ff16156131765760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6131808282612af4565b15801561319a5750600c546001600160a01b038281169116145b15611a7e576001600160a01b038083166000908152600860205260409020805460ff191660011790556016805461ff00191661010017908190556201000090041661320f57601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080841561326c575060095461ffff16613296565b8315613285575060095462010000900461ffff16613296565b50600954640100000000900461ffff165b60006127106132a58386613920565b6132af91906138e5565b306000908152600260205260408120805492935083929091906132d3908490613a05565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613322818561393f565b979650505050505050565b600060208083528351808285015260005b8181101561335a5785810183015185820160400152820161333e565b8181111561336c576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561339457600080fd5b5035919050565b6001600160a01b03811681146124a157600080fd5b600080604083850312156133c357600080fd5b82356133ce8161339b565b946020939093013593505050565b6000806000606084860312156133f157600080fd5b83356133fc8161339b565b9250602084013561340c8161339b565b929592945050506040919091013590565b6000806040838503121561343057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134975761349761343f565b604052919050565b600067ffffffffffffffff8211156134b9576134b961343f565b5060051b60200190565b600082601f8301126134d457600080fd5b813560206134e96134e48361349f565b61346e565b82815260059290921b8401810191818101908684111561350857600080fd5b8286015b84811015613523578035835291830191830161350c565b509695505050505050565b6000806040838503121561354157600080fd5b823567ffffffffffffffff8082111561355957600080fd5b818501915085601f83011261356d57600080fd5b8135602061357d6134e48361349f565b82815260059290921b8401810191818101908984111561359c57600080fd5b948201945b838610156135c35785356135b48161339b565b825294820194908201906135a1565b965050860135925050808211156135d957600080fd5b506135e6858286016134c3565b9150509250929050565b80151581146124a157600080fd5b6000806000806080858703121561361457600080fd5b843561361f816135f0565b9350602085013561362f816135f0565b9250604085013561363f816135f0565b9150606085013561364f816135f0565b939692955090935050565b803561ffff8116811461366c57600080fd5b919050565b60008060006060848603121561368657600080fd5b61368f8461365a565b925061369d6020850161365a565b91506136ab6040850161365a565b90509250925092565b6000602082840312156136c657600080fd5b8135612bc28161339b565b600080600080600060a086880312156136e957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561371f57600080fd5b823561372a8161339b565b9150602083013561373a816135f0565b809150509250929050565b6000806040838503121561375857600080fd5b6137618361365a565b915061376f6020840161365a565b90509250929050565b60006020828403121561378a57600080fd5b8135612bc2816135f0565b600080604083850312156137a857600080fd5b82356137b38161339b565b9150602083013561373a8161339b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561382d578160001904821115613813576138136137c3565b8085161561382057918102915b93841c93908002906137f7565b509250929050565b60008261384457506001610ba6565b8161385157506000610ba6565b816001811461386757600281146138715761388d565b6001915050610ba6565b60ff841115613882576138826137c3565b50506001821b610ba6565b5060208310610133831016604e8410600b84101617156138b0575081810a610ba6565b6138ba83836137f2565b80600019048211156138ce576138ce6137c3565b029392505050565b6000612bc260ff841683613835565b60008261391b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600081600019048311821515161561393a5761393a6137c3565b500290565b600082821015613951576139516137c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561399c5761399c6137c3565b60010192915050565b600061ffff8083168185168083038211156139c2576139c26137c3565b01949350505050565b6000602082840312156139dd57600080fd5b8151612bc28161339b565b6000602082840312156139fa57600080fd5b8151612bc2816135f0565b60008219821115613a1857613a186137c3565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a6d5784516001600160a01b031683529383019391830191600101613a48565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204decb68af011a966d99d18e4cf711e98fe5f4a3252e6266eb35b684c21f2bcb464736f6c634300080c0033

Deployed Bytecode

0x6080604052600436106103435760003560e01c8063590ffdce116101b0578063b3d514fb116100ec578063e4fcfd1811610095578063ee5d9c2d1161006f578063ee5d9c2d146109d5578063f94aa1b4146109ea578063fdb78c0e14610a31578063fe575a8714610a5057600080fd5b8063e4fcfd181461097f578063eafb5a3c14610995578063eb50e70e146109b557600080fd5b8063cab5ebea116100c6578063cab5ebea146108e8578063cf84770614610908578063dd62ed3e1461093957600080fd5b8063b3d514fb14610567578063bcd96a25146108a8578063c6a276c2146108c857600080fd5b806380c581d1116101595780638a8c523c116101335780638a8c523c1461082d57806395d89b4114610842578063a9059cbb14610888578063b1b08f711461056757600080fd5b806380c581d1146107da578063893d20e8146107fa5780638a63bd9b1461081857600080fd5b80636ebd00781161018a5780636ebd00781461077a57806370a082311461078f578063715018a6146107c557600080fd5b8063590ffdce146107015780635c24b074146107215780635cce86cd1461074157600080fd5b80632b28fc7a1161027f57806336fddb04116102285780634ada218b116102025780634ada218b1461066f5780634fb2e45d146106895780634fbee193146106a957806350a8e016146106e257600080fd5b806336fddb041461060f5780633f3cf56c1461062f578063452ed4f11461064f57600080fd5b806332cde6641161025957806332cde664146105af57806333251a0b146105cf57806334cd8260146105ef57600080fd5b80632b28fc7a146105675780632e8fa8211461057d578063313ce5671461059357600080fd5b8063095ea7b3116102ec57806323b872dd116102c657806323b872dd146104e757806326003957146105075780632610eaca1461052757806329dd87981461054757600080fd5b8063095ea7b31461048d5780630fa604e4146104bd57806318160ddd146104d257600080fd5b806306fdde031161031d57806306fdde03146103fc5780630758d9241461044b578063092316021461046b57600080fd5b806303fd2a451461034f5780630445b66714610382578063069d955f146103a657600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b5061036561dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561038e57600080fd5b5061039860125481565b604051908152602001610379565b3480156103b257600080fd5b506009546103d79061ffff808216916201000081048216916401000000009091041683565b6040805161ffff94851681529284166020840152921691810191909152606001610379565b34801561040857600080fd5b5060408051808201909152600981527f446f6e646120496e75000000000000000000000000000000000000000000000060208201525b604051610379919061332d565b34801561045757600080fd5b50600b54610365906001600160a01b031681565b34801561047757600080fd5b5061048b610486366004613382565b610a70565b005b34801561049957600080fd5b506104ad6104a83660046133b0565b610b95565b6040519015158152602001610379565b3480156104c957600080fd5b50610398610bac565b3480156104de57600080fd5b50610398610bcc565b3480156104f357600080fd5b506104ad6105023660046133dc565b610c0d565b34801561051357600080fd5b5061048b61052236600461341d565b610c85565b34801561053357600080fd5b5061048b61054236600461352e565b610dd8565b34801561055357600080fd5b5061048b6105623660046135fe565b610ef2565b34801561057357600080fd5b506103986107d081565b34801561058957600080fd5b5061039860135481565b34801561059f57600080fd5b5060405160098152602001610379565b3480156105bb57600080fd5b5061048b6105ca366004613671565b610fdb565b3480156105db57600080fd5b5061048b6105ea3660046136b4565b611116565b3480156105fb57600080fd5b5061048b61060a3660046136d1565b6111b6565b34801561061b57600080fd5b5061048b61062a36600461370c565b611275565b34801561063b57600080fd5b5061048b61064a36600461341d565b6112ee565b34801561065b57600080fd5b50600c54610365906001600160a01b031681565b34801561067b57600080fd5b506016546104ad9060ff1681565b34801561069557600080fd5b5061048b6106a43660046136b4565b611441565b3480156106b557600080fd5b506104ad6106c43660046136b4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106ee57600080fd5b506016546104ad90610100900460ff1681565b34801561070d57600080fd5b5061048b61071c36600461370c565b61165a565b34801561072d57600080fd5b5061048b61073c3660046136b4565b6116d3565b34801561074d57600080fd5b506104ad61075c3660046136b4565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561078657600080fd5b506103986117cf565b34801561079b57600080fd5b506103986107aa3660046136b4565b6001600160a01b031660009081526002602052604090205490565b3480156107d157600080fd5b5061048b6117ea565b3480156107e657600080fd5b5061048b6107f536600461370c565b6118a5565b34801561080657600080fd5b506000546001600160a01b0316610365565b34801561082457600080fd5b506104ad611a82565b34801561083957600080fd5b5061048b611af1565b34801561084e57600080fd5b5060408051808201909152600581527f446f6e6461000000000000000000000000000000000000000000000000000000602082015261043e565b34801561089457600080fd5b506104ad6108a33660046133b0565b611d3e565b3480156108b457600080fd5b5061048b6108c3366004613745565b611d55565b3480156108d457600080fd5b5061048b6108e33660046136b4565b611e27565b3480156108f457600080fd5b5061048b610903366004613778565b611ec7565b34801561091457600080fd5b50600a546103d79061ffff808216916201000081048216916401000000009091041683565b34801561094557600080fd5b50610398610954366004613795565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561098b57600080fd5b5061039860105481565b3480156109a157600080fd5b5061048b6109b03660046136b4565b611f69565b3480156109c157600080fd5b5061048b6109d03660046136b4565b612339565b3480156109e157600080fd5b5061048b6123c1565b3480156109f657600080fd5b50600d54600e54610a11916001600160a01b03908116911682565b604080516001600160a01b03938416815292909116602083015201610379565b348015610a3d57600080fd5b50600f546104ad90610100900460ff1681565b348015610a5c57600080fd5b506104ad610a6b3660046136b4565b6124a4565b6000546001600160a01b03163314610ac35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b61012c811015610b155760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610aba565b6016546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610b7a57600080fd5b505af1158015610b8e573d6000803e3d6000fd5b5050505050565b6000610ba2338484612532565b5060015b92915050565b6000610bba6009600a6138d6565b601554610bc791906138e5565b905090565b6000610bda6009600a6138d6565b610be99064e8d4a51000613920565b610bf257600080fd5b610bfe6009600a6138d6565b610bc79064e8d4a51000613920565b6001600160a01b038316600090815260056020908152604080832033845290915281205460001914610c72576001600160a01b038416600090815260056020908152604080832033845290915281208054849290610c6c90849061393f565b90915550505b610c7d84848461263f565b949350505050565b6000546001600160a01b03163314610cd35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e8610ce26009600a6138d6565b610cf19064e8d4a51000613920565b610cfb91906138e5565b8183610d096009600a6138d6565b610d189064e8d4a51000613920565b610d229190613920565b610d2c91906138e5565b1015610da05760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610aba565b8082610dae6009600a6138d6565b610dbd9064e8d4a51000613920565b610dc79190613920565b610dd191906138e5565b6015555050565b8051825114610e295760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610aba565b60005b82518160ff161015610eed57818160ff1681518110610e4d57610e4d613956565b6020026020010151610e74336001600160a01b031660009081526002602052604090205490565b1015610e7f57600080fd5b610eda33848360ff1681518110610e9857610e98613956565b60200260200101516009600a610eae91906138d6565b858560ff1681518110610ec357610ec3613956565b6020026020010151610ed59190613920565b61263f565b5080610ee581613985565b915050610e2c565b505050565b6000546001600160a01b03163314610f405760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b158015610fbd57600080fd5b505af1158015610fd1573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146110295760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6107d08361ffff161115801561104557506107d08261ffff1611155b801561105757506107d08161ffff1611155b6110a35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610aba565b6009805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b031633146111645760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610b60565b6000546001600160a01b031633146112045760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b83856112126009600a6138d6565b6112219064e8d4a51000613920565b61122b9190613920565b61123591906138e5565b60125581836112466009600a6138d6565b6112559064e8d4a51000613920565b61125f9190613920565b61126991906138e5565b60135560105550505050565b6000546001600160a01b031633146112c35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461133c5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6103e861134b6009600a6138d6565b61135a9064e8d4a51000613920565b61136491906138e5565b81836113726009600a6138d6565b6113819064e8d4a51000613920565b61138b9190613920565b61139591906138e5565b10156114095760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610aba565b80826114176009600a6138d6565b6114269064e8d4a51000613920565b6114309190613920565b61143a91906138e5565b6014555050565b6000546001600160a01b0316331461148f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03811661150b5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b6001600160a01b03811661dead141561158c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610aba565b600080546115a5916001600160a01b039091169061165a565b6115b081600161165a565b600080546001600160a01b0316815260026020526040902054156115f757600080546001600160a01b031680825260026020526040909120546115f59190839061263f565b505b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000546001600160a01b031633146116a85760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146117215760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601654610100900460ff161561173657600080fd5b6001600160a01b03811630141561178f5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610aba565b601680546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60006117dd6009600a6138d6565b601454610bc791906138e5565b6000546001600160a01b031633146118385760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008054611851916001600160a01b039091169061165a565b600080547fffffffffffffffffffffffff000000000000000000000000000000000000000016815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b031633146118f35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b8061199c576001600160a01b03828116600081815260036020526040808220805460ff1916905560165490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d1906044015b600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b505050505050565b60045415611a03576203f480600454426119b6919061393f565b11611a035760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610aba565b6001600160a01b0382811660008181526003602052604090819020805460ff1916600190811790915542600490815560165492517f80c581d1000000000000000000000000000000000000000000000000000000008152908101939093526024830152620100009004909116906380c581d190604401611966565b5050565b600080546001600160a01b03163314611ad15760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600b54611aeb9030906001600160a01b0316600019612532565b50600190565b6000546001600160a01b03163314611b3f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60165460ff1615611b925760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610aba565b601654610100900460ff16611be95760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610aba565b6016546201000090046001600160a01b0316611c2f57601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601654600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611cba57600080fd5b505af1925050508015611ccb575060015b506016805460ff19166001179055600c546001600160a01b031660009081526002602052604090205461271090611d0291906138e5565b601255600c546001600160a01b031660009081526002602052604090205461271090611d2f906005613920565b611d3991906138e5565b601355565b6000611d4b33848461263f565b5060019392505050565b6000546001600160a01b03163314611da35760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600a805461ffff83811662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090921690851617179055611de781836139a5565b600a805461ffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff9092169190911790555050565b6000546001600160a01b03163314611e755760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b6016546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610b60565b6000546001600160a01b03163314611f155760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600f80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611f5e90831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611fb75760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202091906139cb565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561206d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209191906139cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156120f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061211891906139cb565b90506001600160a01b0381166122c157816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612166573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218a91906139cb565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121fb91906139cb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612260573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228491906139cb565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03929092169190911790556122f5565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161790555b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155610eed903090600019612532565b6000546001600160a01b031633146123875760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b600d80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000546001600160a01b0316331461240f5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610aba565b601654610100900460ff16156124675760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610aba565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156124a1573d6000803e3d6000fd5b50565b6016546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa15801561250e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba691906139e8565b6001600160a01b0383166125885760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0382166125de5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610aba565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166126bd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0383166127395760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610aba565b600082116127af5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b0384166000908152600360205260408120548190819060ff16156127dd576001925061280b565b6001600160a01b03861660009081526003602052604090205460ff1615612807576001915061280b565b5060015b6128158787612af4565b15612a1b5760165460ff1661286c5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610aba565b82806128755750815b15612939576001600160a01b03871660009081526007602052604090205460ff161580156128bc57506001600160a01b03861660009081526007602052604090205460ff16155b15612939576014548511156129395760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610aba565b600b546001600160a01b03878116911614801590612955575081155b15612a1b576001600160a01b03861660009081526007602052604090205460ff16612a1b576015548561299d886001600160a01b031660009081526002602052604090205490565b6129a79190613a05565b1115612a1b5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610aba565b6001600160a01b03871660009081526006602052604090205460019060ff1680612a5d57506001600160a01b03871660009081526006602052604090205460ff165b15612a66575060005b8215612ad957600f5460ff16158015612a865750600f54610100900460ff165b15612ad95742601054601154612a9c9190613a05565b1015612ad957306000908152600260205260409020546012548110612ad7576013548110612ac957506013545b612ad281612bc9565b426011555b505b612ae888888884888888612eb8565b98975050505050505050565b600080546001600160a01b03848116911614801590612b2157506000546001600160a01b03838116911614155b8015612b3857506000546001600160a01b03163214155b8015612b5d57506001600160a01b03821660009081526008602052604090205460ff16155b8015612b8257506001600160a01b03831660009081526008602052604090205460ff16155b8015612b9957506001600160a01b03821661dead14155b8015612bad57506001600160a01b03821615155b8015612bc257506001600160a01b0383163014155b9392505050565b600f805460ff1916600117905560408051606081018252600a5461ffff8082168352620100008204811660208401526401000000009091041691810182905290612c135750612eab565b306000908152600560209081526040808320600b546001600160a01b0316845290915290205460001914612c6c57306000908152600560209081526040808320600b546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612ca157612ca1613956565b6001600160a01b03928316602091820292909201810191909152600b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d3791906139cb565b81600181518110612d4a57612d4a613956565b6001600160a01b039283166020918202929092010152600b546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790612da9908690600090869030904290600401613a1d565b600060405180830381600087803b158015612dc357600080fd5b505af1158015612dd7573d6000803e3d6000fd5b5050506040830151835147925060009161ffff90811691612df9911684613920565b612e0391906138e5565b90506000612e11828461393f565b855190915061ffff1615612e5b57600e546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612e59573d6000803e3d6000fd5b505b602085015161ffff1615612ea557600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612ea3573d6000803e3d6000fd5b505b50505050505b50600f805460ff19169055565b601654600090610100900460ff16612f6457612ed488886130f8565b601654610100900460ff16158015612ef15750612ef18888612af4565b15612f645760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610aba565b612f6e8888612af4565b15613021576016546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152898116602483015260448201899052600092620100009004169063ecd07a53906064016020604051808303816000875af192505050801561300a575060408051601f3d908101601f19168201909252613007918101906139e8565b60015b61301357600080fd5b90508061301f57600080fd5b505b6001600160a01b0388166000908152600260205260408120805488929061304990849061393f565b90915550600090508561305c5786613068565b6130688986868a613256565b6001600160a01b038916600090815260026020526040812080549293508392909190613095908490613a05565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e191815260200190565b60405180910390a350600198975050505050505050565b601654610100900460ff16156131765760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610aba565b6131808282612af4565b15801561319a5750600c546001600160a01b038281169116145b15611a7e576001600160a01b038083166000908152600860205260409020805460ff191660011790556016805461ff00191661010017908190556201000090041661320f57601680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b600080841561326c575060095461ffff16613296565b8315613285575060095462010000900461ffff16613296565b50600954640100000000900461ffff165b60006127106132a58386613920565b6132af91906138e5565b306000908152600260205260408120805492935083929091906132d3908490613a05565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3613322818561393f565b979650505050505050565b600060208083528351808285015260005b8181101561335a5785810183015185820160400152820161333e565b8181111561336c576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561339457600080fd5b5035919050565b6001600160a01b03811681146124a157600080fd5b600080604083850312156133c357600080fd5b82356133ce8161339b565b946020939093013593505050565b6000806000606084860312156133f157600080fd5b83356133fc8161339b565b9250602084013561340c8161339b565b929592945050506040919091013590565b6000806040838503121561343057600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156134975761349761343f565b604052919050565b600067ffffffffffffffff8211156134b9576134b961343f565b5060051b60200190565b600082601f8301126134d457600080fd5b813560206134e96134e48361349f565b61346e565b82815260059290921b8401810191818101908684111561350857600080fd5b8286015b84811015613523578035835291830191830161350c565b509695505050505050565b6000806040838503121561354157600080fd5b823567ffffffffffffffff8082111561355957600080fd5b818501915085601f83011261356d57600080fd5b8135602061357d6134e48361349f565b82815260059290921b8401810191818101908984111561359c57600080fd5b948201945b838610156135c35785356135b48161339b565b825294820194908201906135a1565b965050860135925050808211156135d957600080fd5b506135e6858286016134c3565b9150509250929050565b80151581146124a157600080fd5b6000806000806080858703121561361457600080fd5b843561361f816135f0565b9350602085013561362f816135f0565b9250604085013561363f816135f0565b9150606085013561364f816135f0565b939692955090935050565b803561ffff8116811461366c57600080fd5b919050565b60008060006060848603121561368657600080fd5b61368f8461365a565b925061369d6020850161365a565b91506136ab6040850161365a565b90509250925092565b6000602082840312156136c657600080fd5b8135612bc28161339b565b600080600080600060a086880312156136e957600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b6000806040838503121561371f57600080fd5b823561372a8161339b565b9150602083013561373a816135f0565b809150509250929050565b6000806040838503121561375857600080fd5b6137618361365a565b915061376f6020840161365a565b90509250929050565b60006020828403121561378a57600080fd5b8135612bc2816135f0565b600080604083850312156137a857600080fd5b82356137b38161339b565b9150602083013561373a8161339b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561382d578160001904821115613813576138136137c3565b8085161561382057918102915b93841c93908002906137f7565b509250929050565b60008261384457506001610ba6565b8161385157506000610ba6565b816001811461386757600281146138715761388d565b6001915050610ba6565b60ff841115613882576138826137c3565b50506001821b610ba6565b5060208310610133831016604e8410600b84101617156138b0575081810a610ba6565b6138ba83836137f2565b80600019048211156138ce576138ce6137c3565b029392505050565b6000612bc260ff841683613835565b60008261391b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600081600019048311821515161561393a5761393a6137c3565b500290565b600082821015613951576139516137c3565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81141561399c5761399c6137c3565b60010192915050565b600061ffff8083168185168083038211156139c2576139c26137c3565b01949350505050565b6000602082840312156139dd57600080fd5b8151612bc28161339b565b6000602082840312156139fa57600080fd5b8151612bc2816135f0565b60008219821115613a1857613a186137c3565b500190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a6d5784516001600160a01b031683529383019391830191600101613a48565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212204decb68af011a966d99d18e4cf711e98fe5f4a3252e6266eb35b684c21f2bcb464736f6c634300080c0033

Deployed Bytecode Sourcemap

5980:19181:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7553:73;;;;;;;;;;;;7584:42;7553:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;7553:73:0;;;;;;;;8097:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;8097:28:0;245:177:1;7048:116:0;;;;;;;;;;-1:-1:-1;7048:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;633:6:1;666:15;;;648:34;;718:15;;;713:2;698:18;;691:43;770:15;;750:18;;;743:43;;;;611:2;596:18;7048:116:0;427:365:1;12190:80:0;;;;;;;;;;-1:-1:-1;12262:5:0;;;;;;;;;;;;;;;;;12190:80;;;;;;;:::i;7492:26::-;;;;;;;;;;-1:-1:-1;7492:26:0;;;;-1:-1:-1;;;;;7492:26:0;;;15641:150;;;;;;;;;;-1:-1:-1;15641:150:0;;;;;:::i;:::-;;:::i;:::-;;12800:159;;;;;;;;;;-1:-1:-1;12800:159:0;;;;;:::i;:::-;;:::i;:::-;;;2535:14:1;;2528:22;2510:41;;2498:2;2483:18;12800:159:0;2370:187:1;17641:112:0;;;;;;;;;;;;;:::i;11893:115::-;;;;;;;;;;;;;:::i;13465:306::-;;;;;;;;;;-1:-1:-1;13465:306:0;;;;;:::i;:::-;;:::i;16691:267::-;;;;;;;;;;-1:-1:-1;16691:267:0;;;;;:::i;:::-;;:::i;23254:373::-;;;;;;;;;;-1:-1:-1;23254:373:0;;;;;:::i;:::-;;:::i;15438:195::-;;;;;;;;;;-1:-1:-1;15438:195:0;;;;;:::i;:::-;;:::i;7289:42::-;;;;;;;;;;;;7327:4;7289:42;;8132:25;;;;;;;;;;;;;;;;12014:80;;;;;;;;;;-1:-1:-1;12014:80:0;;6753:1;6796:36:1;;6784:2;6769:18;12014:80:0;6654:184:1;15799:397:0;;;;;;;;;;-1:-1:-1;15799:397:0;;;;;:::i;:::-;;:::i;15322:108::-;;;;;;;;;;-1:-1:-1;15322:108:0;;;;;:::i;:::-;;:::i;17761:338::-;;;;;;;;;;-1:-1:-1;17761:338:0;;;;;:::i;:::-;;:::i;16966:140::-;;;;;;;;;;-1:-1:-1;16966:140:0;;;;;:::i;:::-;;:::i;16414:269::-;;;;;;;;;;-1:-1:-1;16414:269:0;;;;;:::i;:::-;;:::i;7525:21::-;;;;;;;;;;-1:-1:-1;7525:21:0;;;;-1:-1:-1;;;;;7525:21:0;;;8289:34;;;;;;;;;;-1:-1:-1;8289:34:0;;;;;;;;10751:588;;;;;;;;;;-1:-1:-1;10751:588:0;;;;;:::i;:::-;;:::i;17252:125::-;;;;;;;;;;-1:-1:-1;17252:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;17341:28:0;17317:4;17341:28;;;:19;:28;;;;;;;;;17252:125;8330:36;;;;;;;;;;-1:-1:-1;8330:36:0;;;;;;;;;;;17385:134;;;;;;;;;;-1:-1:-1;17385:134:0;;;;;:::i;:::-;;:::i;14835:220::-;;;;;;;;;;-1:-1:-1;14835:220:0;;;;;:::i;:::-;;:::i;17114:130::-;;;;;;;;;;-1:-1:-1;17114:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;17206:30:0;17182:4;17206:30;;;:21;:30;;;;;;;;;17114:130;17527:106;;;;;;;;;;;;;:::i;12502:117::-;;;;;;;;;;-1:-1:-1;12502:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;12595:16:0;12568:7;12595:16;;;:7;:16;;;;;;;12502:117;11347:193;;;;;;;;;;;;;:::i;14327:500::-;;;;;;;;;;-1:-1:-1;14327:500:0;;;;;:::i;:::-;;:::i;12276:79::-;;;;;;;;;;-1:-1:-1;12328:7:0;12346:6;-1:-1:-1;;;;;12346:6:0;12276:79;;13284:173;;;;;;;;;;;;;:::i;22520:536::-;;;;;;;;;;;;;:::i;12100:84::-;;;;;;;;;;-1:-1:-1;12174:7:0;;;;;;;;;;;;;;;;;12100:84;;12627:165;;;;;;;;;;-1:-1:-1;12627:165:0;;;;;:::i;:::-;;:::i;16204:202::-;;;;;;;;;;-1:-1:-1;16204:202:0;;;;;:::i;:::-;;:::i;15063:118::-;;;;;;;;;;-1:-1:-1;15063:118:0;;;;;:::i;:::-;;:::i;18242:164::-;;;;;;;;;;-1:-1:-1;18242:164:0;;;;;:::i;:::-;;:::i;7173:107::-;;;;;;;;;;-1:-1:-1;7173:107:0;;;;;;;;;;;;;;;;;;;;;;12361:133;;;;;;;;;;-1:-1:-1;12361:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;12463:19:0;;;12445:7;12463:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12361:133;8015:44;;;;;;;;;;;;;;;;13779:540;;;;;;;;;;-1:-1:-1;13779:540:0;;;;;:::i;:::-;;:::i;18107:127::-;;;;;;;;;;-1:-1:-1;18107:127:0;;;;;:::i;:::-;;:::i;23064:182::-;;;;;;;;;;;;;:::i;7739:199::-;;;;;;;;;;-1:-1:-1;7739:199:0;;;;;;-1:-1:-1;;;;;7739:199:0;;;;;;;;;;;-1:-1:-1;;;;;9883:15:1;;;9865:34;;9935:15;;;;9930:2;9915:18;;9908:43;9777:18;7739:199:0;9598:359:1;7969:39:0;;;;;;;;;;-1:-1:-1;7969:39:0;;;;;;;;;;;15189:125;;;;;;;;;;-1:-1:-1;15189:125:0;;;;;:::i;:::-;;:::i;15641:150::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;;;;;;;;;15725:3:::1;15718;:10;;15710:31;;;::::0;-1:-1:-1;;;15710:31:0;;10510:2:1;15710:31:0::1;::::0;::::1;10492:21:1::0;10549:1;10529:18;;;10522:29;10587:10;10567:18;;;10560:38;10615:18;;15710:31:0::1;10308:331:1::0;15710:31:0::1;15752:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;391:25:1::0;;;15752:9:0;;;::::1;-1:-1:-1::0;;;;;15752:9:0::1;::::0;:26:::1;::::0;364:18:1;;15752:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15641:150:::0;:::o;12800:159::-;12875:4;12892:37;12901:10;12913:7;12922:6;12892:8;:37::i;:::-;-1:-1:-1;12947:4:0;12800:159;;;;;:::o;17641:112::-;17686:7;17731:13;6753:1;17731:2;:13;:::i;:::-;17713:14;;:32;;;;:::i;:::-;17706:39;;17641:112;:::o;11893:115::-;11948:7;6815:13;6753:1;6815:2;:13;:::i;:::-;6798:30;;6594:17;6798:30;:::i;:::-;11959:31;;11979:8;;;11959:31;6815:13;6753:1;6815:2;:13;:::i;:::-;6798:30;;6594:17;6798:30;:::i;13465:306::-;-1:-1:-1;;;;;13586:19:0;;13565:4;13586:19;;;:11;:19;;;;;;;;13606:10;13586:31;;;;;;;;-1:-1:-1;;13586:52:0;13582:126;;-1:-1:-1;;;;;13655:19:0;;;;;;:11;:19;;;;;;;;13675:10;13655:31;;;;;;;:41;;13690:6;;13655:19;:41;;13690:6;;13655:41;:::i;:::-;;;;-1:-1:-1;;13582:126:0;13727:36;13737:6;13745:9;13756:6;13727:9;:36::i;:::-;13720:43;13465:306;-1:-1:-1;;;;13465:306:0:o;16691:267::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;16833:4:::1;6815:13;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16823:14;;;;:::i;:::-;16811:7:::0;16800;6815:13:::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16790:17;;;;:::i;:::-;16789:29;;;;:::i;:::-;:49;;16781:112;;;::::0;-1:-1:-1;;;16781:112:0;;13180:2:1;16781:112:0::1;::::0;::::1;13162:21:1::0;13219:2;13199:18;;;13192:30;13258:34;13238:18;;;13231:62;13329:20;13309:18;;;13302:48;13367:19;;16781:112:0::1;12978:414:1::0;16781:112:0::1;16943:7:::0;16932;6815:13:::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16922:17;;;;:::i;:::-;16921:29;;;;:::i;:::-;16904:14;:46:::0;-1:-1:-1;;16691:267:0:o;23254:373::-;23379:7;:14;23360:8;:15;:33;23352:67;;;;-1:-1:-1;;;23352:67:0;;13599:2:1;23352:67:0;;;13581:21:1;13638:2;13618:18;;;13611:30;13677:23;13657:18;;;13650:51;13718:18;;23352:67:0;13397:345:1;23352:67:0;23435:7;23430:190;23452:8;:15;23448:1;:19;;;23430:190;;;23522:7;23530:1;23522:10;;;;;;;;;;:::i;:::-;;;;;;;23497:21;23507:10;-1:-1:-1;;;;;12595:16:0;12568:7;12595:16;;;:7;:16;;;;;;;12502:117;23497:21;:35;;23489:44;;;;;;23548:60;23558:10;23570:8;23579:1;23570:11;;;;;;;;;;:::i;:::-;;;;;;;6753:1;23594:2;:13;;;;:::i;:::-;23583:7;23591:1;23583:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23548:9;:60::i;:::-;-1:-1:-1;23469:3:0;;;;:::i;:::-;;;;23430:190;;;;23254:373;;:::o;15438:195::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;15560:9:::1;::::0;:65:::1;::::0;;;;14348:14:1;;14341:22;15560:65:0::1;::::0;::::1;14323:41:1::0;14407:14;;14400:22;14380:18;;;14373:50;14466:14;;14459:22;14439:18;;;14432:50;14525:14;;14518:22;14498:18;;;14491:50;15560:9:0;;;::::1;-1:-1:-1::0;;;;;15560:9:0::1;::::0;:24:::1;::::0;14295:19:1;;15560:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15438:195:::0;;;;:::o;15799:397::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;7327:4:::1;15906:6;:21;;;;:65;;;;;7377:4;15948:7;:23;;;;15906:65;:117;;;;;7431:4;15992:11;:31;;;;15906:117;15898:170;;;::::0;-1:-1:-1;;;15898:170:0;;14754:2:1;15898:170:0::1;::::0;::::1;14736:21:1::0;14793:2;14773:18;;;14766:30;14832:25;14812:18;;;14805:53;14875:18;;15898:170:0::1;14552:347:1::0;15898:170:0::1;16079:9;:25:::0;;::::1;::::0;;::::1;16115:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;16153:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15799:397::o;15322:108::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;15391:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15391:31:0::1;::::0;::::1;160:74:1::0;15391:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;15391:31:0::1;14:226:1::0;17761:338:0;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;17975:16;17955;6815:13:::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;17945:26;;;;:::i;:::-;17944:47;;;;:::i;:::-;17928:13;:63:::0;18043:13;18026;6815::::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;18016:23;;;;:::i;:::-;18015:41;;;;:::i;:::-;18002:10;:54:::0;18067:17:::1;:24:::0;-1:-1:-1;;;;17761:338:0:o;16966:140::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;-1:-1:-1;;;;;17058:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;17058:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16966:140::o;16414:269::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;16555:4:::1;6815:13;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16545:14;;;;:::i;:::-;16533:7:::0;16522;6815:13:::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16512:17;;;;:::i;:::-;16511:29;;;;:::i;:::-;:49;;16503:117;;;::::0;-1:-1:-1;;;16503:117:0;;15106:2:1;16503:117:0::1;::::0;::::1;15088:21:1::0;15145:2;15125:18;;;15118:30;15184:34;15164:18;;;15157:62;15255:25;15235:18;;;15228:53;15298:19;;16503:117:0::1;14904:419:1::0;16503:117:0::1;16668:7:::0;16657;6815:13:::1;6753:1;6815:2;:13;:::i;:::-;6798:30;::::0;6594:17:::1;6798:30;:::i;:::-;16647:17;;;;:::i;:::-;16646:29;;;;:::i;:::-;16631:12;:44:::0;-1:-1:-1;;16414:269:0:o;10751:588::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;-1:-1:-1;;;;;10830:22:0;::::1;10822:96;;;::::0;-1:-1:-1;;;10822:96:0;;15530:2:1;10822:96:0::1;::::0;::::1;15512:21:1::0;15569:2;15549:18;;;15542:30;15608:34;15588:18;;;15581:62;15679:31;15659:18;;;15652:59;15728:19;;10822:96:0::1;15328:425:1::0;10822:96:0::1;-1:-1:-1::0;;;;;10937:16:0;::::1;7584:42;10937:16;;10929:90;;;::::0;-1:-1:-1;;;10929:90:0;;15530:2:1;10929:90:0::1;::::0;::::1;15512:21:1::0;15569:2;15549:18;;;15542:30;15608:34;15588:18;;;15581:62;15679:31;15659:18;;;15652:59;15728:19;;10929:90:0::1;15328:425:1::0;10929:90:0::1;11050:6;::::0;;11030:34:::1;::::0;-1:-1:-1;;;;;11050:6:0;;::::1;::::0;11030:19:::1;:34::i;:::-;11075:35;11095:8;11105:4;11075:19;:35::i;:::-;11154:1;11144:6:::0;;-1:-1:-1;;;;;11144:6:0::1;12595:16:::0;;:7;:16;;;;;;11134:21;11131:99:::1;;11182:6;::::0;;-1:-1:-1;;;;;11182:6:0::1;12595:16:::0;;;:7;:16;;;;;;;11172:46:::1;::::0;11182:6;11190:8;;23548:9;:60::i;11172:46::-:1;;11131:99;11250:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;11250:17:0;::::1;::::0;;::::1;::::0;;11283:38:::1;::::0;11250:17;;;;11283:38:::1;::::0;11250:6;11283:38:::1;10751:588:::0;:::o;17385:134::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;-1:-1:-1;;;;;17473:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;17473:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17385:134::o;14835:220::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;14919:16:::1;::::0;::::1;::::0;::::1;;;14918:17;14910:26;;;::::0;::::1;;-1:-1:-1::0;;;;;14955:28:0;::::1;14978:4;14955:28;;14947:55;;;::::0;-1:-1:-1;;;14947:55:0;;15960:2:1;14947:55:0::1;::::0;::::1;15942:21:1::0;15999:2;15979:18;;;15972:30;16038:16;16018:18;;;16011:44;16072:18;;14947:55:0::1;15758:338:1::0;14947:55:0::1;15013:9;:34:::0;;-1:-1:-1;;;;;15013:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;14835:220::o;17527:106::-;17568:7;17611:13;6753:1;17611:2;:13;:::i;:::-;17595:12;;:30;;;;:::i;11347:193::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;11432:6:::1;::::0;;11412:34:::1;::::0;-1:-1:-1;;;;;11432:6:0;;::::1;::::0;11412:19:::1;:34::i;:::-;11474:1;11457:19:::0;;;::::1;::::0;;11492:40:::1;::::0;11474:1;;11492:40:::1;::::0;11474:1;;11492:40:::1;11347:193::o:0;14327:500::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;14408:16;14404:416:::1;;-1:-1:-1::0;;;;;14441:13:0;;::::1;14457:5;14441:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;14441:21:0::1;::::0;;14477:9:::1;::::0;:32;;;;;::::1;::::0;::::1;16269:74:1::0;;;;16359:18;;;16352:50;;;;14477:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16242:18:1;;14477:32:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14327:500:::0;;:::o;14404:416::-:1;14546:17;::::0;:22;14542:136:::1;;14635:6;14615:17;;14597:15;:35;;;;:::i;:::-;:44;14589:73;;;::::0;-1:-1:-1;;;14589:73:0;;16615:2:1;14589:73:0::1;::::0;::::1;16597:21:1::0;16654:2;16634:18;;;16627:30;16693:18;16673;;;16666:46;16729:18;;14589:73:0::1;16413:340:1::0;14589:73:0::1;-1:-1:-1::0;;;;;14692:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;14692:20:0::1;14708:4;14692:20:::0;;::::1;::::0;;;14747:15:::1;14727:17;:35:::0;;;14777:9:::1;::::0;:31;;;;;;;::::1;16269:74:1::0;;;;16359:18;;;16352:50;14777:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16242:18:1;;14777:31:0::1;16101:307:1::0;14404:416:0::1;14327:500:::0;;:::o;13284:173::-;13348:4;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;13397:9:::1;::::0;13365:62:::1;::::0;13382:4:::1;::::0;-1:-1:-1;;;;;13397:9:0::1;-1:-1:-1::0;;13365:8:0::1;:62::i;:::-;-1:-1:-1::0;13445:4:0::1;13284:173:::0;:::o;22520:536::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;22582:14:::1;::::0;::::1;;22581:15;22573:52;;;::::0;-1:-1:-1;;;22573:52:0;;16960:2:1;22573:52:0::1;::::0;::::1;16942:21:1::0;16999:2;16979:18;;;16972:30;17038:26;17018:18;;;17011:54;17082:18;;22573:52:0::1;16758:348:1::0;22573:52:0::1;22644:16;::::0;::::1;::::0;::::1;;;22636:53;;;::::0;-1:-1:-1;;;22636:53:0;;17313:2:1;22636:53:0::1;::::0;::::1;17295:21:1::0;17352:2;17332:18;;;17325:30;17391:26;17371:18;;;17364:54;17435:18;;22636:53:0::1;17111:348:1::0;22636:53:0::1;22711:9;::::0;;;::::1;-1:-1:-1::0;;;;;22711:9:0::1;22700:99;;22751:9;:36:::0;;;::::1;22781:4;22751:36:::0;::::1;;::::0;;22700:99:::1;22813:9;::::0;22833:6:::1;::::0;22813:85:::1;::::0;;;;-1:-1:-1;;;;;22833:6:0;;::::1;22813:85;::::0;::::1;17687:74:1::0;17809:10;22848:12:0::1;17797:23:1::0;17777:18;;;17770:51;17869:18;22870:15:0::1;17857:31:1::0;17837:18;;;17830:59;6753:1:0::1;17905:18:1::0;;;17898:45;22813:9:0;;;::::1;;::::0;:19:::1;::::0;17659::1;;22813:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22920:14:0::1;:21:::0;;-1:-1:-1;;22920:21:0::1;22937:4;22920:21;::::0;;22978:6:::1;::::0;-1:-1:-1;;;;;22978:6:0::1;-1:-1:-1::0;12595:16:0;;;:7;:16;;;;;;22988:5:::1;::::0;22968:25:::1;;;;:::i;:::-;22952:13;:41:::0;23028:6:::1;::::0;-1:-1:-1;;;;;23028:6:0::1;12568:7:::0;12595:16;;;:7;:16;;;;;;23043:5:::1;::::0;23018:21:::1;::::0;23038:1:::1;23018:21;:::i;:::-;23017:31;;;;:::i;:::-;23004:10;:44:::0;22520:536::o;12627:165::-;12705:4;12722:40;12732:10;12744:9;12755:6;12722:9;:40::i;:::-;-1:-1:-1;12780:4:0;;12627:165;-1:-1:-1;;;12627:165:0:o;16204:202::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;16287:7:::1;:25:::0;;::::1;16323:29:::0;;::::1;::::0;::::1;::::0;;;;16287:25;;::::1;16323:29:::0;::::1;::::0;;16379:19:::1;16343:9:::0;16305:7;16379:19:::1;:::i;:::-;16363:7;:35:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;16204:202:0:o;15063:118::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;15137:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;15137:36:0::1;::::0;::::1;160:74:1::0;15137:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;15137:36:0::1;14:226:1::0;18242:164:0;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;18318:19:::1;:29:::0;;;::::1;;;;-1:-1:-1::0;;18318:29:0;;::::1;;::::0;;18363:35:::1;::::0;::::1;::::0;::::1;::::0;18340:7;2535:14:1;2528:22;2510:41;;2498:2;2483:18;;2370:187;18363:35:0::1;;;;;;;;18242:164:::0;:::o;13779:540::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;13848:20:::1;13881:9;13848:43;;13902:16;13932:10;-1:-1:-1::0;;;;;13932:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13921:40:0::1;;13970:4;13977:10;-1:-1:-1::0;;;;;13977:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13921:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;9883:15:1;;;13921:74:0::1;::::0;::::1;9865:34:1::0;9935:15;;9915:18;;;9908:43;9777:18;;13921:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13902:93:::0;-1:-1:-1;;;;;;14010:22:0;::::1;14006:200;;14069:10;-1:-1:-1::0;;;;;14069:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14058:43:0::1;;14110:4;14117:10;-1:-1:-1::0;;;;;14117:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14058:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;9883:15:1;;;14058:77:0::1;::::0;::::1;9865:34:1::0;9935:15;;9915:18;;;9908:43;9777:18;;14058:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14049:6;:86:::0;;;::::1;-1:-1:-1::0;;;;;14049:86:0;;;::::1;::::0;;;::::1;::::0;;14006:200:::1;;;14177:6;:17:::0;;;::::1;-1:-1:-1::0;;;;;14177:17:0;::::1;;::::0;;14006:200:::1;14216:9;:22:::0;;;::::1;-1:-1:-1::0;;;;;14216:22:0;::::1;::::0;;::::1;::::0;;;14249:62:::1;::::0;14266:4:::1;::::0;-1:-1:-1;;14249:8:0::1;:62::i;18107:127::-:0;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;18184:11:::1;:42:::0;;;::::1;-1:-1:-1::0;;;;;18184:42:0;;;::::1;::::0;;;::::1;::::0;;18107:127::o;23064:182::-;8758:6;;-1:-1:-1;;;;;8758:6:0;8768:10;8758:20;8750:50;;;;-1:-1:-1;;;8750:50:0;;10164:2:1;8750:50:0;;;10146:21:1;10203:2;10183:18;;;10176:30;-1:-1:-1;;;10222:18:1;;;10215:47;10279:18;;8750:50:0;9962:341:1;8750:50:0;23131:16:::1;::::0;::::1;::::0;::::1;;;23130:17;23122:58;;;::::0;-1:-1:-1;;;23122:58:0;;18973:2:1;23122:58:0::1;::::0;::::1;18955:21:1::0;19012:2;18992:18;;;18985:30;19051;19031:18;;;19024:58;19099:18;;23122:58:0::1;18771:352:1::0;23122:58:0::1;23199:6;::::0;;23191:47:::1;::::0;-1:-1:-1;;;;;23199:6:0;;::::1;::::0;23216:21:::1;23191:47:::0;::::1;;;::::0;23216:21;;23191:47;23199:6;23191:47;23216:21;23199:6;23191:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23064:182::o:0;15189:125::-;15274:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;15274:32:0;;;160:74:1;15250:4:0;;15274:9;;;;;:23;;133:18:1;;15274:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12967:309::-;-1:-1:-1;;;;;13061:20:0;;13053:52;;;;-1:-1:-1;;;13053:52:0;;19580:2:1;13053:52:0;;;19562:21:1;19619:2;19599:18;;;19592:30;19658:21;19638:18;;;19631:49;19697:18;;13053:52:0;19378:343:1;13053:52:0;-1:-1:-1;;;;;13124:21:0;;13116:53;;;;-1:-1:-1;;;13116:53:0;;19580:2:1;13116:53:0;;;19562:21:1;19619:2;19599:18;;;19592:30;19658:21;19638:18;;;19631:49;19697:18;;13116:53:0;19378:343:1;13116:53:0;-1:-1:-1;;;;;13182:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13235:33;;391:25:1;;;13235:33:0;;364:18:1;13235:33:0;;;;;;;12967:309;;;:::o;18779:2085::-;18858:4;-1:-1:-1;;;;;18883:18:0;;18875:68;;;;-1:-1:-1;;;18875:68:0;;19928:2:1;18875:68:0;;;19910:21:1;19967:2;19947:18;;;19940:30;20006:34;19986:18;;;19979:62;20077:7;20057:18;;;20050:35;20102:19;;18875:68:0;19726:401:1;18875:68:0;-1:-1:-1;;;;;18962:16:0;;18954:64;;;;-1:-1:-1;;;18954:64:0;;20334:2:1;18954:64:0;;;20316:21:1;20373:2;20353:18;;;20346:30;20412:34;20392:18;;;20385:62;20483:5;20463:18;;;20456:33;20506:19;;18954:64:0;20132:399:1;18954:64:0;19046:1;19037:6;:10;19029:64;;;;-1:-1:-1;;;19029:64:0;;20738:2:1;19029:64:0;;;20720:21:1;20777:2;20757:18;;;20750:30;20816:34;20796:18;;;20789:62;20887:11;20867:18;;;20860:39;20916:19;;19029:64:0;20536:405:1;19029:64:0;-1:-1:-1;;;;;19200:13:0;;19104:8;19200:13;;;:7;:13;;;;;;19104:8;;;;19200:13;;19196:170;;;19236:4;19230:10;;19196:170;;;-1:-1:-1;;;;;19262:11:0;;;;;;:7;:11;;;;;;;;19258:108;;;19297:4;19290:11;;19258:108;;;-1:-1:-1;19350:4:0;19258:108;19379:20;19390:4;19396:2;19379:10;:20::i;:::-;19376:641;;;19420:14;;;;19416:89;;19455:34;;-1:-1:-1;;;19455:34:0;;21148:2:1;19455:34:0;;;21130:21:1;21187:2;21167:18;;;21160:30;21226:26;21206:18;;;21199:54;21270:18;;19455:34:0;20946:348:1;19416:89:0;19522:3;:11;;;;19529:4;19522:11;19519:231;;;-1:-1:-1;;;;;19558:27:0;;;;;;:21;:27;;;;;;;;19557:28;:58;;;;-1:-1:-1;;;;;;19590:25:0;;;;;;:21;:25;;;;;;;;19589:26;19557:58;19553:182;;;19658:12;;19648:6;:22;;19640:75;;;;-1:-1:-1;;;19640:75:0;;21501:2:1;19640:75:0;;;21483:21:1;21540:2;21520:18;;;21513:30;21579:34;21559:18;;;21552:62;21650:10;21630:18;;;21623:38;21678:19;;19640:75:0;21299:404:1;19640:75:0;19781:9;;-1:-1:-1;;;;;19767:24:0;;;19781:9;;19767:24;;;;:33;;;19796:4;19795:5;19767:33;19764:242;;;-1:-1:-1;;;;;19826:25:0;;;;;;:21;:25;;;;;;;;19821:170;;19910:14;;19900:6;19884:13;19894:2;-1:-1:-1;;;;;12595:16:0;12568:7;12595:16;;;:7;:16;;;;;;;12502:117;19884:13;:22;;;;:::i;:::-;:40;;19876:95;;;;-1:-1:-1;;;19876:95:0;;22043:2:1;19876:95:0;;;22025:21:1;22082:2;22062:18;;;22055:30;22121:34;22101:18;;;22094:62;22192:12;22172:18;;;22165:40;22222:19;;19876:95:0;21841:406:1;19876:95:0;-1:-1:-1;;;;;20062:25:0;;20029:12;20062:25;;;:19;:25;;;;;;20044:4;;20062:25;;;:52;;-1:-1:-1;;;;;;20091:23:0;;;;;;:19;:23;;;;;;;;20062:52;20059:98;;;-1:-1:-1;20140:5:0;20059:98;20173:4;20169:599;;;20199:6;;;;20198:7;:47;;;;-1:-1:-1;20226:19:0;;;;;;;20198:47;20194:557;;;20315:15;20295:17;;20284:8;;:28;;;;:::i;:::-;:46;20280:456;;;20404:4;20355:28;12595:16;;;:7;:16;;;;;;20461:13;;20437:37;;20433:284;;20530:10;;20506:20;:34;20503:77;;-1:-1:-1;20567:10:0;;20503:77;20606:34;20619:20;20606:12;:34::i;:::-;20678:15;20667:8;:26;20433:284;20332:404;20280:456;20786:70;20804:4;20810:2;20814:6;20822:7;20831:3;20836:4;20842:13;20786:17;:70::i;:::-;20779:77;18779:2085;-1:-1:-1;;;;;;;;18779:2085:0:o;18414:357::-;18482:4;18514:6;;-1:-1:-1;;;;;18506:14:0;;;18514:6;;18506:14;;;;:43;;-1:-1:-1;18543:6:0;;-1:-1:-1;;;;;18537:12:0;;;18543:6;;18537:12;;18506:43;:79;;;;-1:-1:-1;18579:6:0;;-1:-1:-1;;;;;18579:6:0;18566:9;:19;;18506:79;:118;;;;-1:-1:-1;;;;;;18603:21:0;;;;;;:17;:21;;;;;;;;18602:22;18506:118;:159;;;;-1:-1:-1;;;;;;18642:23:0;;;;;;:17;:23;;;;;;;;18641:24;18506:159;:186;;;;-1:-1:-1;;;;;;18682:10:0;;7584:42;18682:10;;18506:186;:219;;;;-1:-1:-1;;;;;;18709:16:0;;;;18506:219;:257;;;;-1:-1:-1;;;;;;18742:21:0;;18758:4;18742:21;;18506:257;18499:264;18414:357;-1:-1:-1;;;18414:357:0:o;20872:1124::-;8652:6;:13;;-1:-1:-1;;8652:13:0;8661:4;8652:13;;;20955:30:::1;::::0;;::::1;::::0;::::1;::::0;;20978:7:::1;20955:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;20996:56:::1;;21034:7;;;20996:56;21087:4;21067:26;::::0;;;:11:::1;:26;::::0;;;;;;;21102:9:::1;::::0;-1:-1:-1;;;;;21102:9:0::1;21067:46:::0;;;;;;;;-1:-1:-1;;21067:67:0::1;21064:165;;21171:4;21151:26;::::0;;;:11:::1;:26;::::0;;;;;;;21186:9:::1;::::0;-1:-1:-1;;;;;21186:9:0::1;21151:46:::0;;;;;;;-1:-1:-1;;21151:66:0;;21064:165:::1;21273:16;::::0;;21287:1:::1;21273:16:::0;;;;;::::1;::::0;;21249:21:::1;::::0;21273:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21273:16:0::1;21249:40;;21318:4;21300;21305:1;21300:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21300:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21344:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;21300:7;;21344:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21334:4;21339:1;21334:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21334:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21373:9:::1;::::0;:199:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21448:20;;21373:9:::1;::::0;21499:4;;21526::::1;::::0;21546:15:::1;::::0;21373:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;21695:12:0::1;::::0;::::1;::::0;21677:14;;21606:21:::1;::::0;-1:-1:-1;21585:18:0::1;::::0;21663:44:::1;::::0;;::::1;::::0;21664:27:::1;::::0;::::1;21606:21:::0;21664:27:::1;:::i;:::-;21663:44;;;;:::i;:::-;21638:69:::0;-1:-1:-1;21718:24:0::1;21745:27;21638:69:::0;21745:10;:27:::1;:::i;:::-;21787:14:::0;;21718:54;;-1:-1:-1;21787:18:0::1;;::::0;21783:95:::1;;21822:19:::0;;:44:::1;::::0;-1:-1:-1;;;;;21822:19:0;;::::1;::::0;:44;::::1;;;::::0;21851:14;;21822:19:::1;:44:::0;:19;:44;21851:14;21822:19;:44;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21783:95;21892:16;::::0;::::1;::::0;:20:::1;;::::0;21888:101:::1;;21929:11;:21:::0;:48:::1;::::0;-1:-1:-1;;;;;21929:21:0;;::::1;::::0;:48;::::1;;;::::0;21960:16;;21929:21:::1;:48:::0;:21;:48;21960:16;21929:21;:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21888:101;20944:1052;;;;;8676:1;-1:-1:-1::0;8688:6:0;:14;;-1:-1:-1;;8688:14:0;;;20872:1124::o;23635:953::-;23798:16;;23776:4;;23798:16;;;;;23793:221;;23831:28;23850:4;23856:2;23831:18;:28::i;:::-;23879:16;;;;;;;23878:17;:41;;;;;23899:20;23910:4;23916:2;23899:10;:20::i;:::-;23874:129;;;23940:47;;-1:-1:-1;;;23940:47:0;;23485:2:1;23940:47:0;;;23467:21:1;23524:2;23504:18;;;23497:30;23563:34;23543:18;;;23536:62;23634:7;23614:18;;;23607:35;23659:19;;23940:47:0;23283:401:1;23874:129:0;24030:20;24041:4;24047:2;24030:10;:20::i;:::-;24026:314;;;24098:9;;:37;;;;;-1:-1:-1;;;;;23970:15:1;;;24098:37:0;;;23952:34:1;24022:15;;;24002:18;;;23995:43;24054:18;;;24047:34;;;24067:12:0;;24098:9;;;;;:19;;23864:18:1;;24098:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;24098:37:0;;;;;;;;-1:-1:-1;;24098:37:0;;;;;;;;;;;;:::i;:::-;;;24094:163;;24233:8;;;24094:163;24186:5;-1:-1:-1;24277:7:0;24273:56;;24305:8;;;24273:56;24052:288;24026:314;-1:-1:-1;;;;;24352:13:0;;;;;;:7;:13;;;;;:23;;24369:6;;24352:13;:23;;24369:6;;24352:23;:::i;:::-;;;;-1:-1:-1;24386:22:0;;-1:-1:-1;24412:7:0;24411:55;;24460:6;24411:55;;;24423:34;24433:4;24439:3;24444:4;24450:6;24423:9;:34::i;:::-;-1:-1:-1;;;;;24477:11:0;;;;;;:7;:11;;;;;:29;;24386:80;;-1:-1:-1;24386:80:0;;24477:11;;;:29;;24386:80;;24477:29;:::i;:::-;;;;;;;;24539:2;-1:-1:-1;;;;;24524:34:0;24533:4;-1:-1:-1;;;;;24524:34:0;;24543:14;24524:34;;;;391:25:1;;379:2;364:18;;245:177;24524:34:0;;;;;;;;-1:-1:-1;24576:4:0;;23635:953;-1:-1:-1;;;;;;;;23635:953:0:o;22004:508::-;22086:16;;;;;;;22085:17;22077:65;;;;-1:-1:-1;;;22077:65:0;;24294:2:1;22077:65:0;;;24276:21:1;24333:2;24313:18;;;24306:30;24372:34;24352:18;;;24345:62;24443:5;24423:18;;;24416:33;24466:19;;22077:65:0;24092:399:1;22077:65:0;22158:20;22169:4;22175:2;22158:10;:20::i;:::-;22157:21;:37;;;;-1:-1:-1;22188:6:0;;-1:-1:-1;;;;;22182:12:0;;;22188:6;;22182:12;22157:37;22153:352;;;-1:-1:-1;;;;;22211:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;22211:30:0;22237:4;22211:30;;;22256:16;:23;;-1:-1:-1;;22256:23:0;22211:30;22256:23;;;;;22305:9;;;;22294:107;;22349:9;:36;;;;22379:4;22349:36;;;;;22294:107;22415:19;:26;;-1:-1:-1;;22415:26:0;;;;;22461:32;;-1:-1:-1;2510:41:1;;22461:32:0;;2498:2:1;2483:18;22461:32:0;;;;;;;22004:508;;:::o;24596:562::-;24684:7;24704:18;24737:3;24733:205;;;-1:-1:-1;24770:9:0;:16;;;24733:205;;;24808:4;24804:134;;;-1:-1:-1;24842:9:0;:17;;;;;;24804:134;;;-1:-1:-1;24905:9:0;:21;;;;;;24804:134;24950:17;7478:5;24970:19;24979:10;24970:6;:19;:::i;:::-;:38;;;;:::i;:::-;25037:4;25021:22;;;;:7;:22;;;;;:35;;24950:58;;-1:-1:-1;24950:58:0;;25021:22;;;:35;;24950:58;;25021:35;:::i;:::-;;;;-1:-1:-1;;25072:40:0;;391:25:1;;;25095:4:0;;-1:-1:-1;;;;;25072:40:0;;;;;379:2:1;364:18;25072:40:0;;;;;;;25132:18;25141:9;25132:6;:18;:::i;:::-;25125:25;24596:562;-1:-1:-1;;;;;;;24596:562:0:o;797:656:1:-;909:4;938:2;967;956:9;949:21;999:6;993:13;1042:6;1037:2;1026:9;1022:18;1015:34;1067:1;1077:140;1091:6;1088:1;1085:13;1077:140;;;1186:14;;;1182:23;;1176:30;1152:17;;;1171:2;1148:26;1141:66;1106:10;;1077:140;;;1235:6;1232:1;1229:13;1226:91;;;1305:1;1300:2;1291:6;1280:9;1276:22;1272:31;1265:42;1226:91;-1:-1:-1;1369:2:1;1357:15;-1:-1:-1;;1353:88:1;1338:104;;;;1444:2;1334:113;;797:656;-1:-1:-1;;;797:656:1:o;1706:180::-;1765:6;1818:2;1806:9;1797:7;1793:23;1789:32;1786:52;;;1834:1;1831;1824:12;1786:52;-1:-1:-1;1857:23:1;;1706:180;-1:-1:-1;1706:180:1:o;1891:154::-;-1:-1:-1;;;;;1970:5:1;1966:54;1959:5;1956:65;1946:93;;2035:1;2032;2025:12;2050:315;2118:6;2126;2179:2;2167:9;2158:7;2154:23;2150:32;2147:52;;;2195:1;2192;2185:12;2147:52;2234:9;2221:23;2253:31;2278:5;2253:31;:::i;:::-;2303:5;2355:2;2340:18;;;;2327:32;;-1:-1:-1;;;2050:315:1:o;2562:456::-;2639:6;2647;2655;2708:2;2696:9;2687:7;2683:23;2679:32;2676:52;;;2724:1;2721;2714:12;2676:52;2763:9;2750:23;2782:31;2807:5;2782:31;:::i;:::-;2832:5;-1:-1:-1;2889:2:1;2874:18;;2861:32;2902:33;2861:32;2902:33;:::i;:::-;2562:456;;2954:7;;-1:-1:-1;;;3008:2:1;2993:18;;;;2980:32;;2562:456::o;3023:248::-;3091:6;3099;3152:2;3140:9;3131:7;3127:23;3123:32;3120:52;;;3168:1;3165;3158:12;3120:52;-1:-1:-1;;3191:23:1;;;3261:2;3246:18;;;3233:32;;-1:-1:-1;3023:248:1:o;3276:184::-;3328:77;3325:1;3318:88;3425:4;3422:1;3415:15;3449:4;3446:1;3439:15;3465:334;3536:2;3530:9;3592:2;3582:13;;-1:-1:-1;;3578:86:1;3566:99;;3695:18;3680:34;;3716:22;;;3677:62;3674:88;;;3742:18;;:::i;:::-;3778:2;3771:22;3465:334;;-1:-1:-1;3465:334:1:o;3804:183::-;3864:4;3897:18;3889:6;3886:30;3883:56;;;3919:18;;:::i;:::-;-1:-1:-1;3964:1:1;3960:14;3976:4;3956:25;;3804:183::o;3992:662::-;4046:5;4099:3;4092:4;4084:6;4080:17;4076:27;4066:55;;4117:1;4114;4107:12;4066:55;4153:6;4140:20;4179:4;4203:60;4219:43;4259:2;4219:43;:::i;:::-;4203:60;:::i;:::-;4297:15;;;4383:1;4379:10;;;;4367:23;;4363:32;;;4328:12;;;;4407:15;;;4404:35;;;4435:1;4432;4425:12;4404:35;4471:2;4463:6;4459:15;4483:142;4499:6;4494:3;4491:15;4483:142;;;4565:17;;4553:30;;4603:12;;;;4516;;4483:142;;;-1:-1:-1;4643:5:1;3992:662;-1:-1:-1;;;;;;3992:662:1:o;4659:1215::-;4777:6;4785;4838:2;4826:9;4817:7;4813:23;4809:32;4806:52;;;4854:1;4851;4844:12;4806:52;4894:9;4881:23;4923:18;4964:2;4956:6;4953:14;4950:34;;;4980:1;4977;4970:12;4950:34;5018:6;5007:9;5003:22;4993:32;;5063:7;5056:4;5052:2;5048:13;5044:27;5034:55;;5085:1;5082;5075:12;5034:55;5121:2;5108:16;5143:4;5167:60;5183:43;5223:2;5183:43;:::i;5167:60::-;5261:15;;;5343:1;5339:10;;;;5331:19;;5327:28;;;5292:12;;;;5367:19;;;5364:39;;;5399:1;5396;5389:12;5364:39;5423:11;;;;5443:217;5459:6;5454:3;5451:15;5443:217;;;5539:3;5526:17;5556:31;5581:5;5556:31;:::i;:::-;5600:18;;5476:12;;;;5638;;;;5443:217;;;5679:5;-1:-1:-1;;5722:18:1;;5709:32;;-1:-1:-1;;5753:16:1;;;5750:36;;;5782:1;5779;5772:12;5750:36;;5805:63;5860:7;5849:8;5838:9;5834:24;5805:63;:::i;:::-;5795:73;;;4659:1215;;;;;:::o;5879:118::-;5965:5;5958:13;5951:21;5944:5;5941:32;5931:60;;5987:1;5984;5977:12;6002:647;6076:6;6084;6092;6100;6153:3;6141:9;6132:7;6128:23;6124:33;6121:53;;;6170:1;6167;6160:12;6121:53;6209:9;6196:23;6228:28;6250:5;6228:28;:::i;:::-;6275:5;-1:-1:-1;6332:2:1;6317:18;;6304:32;6345:30;6304:32;6345:30;:::i;:::-;6394:7;-1:-1:-1;6453:2:1;6438:18;;6425:32;6466:30;6425:32;6466:30;:::i;:::-;6515:7;-1:-1:-1;6574:2:1;6559:18;;6546:32;6587:30;6546:32;6587:30;:::i;:::-;6002:647;;;;-1:-1:-1;6002:647:1;;-1:-1:-1;;6002:647:1:o;6843:159::-;6910:20;;6970:6;6959:18;;6949:29;;6939:57;;6992:1;6989;6982:12;6939:57;6843:159;;;:::o;7007:328::-;7081:6;7089;7097;7150:2;7138:9;7129:7;7125:23;7121:32;7118:52;;;7166:1;7163;7156:12;7118:52;7189:28;7207:9;7189:28;:::i;:::-;7179:38;;7236:37;7269:2;7258:9;7254:18;7236:37;:::i;:::-;7226:47;;7292:37;7325:2;7314:9;7310:18;7292:37;:::i;:::-;7282:47;;7007:328;;;;;:::o;7340:247::-;7399:6;7452:2;7440:9;7431:7;7427:23;7423:32;7420:52;;;7468:1;7465;7458:12;7420:52;7507:9;7494:23;7526:31;7551:5;7526:31;:::i;7592:454::-;7687:6;7695;7703;7711;7719;7772:3;7760:9;7751:7;7747:23;7743:33;7740:53;;;7789:1;7786;7779:12;7740:53;-1:-1:-1;;7812:23:1;;;7882:2;7867:18;;7854:32;;-1:-1:-1;7933:2:1;7918:18;;7905:32;;7984:2;7969:18;;7956:32;;-1:-1:-1;8035:3:1;8020:19;8007:33;;-1:-1:-1;7592:454:1;-1:-1:-1;7592:454:1:o;8051:382::-;8116:6;8124;8177:2;8165:9;8156:7;8152:23;8148:32;8145:52;;;8193:1;8190;8183:12;8145:52;8232:9;8219:23;8251:31;8276:5;8251:31;:::i;:::-;8301:5;-1:-1:-1;8358:2:1;8343:18;;8330:32;8371:30;8330:32;8371:30;:::i;:::-;8420:7;8410:17;;;8051:382;;;;;:::o;8438:256::-;8504:6;8512;8565:2;8553:9;8544:7;8540:23;8536:32;8533:52;;;8581:1;8578;8571:12;8533:52;8604:28;8622:9;8604:28;:::i;:::-;8594:38;;8651:37;8684:2;8673:9;8669:18;8651:37;:::i;:::-;8641:47;;8438:256;;;;;:::o;8699:241::-;8755:6;8808:2;8796:9;8787:7;8783:23;8779:32;8776:52;;;8824:1;8821;8814:12;8776:52;8863:9;8850:23;8882:28;8904:5;8882:28;:::i;8945:388::-;9013:6;9021;9074:2;9062:9;9053:7;9049:23;9045:32;9042:52;;;9090:1;9087;9080:12;9042:52;9129:9;9116:23;9148:31;9173:5;9148:31;:::i;:::-;9198:5;-1:-1:-1;9255:2:1;9240:18;;9227:32;9268:33;9227:32;9268:33;:::i;10644:184::-;10696:77;10693:1;10686:88;10793:4;10790:1;10783:15;10817:4;10814:1;10807:15;10833:482;10922:1;10965:5;10922:1;10979:330;11000:7;10990:8;10987:21;10979:330;;;11119:4;-1:-1:-1;;11047:77:1;11041:4;11038:87;11035:113;;;11128:18;;:::i;:::-;11178:7;11168:8;11164:22;11161:55;;;11198:16;;;;11161:55;11277:22;;;;11237:15;;;;10979:330;;;10983:3;10833:482;;;;;:::o;11320:866::-;11369:5;11399:8;11389:80;;-1:-1:-1;11440:1:1;11454:5;;11389:80;11488:4;11478:76;;-1:-1:-1;11525:1:1;11539:5;;11478:76;11570:4;11588:1;11583:59;;;;11656:1;11651:130;;;;11563:218;;11583:59;11613:1;11604:10;;11627:5;;;11651:130;11688:3;11678:8;11675:17;11672:43;;;11695:18;;:::i;:::-;-1:-1:-1;;11751:1:1;11737:16;;11766:5;;11563:218;;11865:2;11855:8;11852:16;11846:3;11840:4;11837:13;11833:36;11827:2;11817:8;11814:16;11809:2;11803:4;11800:12;11796:35;11793:77;11790:159;;;-1:-1:-1;11902:19:1;;;11934:5;;11790:159;11981:34;12006:8;12000:4;11981:34;:::i;:::-;12111:6;-1:-1:-1;;12039:79:1;12030:7;12027:92;12024:118;;;12122:18;;:::i;:::-;12160:20;;11320:866;-1:-1:-1;;;11320:866:1:o;12191:140::-;12249:5;12278:47;12319:4;12309:8;12305:19;12299:4;12278:47;:::i;12336:274::-;12376:1;12402;12392:189;;12437:77;12434:1;12427:88;12538:4;12535:1;12528:15;12566:4;12563:1;12556:15;12392:189;-1:-1:-1;12595:9:1;;12336:274::o;12615:228::-;12655:7;12781:1;-1:-1:-1;;12709:74:1;12706:1;12703:81;12698:1;12691:9;12684:17;12680:105;12677:131;;;12788:18;;:::i;:::-;-1:-1:-1;12828:9:1;;12615:228::o;12848:125::-;12888:4;12916:1;12913;12910:8;12907:34;;;12921:18;;:::i;:::-;-1:-1:-1;12958:9:1;;12848:125::o;13747:184::-;13799:77;13796:1;13789:88;13896:4;13893:1;13886:15;13920:4;13917:1;13910:15;13936:175;13973:3;14017:4;14010:5;14006:16;14046:4;14037:7;14034:17;14031:43;;;14054:18;;:::i;:::-;14103:1;14090:15;;13936:175;-1:-1:-1;;13936:175:1:o;17954:224::-;17993:3;18021:6;18054:2;18051:1;18047:10;18084:2;18081:1;18077:10;18115:3;18111:2;18107:12;18102:3;18099:21;18096:47;;;18123:18;;:::i;:::-;18159:13;;17954:224;-1:-1:-1;;;;17954:224:1:o;18183:251::-;18253:6;18306:2;18294:9;18285:7;18281:23;18277:32;18274:52;;;18322:1;18319;18312:12;18274:52;18354:9;18348:16;18373:31;18398:5;18373:31;:::i;19128:245::-;19195:6;19248:2;19236:9;19227:7;19223:23;19219:32;19216:52;;;19264:1;19261;19254:12;19216:52;19296:9;19290:16;19315:28;19337:5;19315:28;:::i;21708:128::-;21748:3;21779:1;21775:6;21772:1;21769:13;21766:39;;;21785:18;;:::i;:::-;-1:-1:-1;21821:9:1;;21708:128::o;22252:1026::-;22514:4;22562:3;22551:9;22547:19;22593:6;22582:9;22575:25;22619:2;22657:6;22652:2;22641:9;22637:18;22630:34;22700:3;22695:2;22684:9;22680:18;22673:31;22724:6;22759;22753:13;22790:6;22782;22775:22;22828:3;22817:9;22813:19;22806:26;;22867:2;22859:6;22855:15;22841:29;;22888:1;22898:218;22912:6;22909:1;22906:13;22898:218;;;22977:13;;-1:-1:-1;;;;;22973:62:1;22961:75;;23091:15;;;;23056:12;;;;22934:1;22927:9;22898:218;;;-1:-1:-1;;;;;;;23172:55:1;;;;23167:2;23152:18;;23145:83;-1:-1:-1;;;23259:3:1;23244:19;23237:35;23133:3;22252:1026;-1:-1:-1;;;22252:1026:1:o

Swarm Source

ipfs://4decb68af011a966d99d18e4cf711e98fe5f4a3252e6266eb35b684c21f2bcb4
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.