ETH Price: $3,478.78 (+0.87%)

Token

Ice Cream (ICE)
 

Overview

Max Total Supply

1,000,000,069 ICE

Holders

196

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.019309329473460953 ICE

Value
$0.00
0x416A8aa5d24788F4b3A8BCE7B589219088Fb1323
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:
IceCream

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    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 Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract IceCream is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 constant private startingSupply = 1_000_000_069;
    string constant private _name = "Ice Cream";
    string constant private _symbol = "ICE";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 charity;
        uint16 marketing;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        charity: 1,
        marketing: 3,
        totalSwap: 4
    });

    uint256 constant public maxBuyTaxes = 1000;
    uint256 constant public maxSellTaxes = 1000;
    uint256 constant public maxTransferTaxes = 1000;
    uint256 constant masterTaxDivisor = 10000;
    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable charity;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x34E69581D8Feae9eA7C8BC062e97DDE90f7EaDF5),
        charity: payable(0x716D79176179AbFD93d56290dc53758914F3E9db)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);

    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

        _isExcludedFromFees[0x407993575c91ce7643a4d4cCACc9A98c36eE1BBE] = true; // PinkLock
        _isExcludedFromFees[0x663A5C229c09b049E36dCc11a9B0d4a8Eb9db214] = true; // Unicrypt (ETH)
        _isExcludedFromFees[0xDba68f07d1b7Ca219f78ae8582C213d975c25cAf] = true; // Unicrypt (ETH)
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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.

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    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) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    receive() external payable {}
    function totalSupply() external pure override returns (uint256) { 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) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function approveContractContingency() external 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) external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot change after liquidity.");
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        lpPairs[lpPair] = false;
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        lpPairs[lpPair] = true;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

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

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

    function isExcludedFromProtection(address account) external view returns (bool) {
        return _isExcludedFromProtection[account];
    }

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

    function getCirculatingSupply() public view returns (uint256) {
        return (_tTotal - (balanceOf(DEAD) + balanceOf(address(0))));
    }

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

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        initializer.setProtections(_antiSnipe, _antiBlock);
    }

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 charity, uint16 marketing) external onlyOwner {
        _ratios.charity = charity;
        _ratios.marketing = marketing;
        _ratios.totalSwap = charity + marketing;
        uint256 total = _taxRates.buyFee + _taxRates.sellFee;
        require(_ratios.totalSwap <= total, "Cannot exceed sum of buy and sell fees.");
    }

    function setWallets(address payable marketing, address payable charity) external onlyOwner {
        require(marketing != address(0) && charity != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.charity = payable(charity);
    }

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount <= (balanceOf(lpPair) * 150) / masterTaxDivisor, "Cannot be above 1.5% of current PI.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.00001% of total supply.");
    }

    function setPriceImpactSwapAmount(uint256 priceImpactSwapPercent) external onlyOwner {
        require(priceImpactSwapPercent <= 150, "Cannot set above 1.5%.");
        piSwapPercent = priceImpactSwapPercent;
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function excludePresaleAddresses(address router, address presale) external onlyOwner {
        require(allowedPresaleExclusion);
        require(router != address(this) 
                && presale != address(this) 
                && lpPair != router 
                && lpPair != presale, "Just don't.");
        if (router == presale) {
            _liquidityHolders[presale] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(presale, true);
        } else {
            _liquidityHolders[router] = true;
            _liquidityHolders[presale] = true;
            presaleAddresses[router] = true;
            presaleAddresses[presale] = true;
            setExcludedFromFees(router, true);
            setExcludedFromFees(presale, true);
        }
    }

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

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                if (!other) {
                    revert("Trading not yet enabled!");
                } else if (!_isExcludedFromProtection[from] && !_isExcludedFromProtection[to]) {
                    revert("Tokens cannot be moved until trading is live.");
                }
            }
        }

        if (sell) {
            if (!inSwap) {
                if (contractSwapEnabled
                   && !presaleAddresses[to]
                   && !presaleAddresses[from]
                ) {
                    uint256 contractTokenBalance = balanceOf(address(this));
                    if (contractTokenBalance >= swapThreshold) {
                        uint256 swapAmt = swapAmount;
                        if (piContractSwapsEnabled) { swapAmt = (balanceOf(lpPair) * piSwapPercent) / masterTaxDivisor; }
                        if (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 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();

        try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 charityBalance = (amtBalance * ratios.charity) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - charityBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.charity > 0) {
            (success,) = _taxWallets.charity.call{value: charityBalance, gas: 55000}("");
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        launchStamp = block.timestamp;
    }

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

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

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

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (_hasLimits(from, to)) { bool checked;
            try initializer.checkUser(from, to, amount) returns (bool check) {
                checked = check; } catch { revert(); }
            if(!checked) { revert(); }
        }
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(initializer) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _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":"charity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","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":"charity","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":"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":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","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":"setExcludedFromProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","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":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"charity","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"}],"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"},{"internalType":"address payable","name":"charity","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":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

600060028190556008805460ff19166001908117909155610190608081905260a05260c0919091526009805465ffffffffffff1990811663019001901790915560e091909152600361010052600461012052600a805464040003000192169190911781556101806040527334e69581d8feae9ea7c8bc062e97dde90f7eadf561014081905273716d79176179abfd93d56290dc53758914f3e9db610160819052600d80546001600160a01b03199081169093179055600e805483169091179055600f805461ff001916905560138290556014805461ffff191690556016805490911633179055620000f390601290620003a1565b6200010390633b9aca45620003b9565b601680546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620001576012600a620003a1565b6200016790633b9aca45620003b9565b60405190815260200160405180910390a3601680546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909216179055620003d3565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002e3578160001904821115620002c757620002c76200028c565b80851615620002d557918102915b93841c9390800290620002a7565b509250929050565b600082620002fc575060016200039b565b816200030b575060006200039b565b81600181146200032457600281146200032f576200034f565b60019150506200039b565b60ff8411156200034357620003436200028c565b50506001821b6200039b565b5060208310610133831016604e8410600b841016171562000374575081810a6200039b565b620003808383620002a2565b80600019048211156200039757620003976200028c565b0290505b92915050565b6000620003b260ff841683620002eb565b9392505050565b80820281158282048414176200039b576200039b6200028c565b613e9480620003e36000396000f3fe6080604052600436106103595760003560e01c8063590ffdce116101bb578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109e1578063fb78680d14610a28578063fdb78c0e14610a48578063feadde9c14610a6757600080fd5b8063dd62ed3e14610966578063eafb5a3c146109ac578063ee5d9c2d146109cc57600080fd5b8063bcd96a25116100d1578063bcd96a25146108d5578063bfc2fc35146108f5578063cf84770614610915578063d3f6a1571461094657600080fd5b8063b1b08f71146105b7578063b3d514fb146105b7578063b7df8b36146108bb57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461083a57806395d89b411461084f578063a9059cbb1461087b578063ab558e4d1461089b57600080fd5b806380c581d1146107e7578063893d20e8146108075780638a63bd9b1461082557600080fd5b806370a082311161019557806370a0823114610787578063715018a6146107bd57806378648edf146107d257600080fd5b8063590ffdce146107315780635a6f0918146107515780635c24b0741461076757600080fd5b80632857775111610295578063452ed4f1116102335780634e718e481161020d5780634e718e48146106995780634fb2e45d146106b95780634fbee193146106d957806350a8e0161461071257600080fd5b8063452ed4f11461063f5780634ada218b1461065f5780634bbb93eb1461067957600080fd5b80632e8fa8211161026f5780632e8fa821146105cd578063313ce567146105e357806332cde664146105ff57806333251a0b1461061f57600080fd5b8063285777511461058c5780632b112e49146105a25780632b28fc7a146105b757600080fd5b806307dd79e01161030257806313b4a7f4116102dc57806313b4a7f41461051757806318160ddd1461053757806323b872dd1461054c5780632610eaca1461056c57600080fd5b806307dd79e014610494578063095ea7b3146104be5780630dcbcf1c146104de57600080fd5b8063069d955f11610333578063069d955f146103de57806306fdde03146104345780630758d9241461046f57600080fd5b806303fd2a45146103655780630445b66714610398578063044df726146103bc57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103ae60105481565b60405190815260200161038f565b3480156103c857600080fd5b506103dc6103d7366004613784565b610a87565b005b3480156103ea57600080fd5b5060095461040f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561044057600080fd5b5060408051808201909152600981526849636520437265616d60b81b60208201525b60405161038f91906137bd565b34801561047b57600080fd5b50600b5461037b9061010090046001600160a01b031681565b3480156104a057600080fd5b50600b546104ae9060ff1681565b604051901515815260200161038f565b3480156104ca57600080fd5b506104ae6104d9366004613820565b610b45565b3480156104ea57600080fd5b506104ae6104f936600461384c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052357600080fd5b506103dc610532366004613869565b610b5c565b34801561054357600080fd5b506103ae610d1a565b34801561055857600080fd5b506104ae610567366004613897565b610d3b565b34801561057857600080fd5b506103dc6105873660046139ae565b610db3565b34801561059857600080fd5b506103ae60135481565b3480156105ae57600080fd5b506103ae610f68565b3480156105c357600080fd5b506103ae6103e881565b3480156105d957600080fd5b506103ae60115481565b3480156105ef57600080fd5b506040516012815260200161038f565b34801561060b57600080fd5b506103dc61061a366004613a87565b610fe6565b34801561062b57600080fd5b506103dc61063a36600461384c565b61113a565b34801561064b57600080fd5b50600c5461037b906001600160a01b031681565b34801561066b57600080fd5b506014546104ae9060ff1681565b34801561068557600080fd5b506103ae610694366004613aca565b6111eb565b3480156106a557600080fd5b506103dc6106b4366004613aca565b61121f565b3480156106c557600080fd5b506103dc6106d436600461384c565b6112bd565b3480156106e557600080fd5b506104ae6106f436600461384c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071e57600080fd5b506014546104ae90610100900460ff1681565b34801561073d57600080fd5b506103dc61074c366004613ae3565b6114bf565b34801561075d57600080fd5b506103ae60155481565b34801561077357600080fd5b506103dc61078236600461384c565b611532565b34801561079357600080fd5b506103ae6107a236600461384c565b6001600160a01b031660009081526020819052604090205490565b3480156107c957600080fd5b506103dc611710565b3480156107de57600080fd5b506103dc611835565b3480156107f357600080fd5b506103dc610802366004613ae3565b61188c565b34801561081357600080fd5b506016546001600160a01b031661037b565b34801561083157600080fd5b506104ae611a76565b34801561084657600080fd5b506103dc611ae6565b34801561085b57600080fd5b5060408051808201909152600381526249434560e81b6020820152610462565b34801561088757600080fd5b506104ae610896366004613820565b611d3c565b3480156108a757600080fd5b506103dc6108b636600461384c565b611d53565b3480156108c757600080fd5b506012546104ae9060ff1681565b3480156108e157600080fd5b506103dc6108f0366004613b01565b611eed565b34801561090157600080fd5b506103dc610910366004613784565b612007565b34801561092157600080fd5b50600a5461040f9061ffff808216916201000081048216916401000000009091041683565b34801561095257600080fd5b506103dc610961366004613869565b6120ae565b34801561097257600080fd5b506103ae610981366004613869565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b857600080fd5b506103dc6109c736600461384c565b612190565b3480156109d857600080fd5b506103dc612591565b3480156109ed57600080fd5b50600d54600e54610a08916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161038f565b348015610a3457600080fd5b506103dc610a43366004613b34565b61266a565b348015610a5457600080fd5b50600f546104ae90610100900460ff1681565b348015610a7357600080fd5b506103dc610a82366004613ae3565b61292c565b6016546001600160a01b03163314610ad45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f83398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b505050505050565b6000610b5233848461299f565b5060015b92915050565b6016546001600160a01b03163314610ba45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60085460ff16610bb357600080fd5b6001600160a01b0382163014801590610bd557506001600160a01b0381163014155b8015610bef5750600c546001600160a01b03838116911614155b8015610c095750600c546001600160a01b03828116911614155b610c435760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610acb565b806001600160a01b0316826001600160a01b031603610ca5576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610ca19082906114bf565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610d0f9083906114bf565b610ca18160016114bf565b6000610d286012600a613c60565b610d3690633b9aca45613c6f565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610da0576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d9a908490613c86565b90915550505b610dab848484612a98565b949350505050565b6016546001600160a01b03163314610dfb5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b8051825114610e4c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610acb565b60005b82518161ffff161015610f6357610e686012600a613c60565b828261ffff1681518110610e7e57610e7e613c99565b6020026020010151610e909190613c6f565b336000908152602081905260409020541015610eee5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610acb565b610f5033848361ffff1681518110610f0857610f08613c99565b60200260200101516012600a610f1e9190613c60565b858561ffff1681518110610f3457610f34613c99565b6020026020010151610f469190613c6f565b6000806001612e23565b5080610f5b81613caf565b915050610e4f565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610fc29190613cd0565b610fce6012600a613c60565b610fdc90633b9aca45613c6f565b610d369190613c86565b6016546001600160a01b0316331461102e5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b5460ff16156110815760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610acb565b6103e88361ffff161115801561109d57506103e88261ffff1611155b80156110af57506103e88161ffff1611155b6110fb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610acb565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146111825760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b5050505050565b600c546001600160a01b031660009081526020819052604081205461271090611215908490613c6f565b610b569190613ce3565b6016546001600160a01b031633146112675760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60968111156112b85760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610acb565b601355565b6016546001600160a01b031633146113055760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b0381166113815760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610acb565b61deac196001600160a01b038216016114025760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610acb565b601654611419906001600160a01b031660006114bf565b6114248160016114bf565b6016546001600160a01b03166000908152602081905260409020541561146d576016546001600160a01b031660008181526020819052604090205461146b91908390610f46565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146115075760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461157a5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff161561158a57600080fd5b306001600160a01b038216036115e25760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610acb565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611668575060408051601f3d908101601f1916820190925261166591810190613d05565b60015b61167157600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546116ee938316929190041660001961299f565b600b54610f6390309061010090046001600160a01b031660001961299f565b50565b6016546001600160a01b031633146117585760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff166117d05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610acb565b6016546117e7906001600160a01b031660006114bf565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b0316331461187d5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b805460ff19166001179055565b6016546001600160a01b031633146118d45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b80611947576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610b2957600080fd5b600254156119ae576203f480600254426119619190613c86565b116119ae5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610acb565b6001600160a01b03821660009081526001602052604090205460ff1615611a175760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610acb565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b0f565b6016546000906001600160a01b03163314611ac15760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b54611ae090309061010090046001600160a01b031660001961299f565b50600190565b6016546001600160a01b03163314611b2e5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff1615611b815760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610acb565b601454610100900460ff16611bd85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610acb565b6014546201000090046001600160a01b0316611c08576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c7a57600080fd5b505af1925050508015611c8b575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611d0e575060408051601f3d908101601f19168201909252611d0b91810190613d34565b60015b15611d1d576010919091556011555b6014805460ff1990811660011790915560088054909116905542601555565b6000611d49338484612a98565b5060019392505050565b6016546001600160a01b03163314611d9b5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff1615611e0357306001600160a01b03821603611e035760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610acb565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7e9190613d58565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f639190613d71565b6016546001600160a01b03163314611f355760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600a805461ffff838116620100000263ffffffff1990921690851617179055611f5e8183613d8e565b600a805465ffff00000000191664010000000061ffff93841602179055600954600091611f949162010000810482169116613d8e565b600a5461ffff9182169250640100000000900416811015610f635760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610acb565b6016546001600160a01b0316331461204f5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146120f65760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b0382161580159061211657506001600160a01b03811615155b6121625760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610acb565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6016546001600160a01b031633146121d85760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff16156122305760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610acb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122999190613db0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230a9190613db0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123799190613db0565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661250f57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190613db0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190613db0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea9190613db0565b600c80546001600160a01b0319166001600160a01b039290921691909117905561252b565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154610f6392309291041660001961299f565b6016546001600160a01b031633146125d95760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff16156126315760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610acb565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561170d573d6000803e3d6000fd5b6016546001600160a01b031633146126b25760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b82846126c06012600a613c60565b6126ce90633b9aca45613c6f565b6126d89190613c6f565b6126e29190613ce3565b60105580826126f36012600a613c60565b61270190633b9aca45613c6f565b61270b9190613c6f565b6127159190613ce3565b601181905560105411156127755760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610acb565b600c546001600160a01b03166000908152602081905260409020546127109061279f906096613c6f565b6127a99190613ce3565b60115411156128065760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610acb565b620f42406128166012600a613c60565b61282490633b9aca45613c6f565b61282e9190613ce3565b60115410156128965760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610acb565b620f42406128a66012600a613c60565b6128b490633b9aca45613c6f565b6128be9190613ce3565b60105410156129265760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610acb565b50505050565b6016546001600160a01b031633146129745760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166129eb5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acb565b6001600160a01b038216612a375760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612afe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acb565b6001600160a01b038316612b605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acb565b60008211612bc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610acb565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612bf05760019250612c1e565b6001600160a01b03861660009081526001602052604090205460ff1615612c1a5760019150612c1e565b5060015b612c2887876130d6565b15612d295760145460ff16612d295780612c845760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610acb565b6001600160a01b03871660009081526005602052604090205460ff16158015612cc657506001600160a01b03861660009081526005602052604090205460ff16155b15612d295760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610acb565b8115612e0a57600f5460ff16612e0a57600f54610100900460ff168015612d6957506001600160a01b03861660009081526007602052604090205460ff16155b8015612d8e57506001600160a01b03871660009081526007602052604090205460ff16155b15612e0a57306000908152602081905260409020546010548110612e085760115460125460ff1615612df257601354600c546001600160a01b031660009081526020819052604090205461271091612de591613c6f565b612def9190613ce3565b90505b808210612dfd578091505b612e06826131ed565b505b505b612e18878787868686612e23565b979650505050505050565b6000612e2f87876130d6565b15612ec95760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612eb2575060408051601f3d908101601f19168201909252612eaf91810190613d71565b60015b612ebb57600080fd5b905080612ec757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612f0b57506001600160a01b03871660009081526006602052604090205460ff165b15612f14575060005b6001600160a01b03881660009081526020819052604081208054889290612f3c908490613c86565b909155506000905081612f4f5786612f5b565b612f5b89888888613521565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f919190613cd0565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fdd91815260200190565b60405180910390a3601454610100900460ff166130c757612ffe8989613636565b601454610100900460ff1615801561301b575061301b89896130d6565b801561304057506001600160a01b03891660009081526005602052604090205460ff16155b801561306557506001600160a01b03881660009081526005602052604090205460ff16155b801561306f575083155b156130c75760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610acb565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061310557506016546001600160a01b03838116911614155b801561311c57506016546001600160a01b03163214155b801561314157506001600160a01b03821660009081526004602052604090205460ff16155b801561316657506001600160a01b03831660009081526004602052604090205460ff16155b801561317d57506001600160a01b03821661dead14155b801561319157506001600160a01b03821615155b80156131a657506001600160a01b0383163014155b80156131c657506014546001600160a01b03848116620100009092041614155b80156131e657506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff1916600117905560408051606081018252600a5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361323a5750613514565b306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461329d57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132d2576132d2613c99565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133699190613db0565b8160018151811061337c5761337c613c99565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906133c9908690600090869030904290600401613dcd565b600060405180830381600087803b1580156133e357600080fd5b505af19250505080156133f4575060015b6133ff575050613514565b604082015182514791600091829161ffff9081169161341f911685613c6f565b6134299190613ce3565b905060006134378285613c86565b602087015190915061ffff16156134a557600d546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461349a576040519150601f19603f3d011682016040523d82523d6000602084013e61349f565b606091505b50909350505b855161ffff161561350d57600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613502576040519150601f19603f3d011682016040523d82523d6000602084013e613507565b606091505b50909350505b5050505050505b50600f805460ff19169055565b6000808315613537575060095461ffff16613561565b8215613550575060095462010000900461ffff16613561565b50600954640100000000900461ffff165b806000036135725784915050610dab565b6014546201000090046001600160a01b03163014801561359c5750466001148061359c5750466038145b156135a657506111945b60006127106135b58388613c6f565b6135bf9190613ce3565b9050801561362c5730600090815260208190526040812080548392906135e6908490613cd0565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612e188187613c86565b601454610100900460ff161561369a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610acb565b6136a482826130d6565b1580156136be5750600c546001600160a01b038281169116145b15610ca1576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613736576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016120a2565b801515811461170d57600080fd5b6000806040838503121561379757600080fd5b82356137a281613776565b915060208301356137b281613776565b809150509250929050565b600060208083528351808285015260005b818110156137ea578581018301518582016040015282016137ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461170d57600080fd5b6000806040838503121561383357600080fd5b823561383e8161380b565b946020939093013593505050565b60006020828403121561385e57600080fd5b81356131e68161380b565b6000806040838503121561387c57600080fd5b82356138878161380b565b915060208301356137b28161380b565b6000806000606084860312156138ac57600080fd5b83356138b78161380b565b925060208401356138c78161380b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613917576139176138d8565b604052919050565b600067ffffffffffffffff821115613939576139396138d8565b5060051b60200190565b600082601f83011261395457600080fd5b813560206139696139648361391f565b6138ee565b82815260059290921b8401810191818101908684111561398857600080fd5b8286015b848110156139a3578035835291830191830161398c565b509695505050505050565b600080604083850312156139c157600080fd5b823567ffffffffffffffff808211156139d957600080fd5b818501915085601f8301126139ed57600080fd5b813560206139fd6139648361391f565b82815260059290921b84018101918181019089841115613a1c57600080fd5b948201945b83861015613a43578535613a348161380b565b82529482019490820190613a21565b96505086013592505080821115613a5957600080fd5b50613a6685828601613943565b9150509250929050565b803561ffff81168114613a8257600080fd5b919050565b600080600060608486031215613a9c57600080fd5b613aa584613a70565b9250613ab360208501613a70565b9150613ac160408501613a70565b90509250925092565b600060208284031215613adc57600080fd5b5035919050565b60008060408385031215613af657600080fd5b82356137a28161380b565b60008060408385031215613b1457600080fd5b613b1d83613a70565b9150613b2b60208401613a70565b90509250929050565b60008060008060808587031215613b4a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613bb7578160001904821115613b9d57613b9d613b66565b80851615613baa57918102915b93841c9390800290613b81565b509250929050565b600082613bce57506001610b56565b81613bdb57506000610b56565b8160018114613bf15760028114613bfb57613c17565b6001915050610b56565b60ff841115613c0c57613c0c613b66565b50506001821b610b56565b5060208310610133831016604e8410600b8410161715613c3a575081810a610b56565b613c448383613b7c565b8060001904821115613c5857613c58613b66565b029392505050565b60006131e660ff841683613bbf565b8082028115828204841417610b5657610b56613b66565b81810381811115610b5657610b56613b66565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613cc657613cc6613b66565b6001019392505050565b80820180821115610b5657610b56613b66565b600082613d0057634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613d1857600080fd5b8251613d238161380b565b60208401519092506137b28161380b565b60008060408385031215613d4757600080fd5b505080516020909101519092909150565b600060208284031215613d6a57600080fd5b5051919050565b600060208284031215613d8357600080fd5b81516131e681613776565b61ffff818116838216019080821115613da957613da9613b66565b5092915050565b600060208284031215613dc257600080fd5b81516131e68161380b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e1d5784516001600160a01b031683529383019391830191600101613df8565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220d9cc6d80c9ea8130218d0a5ccf2683b19c2d4305ee380d93969479a858edd25164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103595760003560e01c8063590ffdce116101bb578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109e1578063fb78680d14610a28578063fdb78c0e14610a48578063feadde9c14610a6757600080fd5b8063dd62ed3e14610966578063eafb5a3c146109ac578063ee5d9c2d146109cc57600080fd5b8063bcd96a25116100d1578063bcd96a25146108d5578063bfc2fc35146108f5578063cf84770614610915578063d3f6a1571461094657600080fd5b8063b1b08f71146105b7578063b3d514fb146105b7578063b7df8b36146108bb57600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461083a57806395d89b411461084f578063a9059cbb1461087b578063ab558e4d1461089b57600080fd5b806380c581d1146107e7578063893d20e8146108075780638a63bd9b1461082557600080fd5b806370a082311161019557806370a0823114610787578063715018a6146107bd57806378648edf146107d257600080fd5b8063590ffdce146107315780635a6f0918146107515780635c24b0741461076757600080fd5b80632857775111610295578063452ed4f1116102335780634e718e481161020d5780634e718e48146106995780634fb2e45d146106b95780634fbee193146106d957806350a8e0161461071257600080fd5b8063452ed4f11461063f5780634ada218b1461065f5780634bbb93eb1461067957600080fd5b80632e8fa8211161026f5780632e8fa821146105cd578063313ce567146105e357806332cde664146105ff57806333251a0b1461061f57600080fd5b8063285777511461058c5780632b112e49146105a25780632b28fc7a146105b757600080fd5b806307dd79e01161030257806313b4a7f4116102dc57806313b4a7f41461051757806318160ddd1461053757806323b872dd1461054c5780632610eaca1461056c57600080fd5b806307dd79e014610494578063095ea7b3146104be5780630dcbcf1c146104de57600080fd5b8063069d955f11610333578063069d955f146103de57806306fdde03146104345780630758d9241461046f57600080fd5b806303fd2a45146103655780630445b66714610398578063044df726146103bc57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103ae60105481565b60405190815260200161038f565b3480156103c857600080fd5b506103dc6103d7366004613784565b610a87565b005b3480156103ea57600080fd5b5060095461040f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561044057600080fd5b5060408051808201909152600981526849636520437265616d60b81b60208201525b60405161038f91906137bd565b34801561047b57600080fd5b50600b5461037b9061010090046001600160a01b031681565b3480156104a057600080fd5b50600b546104ae9060ff1681565b604051901515815260200161038f565b3480156104ca57600080fd5b506104ae6104d9366004613820565b610b45565b3480156104ea57600080fd5b506104ae6104f936600461384c565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052357600080fd5b506103dc610532366004613869565b610b5c565b34801561054357600080fd5b506103ae610d1a565b34801561055857600080fd5b506104ae610567366004613897565b610d3b565b34801561057857600080fd5b506103dc6105873660046139ae565b610db3565b34801561059857600080fd5b506103ae60135481565b3480156105ae57600080fd5b506103ae610f68565b3480156105c357600080fd5b506103ae6103e881565b3480156105d957600080fd5b506103ae60115481565b3480156105ef57600080fd5b506040516012815260200161038f565b34801561060b57600080fd5b506103dc61061a366004613a87565b610fe6565b34801561062b57600080fd5b506103dc61063a36600461384c565b61113a565b34801561064b57600080fd5b50600c5461037b906001600160a01b031681565b34801561066b57600080fd5b506014546104ae9060ff1681565b34801561068557600080fd5b506103ae610694366004613aca565b6111eb565b3480156106a557600080fd5b506103dc6106b4366004613aca565b61121f565b3480156106c557600080fd5b506103dc6106d436600461384c565b6112bd565b3480156106e557600080fd5b506104ae6106f436600461384c565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561071e57600080fd5b506014546104ae90610100900460ff1681565b34801561073d57600080fd5b506103dc61074c366004613ae3565b6114bf565b34801561075d57600080fd5b506103ae60155481565b34801561077357600080fd5b506103dc61078236600461384c565b611532565b34801561079357600080fd5b506103ae6107a236600461384c565b6001600160a01b031660009081526020819052604090205490565b3480156107c957600080fd5b506103dc611710565b3480156107de57600080fd5b506103dc611835565b3480156107f357600080fd5b506103dc610802366004613ae3565b61188c565b34801561081357600080fd5b506016546001600160a01b031661037b565b34801561083157600080fd5b506104ae611a76565b34801561084657600080fd5b506103dc611ae6565b34801561085b57600080fd5b5060408051808201909152600381526249434560e81b6020820152610462565b34801561088757600080fd5b506104ae610896366004613820565b611d3c565b3480156108a757600080fd5b506103dc6108b636600461384c565b611d53565b3480156108c757600080fd5b506012546104ae9060ff1681565b3480156108e157600080fd5b506103dc6108f0366004613b01565b611eed565b34801561090157600080fd5b506103dc610910366004613784565b612007565b34801561092157600080fd5b50600a5461040f9061ffff808216916201000081048216916401000000009091041683565b34801561095257600080fd5b506103dc610961366004613869565b6120ae565b34801561097257600080fd5b506103ae610981366004613869565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109b857600080fd5b506103dc6109c736600461384c565b612190565b3480156109d857600080fd5b506103dc612591565b3480156109ed57600080fd5b50600d54600e54610a08916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161038f565b348015610a3457600080fd5b506103dc610a43366004613b34565b61266a565b348015610a5457600080fd5b50600f546104ae90610100900460ff1681565b348015610a7357600080fd5b506103dc610a82366004613ae3565b61292c565b6016546001600160a01b03163314610ad45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f83398151915260448201526064015b60405180910390fd5b60145460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b2957600080fd5b505af1158015610b3d573d6000803e3d6000fd5b505050505050565b6000610b5233848461299f565b5060015b92915050565b6016546001600160a01b03163314610ba45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60085460ff16610bb357600080fd5b6001600160a01b0382163014801590610bd557506001600160a01b0381163014155b8015610bef5750600c546001600160a01b03838116911614155b8015610c095750600c546001600160a01b03828116911614155b610c435760405162461bcd60e51b815260206004820152600b60248201526a253ab9ba103237b713ba1760a91b6044820152606401610acb565b806001600160a01b0316826001600160a01b031603610ca5576001600160a01b03811660009081526004602090815260408083208054600160ff19918216811790925560079093529220805490911682179055610ca19082906114bf565b5050565b6001600160a01b0382811660008181526004602090815260408083208054600160ff19918216811790925595871680855282852080548816831790559484526007909252808320805486168317905592825291902080549092168117909155610d0f9083906114bf565b610ca18160016114bf565b6000610d286012600a613c60565b610d3690633b9aca45613c6f565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610da0576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610d9a908490613c86565b90915550505b610dab848484612a98565b949350505050565b6016546001600160a01b03163314610dfb5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b8051825114610e4c5760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610acb565b60005b82518161ffff161015610f6357610e686012600a613c60565b828261ffff1681518110610e7e57610e7e613c99565b6020026020010151610e909190613c6f565b336000908152602081905260409020541015610eee5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610acb565b610f5033848361ffff1681518110610f0857610f08613c99565b60200260200101516012600a610f1e9190613c60565b858561ffff1681518110610f3457610f34613c99565b6020026020010151610f469190613c6f565b6000806001612e23565b5080610f5b81613caf565b915050610e4f565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610fc29190613cd0565b610fce6012600a613c60565b610fdc90633b9aca45613c6f565b610d369190613c86565b6016546001600160a01b0316331461102e5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b5460ff16156110815760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610acb565b6103e88361ffff161115801561109d57506103e88261ffff1611155b80156110af57506103e88161ffff1611155b6110fb5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610acb565b6009805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6016546001600160a01b031633146111825760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6014546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111d057600080fd5b505af11580156111e4573d6000803e3d6000fd5b5050505050565b600c546001600160a01b031660009081526020819052604081205461271090611215908490613c6f565b610b569190613ce3565b6016546001600160a01b031633146112675760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60968111156112b85760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610acb565b601355565b6016546001600160a01b031633146113055760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b0381166113815760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610acb565b61deac196001600160a01b038216016114025760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610acb565b601654611419906001600160a01b031660006114bf565b6114248160016114bf565b6016546001600160a01b03166000908152602081905260409020541561146d576016546001600160a01b031660008181526020819052604090205461146b91908390610f46565b505b601680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6016546001600160a01b031633146115075760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6016546001600160a01b0316331461157a5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff161561158a57600080fd5b306001600160a01b038216036115e25760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610acb565b6014805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301816000875af1925050508015611668575060408051601f3d908101601f1916820190925261166591810190613d05565b60015b61167157600080fd5b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c80546001600160a01b0319168584169081179091556000908152600160208190526040909120805460ff1916909117905560165492546116ee938316929190041660001961299f565b600b54610f6390309061010090046001600160a01b031660001961299f565b50565b6016546001600160a01b031633146117585760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff166117d05760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201527f73206265656e20656e61626c65642e00000000000000000000000000000000006064820152608401610acb565b6016546117e7906001600160a01b031660006114bf565b601680546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6016546001600160a01b0316331461187d5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b805460ff19166001179055565b6016546001600160a01b031633146118d45760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b80611947576001600160a01b03828116600081815260016020526040808220805460ff1916905560145490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401600060405180830381600087803b158015610b2957600080fd5b600254156119ae576203f480600254426119619190613c86565b116119ae5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610acb565b6001600160a01b03821660009081526001602052604090205460ff1615611a175760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610acb565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560145491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b0f565b6016546000906001600160a01b03163314611ac15760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600b54611ae090309061010090046001600160a01b031660001961299f565b50600190565b6016546001600160a01b03163314611b2e5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b60145460ff1615611b815760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610acb565b601454610100900460ff16611bd85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610acb565b6014546201000090046001600160a01b0316611c08576014805462010000600160b01b0319163062010000021790555b601454600c54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611c7a57600080fd5b505af1925050508015611c8b575060015b50601454600c546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af1925050508015611d0e575060408051601f3d908101601f19168201909252611d0b91810190613d34565b60015b15611d1d576010919091556011555b6014805460ff1990811660011790915560088054909116905542601555565b6000611d49338484612a98565b5060019392505050565b6016546001600160a01b03163314611d9b5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff1615611e0357306001600160a01b03821603611e035760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610acb565b6016546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611e5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7e9190613d58565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f639190613d71565b6016546001600160a01b03163314611f355760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600a805461ffff838116620100000263ffffffff1990921690851617179055611f5e8183613d8e565b600a805465ffff00000000191664010000000061ffff93841602179055600954600091611f949162010000810482169116613d8e565b600a5461ffff9182169250640100000000900416811015610f635760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610acb565b6016546001600160a01b0316331461204f5760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b600f805461ff001916610100841515908102919091179091556012805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6016546001600160a01b031633146120f65760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b0382161580159061211657506001600160a01b03811615155b6121625760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610acb565b600d80546001600160a01b039384166001600160a01b031991821617909155600e8054929093169116179055565b6016546001600160a01b031633146121d85760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff16156122305760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610acb565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612275573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122999190613db0565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230a9190613db0565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612355573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123799190613db0565b600c546001600160a01b039081166000908152600160205260409020805460ff19169055909150811661250f57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124089190613db0565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124799190613db0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156124c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ea9190613db0565b600c80546001600160a01b0319166001600160a01b039290921691909117905561252b565b600c80546001600160a01b0319166001600160a01b0383161790555b600b805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600c5482166000908152600160208190526040909120805460ff191690911790559154610f6392309291041660001961299f565b6016546001600160a01b031633146125d95760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b601454610100900460ff16156126315760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610acb565b6016546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561170d573d6000803e3d6000fd5b6016546001600160a01b031633146126b25760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b82846126c06012600a613c60565b6126ce90633b9aca45613c6f565b6126d89190613c6f565b6126e29190613ce3565b60105580826126f36012600a613c60565b61270190633b9aca45613c6f565b61270b9190613c6f565b6127159190613ce3565b601181905560105411156127755760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610acb565b600c546001600160a01b03166000908152602081905260409020546127109061279f906096613c6f565b6127a99190613ce3565b60115411156128065760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610acb565b620f42406128166012600a613c60565b61282490633b9aca45613c6f565b61282e9190613ce3565b60115410156128965760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610acb565b620f42406128a66012600a613c60565b6128b490633b9aca45613c6f565b6128be9190613ce3565b60105410156129265760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610acb565b50505050565b6016546001600160a01b031633146129745760405162461bcd60e51b81526020600482015260116024820152600080516020613e3f8339815191526044820152606401610acb565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166129eb5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acb565b6001600160a01b038216612a375760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610acb565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612afe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610acb565b6001600160a01b038316612b605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610acb565b60008211612bc25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610acb565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612bf05760019250612c1e565b6001600160a01b03861660009081526001602052604090205460ff1615612c1a5760019150612c1e565b5060015b612c2887876130d6565b15612d295760145460ff16612d295780612c845760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610acb565b6001600160a01b03871660009081526005602052604090205460ff16158015612cc657506001600160a01b03861660009081526005602052604090205460ff16155b15612d295760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610acb565b8115612e0a57600f5460ff16612e0a57600f54610100900460ff168015612d6957506001600160a01b03861660009081526007602052604090205460ff16155b8015612d8e57506001600160a01b03871660009081526007602052604090205460ff16155b15612e0a57306000908152602081905260409020546010548110612e085760115460125460ff1615612df257601354600c546001600160a01b031660009081526020819052604090205461271091612de591613c6f565b612def9190613ce3565b90505b808210612dfd578091505b612e06826131ed565b505b505b612e18878787868686612e23565b979650505050505050565b6000612e2f87876130d6565b15612ec95760145460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612eb2575060408051601f3d908101601f19168201909252612eaf91810190613d71565b60015b612ebb57600080fd5b905080612ec757600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612f0b57506001600160a01b03871660009081526006602052604090205460ff165b15612f14575060005b6001600160a01b03881660009081526020819052604081208054889290612f3c908490613c86565b909155506000905081612f4f5786612f5b565b612f5b89888888613521565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612f919190613cd0565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612fdd91815260200190565b60405180910390a3601454610100900460ff166130c757612ffe8989613636565b601454610100900460ff1615801561301b575061301b89896130d6565b801561304057506001600160a01b03891660009081526005602052604090205460ff16155b801561306557506001600160a01b03881660009081526005602052604090205460ff16155b801561306f575083155b156130c75760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610acb565b50600198975050505050505050565b6016546000906001600160a01b0384811691161480159061310557506016546001600160a01b03838116911614155b801561311c57506016546001600160a01b03163214155b801561314157506001600160a01b03821660009081526004602052604090205460ff16155b801561316657506001600160a01b03831660009081526004602052604090205460ff16155b801561317d57506001600160a01b03821661dead14155b801561319157506001600160a01b03821615155b80156131a657506001600160a01b0383163014155b80156131c657506014546001600160a01b03848116620100009092041614155b80156131e657506014546001600160a01b03838116620100009092041614155b9392505050565b600f805460ff1916600117905560408051606081018252600a5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361323a5750613514565b306000908152600360209081526040808320600b5461010090046001600160a01b031684529091529020546000191461329d57306000908152600360209081526040808320600b5461010090046001600160a01b03168452909152902060001990555b60408051600280825260608201835260009260208301908036833701905050905030816000815181106132d2576132d2613c99565b60200260200101906001600160a01b031690816001600160a01b031681525050600b60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133699190613db0565b8160018151811061337c5761337c613c99565b6001600160a01b039283166020918202929092010152600b5460405163791ac94760e01b81526101009091049091169063791ac947906133c9908690600090869030904290600401613dcd565b600060405180830381600087803b1580156133e357600080fd5b505af19250505080156133f4575060015b6133ff575050613514565b604082015182514791600091829161ffff9081169161341f911685613c6f565b6134299190613ce3565b905060006134378285613c86565b602087015190915061ffff16156134a557600d546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461349a576040519150601f19603f3d011682016040523d82523d6000602084013e61349f565b606091505b50909350505b855161ffff161561350d57600e546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613502576040519150601f19603f3d011682016040523d82523d6000602084013e613507565b606091505b50909350505b5050505050505b50600f805460ff19169055565b6000808315613537575060095461ffff16613561565b8215613550575060095462010000900461ffff16613561565b50600954640100000000900461ffff165b806000036135725784915050610dab565b6014546201000090046001600160a01b03163014801561359c5750466001148061359c5750466038145b156135a657506111945b60006127106135b58388613c6f565b6135bf9190613ce3565b9050801561362c5730600090815260208190526040812080548392906135e6908490613cd0565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612e188187613c86565b601454610100900460ff161561369a5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610acb565b6136a482826130d6565b1580156136be5750600c546001600160a01b038281169116145b15610ca1576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556014805461ff001916610100179081905562010000900416613736576014805462010000600160b01b0319163062010000021790555b600f805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016120a2565b801515811461170d57600080fd5b6000806040838503121561379757600080fd5b82356137a281613776565b915060208301356137b281613776565b809150509250929050565b600060208083528351808285015260005b818110156137ea578581018301518582016040015282016137ce565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461170d57600080fd5b6000806040838503121561383357600080fd5b823561383e8161380b565b946020939093013593505050565b60006020828403121561385e57600080fd5b81356131e68161380b565b6000806040838503121561387c57600080fd5b82356138878161380b565b915060208301356137b28161380b565b6000806000606084860312156138ac57600080fd5b83356138b78161380b565b925060208401356138c78161380b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613917576139176138d8565b604052919050565b600067ffffffffffffffff821115613939576139396138d8565b5060051b60200190565b600082601f83011261395457600080fd5b813560206139696139648361391f565b6138ee565b82815260059290921b8401810191818101908684111561398857600080fd5b8286015b848110156139a3578035835291830191830161398c565b509695505050505050565b600080604083850312156139c157600080fd5b823567ffffffffffffffff808211156139d957600080fd5b818501915085601f8301126139ed57600080fd5b813560206139fd6139648361391f565b82815260059290921b84018101918181019089841115613a1c57600080fd5b948201945b83861015613a43578535613a348161380b565b82529482019490820190613a21565b96505086013592505080821115613a5957600080fd5b50613a6685828601613943565b9150509250929050565b803561ffff81168114613a8257600080fd5b919050565b600080600060608486031215613a9c57600080fd5b613aa584613a70565b9250613ab360208501613a70565b9150613ac160408501613a70565b90509250925092565b600060208284031215613adc57600080fd5b5035919050565b60008060408385031215613af657600080fd5b82356137a28161380b565b60008060408385031215613b1457600080fd5b613b1d83613a70565b9150613b2b60208401613a70565b90509250929050565b60008060008060808587031215613b4a57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613bb7578160001904821115613b9d57613b9d613b66565b80851615613baa57918102915b93841c9390800290613b81565b509250929050565b600082613bce57506001610b56565b81613bdb57506000610b56565b8160018114613bf15760028114613bfb57613c17565b6001915050610b56565b60ff841115613c0c57613c0c613b66565b50506001821b610b56565b5060208310610133831016604e8410600b8410161715613c3a575081810a610b56565b613c448383613b7c565b8060001904821115613c5857613c58613b66565b029392505050565b60006131e660ff841683613bbf565b8082028115828204841417610b5657610b56613b66565b81810381811115610b5657610b56613b66565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613cc657613cc6613b66565b6001019392505050565b80820180821115610b5657610b56613b66565b600082613d0057634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215613d1857600080fd5b8251613d238161380b565b60208401519092506137b28161380b565b60008060408385031215613d4757600080fd5b505080516020909101519092909150565b600060208284031215613d6a57600080fd5b5051919050565b600060208284031215613d8357600080fd5b81516131e681613776565b61ffff818116838216019080821115613da957613da9613b66565b5092915050565b600060208284031215613dc257600080fd5b81516131e68161380b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613e1d5784516001600160a01b031683529383019391830191600101613df8565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220d9cc6d80c9ea8130218d0a5ccf2683b19c2d4305ee380d93969479a858edd25164736f6c63430008130033

Deployed Bytecode Sourcemap

4090:21198:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5649:73;;;;;;;;;;;;5680:42;5649:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5649:73:0;;;;;;;;6107:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6107:28:0;245:177:1;13935:153:0;;;;;;;;;;-1:-1:-1;13935:153:0;;;;;:::i;:::-;;:::i;:::-;;5123:107;;;;;;;;;;-1:-1:-1;5123:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5123:107:0;931:365:1;9670:80:0;;;;;;;;;;-1:-1:-1;9742:5:0;;;;;;;;;;;;-1:-1:-1;;;9742:5:0;;;;9670:80;;;;;;;:::i;5588:26::-;;;;;;;;;;-1:-1:-1;5588:26:0;;;;;;;-1:-1:-1;;;;;5588:26:0;;;5555;;;;;;;;;;-1:-1:-1;5555:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5555:26:0;2102:187:1;10278:161:0;;;;;;;;;;-1:-1:-1;10278:161:0;;;;;:::i;:::-;;:::i;13364:140::-;;;;;;;;;;-1:-1:-1;13364:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;13462:34:0;13438:4;13462:34;;;:25;:34;;;;;;;;;13364:140;16817:809;;;;;;;;;;-1:-1:-1;16817:809:0;;;;;:::i;:::-;;:::i;9405:83::-;;;;;;;;;;;;;:::i;10948:306::-;;;;;;;;;;-1:-1:-1;10948:306:0;;;;;:::i;:::-;;:::i;22963:447::-;;;;;;;;;;-1:-1:-1;22963:447:0;;;;;:::i;:::-;;:::i;6215:33::-;;;;;;;;;;;;;;;;13668:141;;;;;;;;;;;;;:::i;5354:42::-;;;;;;;;;;;;5392:4;5354:42;;6142:25;;;;;;;;;;;;;;;;9494:80;;;;;;;;;;-1:-1:-1;9494:80:0;;4825:2;6508:36:1;;6496:2;6481:18;9494:80:0;6366:184:1;14286:453:0;;;;;;;;;;-1:-1:-1;14286:453:0;;;;;:::i;:::-;;:::i;13817:110::-;;;;;;;;;;-1:-1:-1;13817:110:0;;;;;:::i;:::-;;:::i;5621:21::-;;;;;;;;;;-1:-1:-1;5621:21:0;;;;-1:-1:-1;;;;;5621:21:0;;;6255:34;;;;;;;;;;-1:-1:-1;6255:34:0;;;;;;;;15417:189;;;;;;;;;;-1:-1:-1;15417:189:0;;;;;:::i;:::-;;:::i;16321:217::-;;;;;;;;;;-1:-1:-1;16321:217:0;;;;;:::i;:::-;;:::i;8043:654::-;;;;;;;;;;-1:-1:-1;8043:654:0;;;;;:::i;:::-;;:::i;13087:127::-;;;;;;;;;;-1:-1:-1;13087:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13178:28:0;13154:4;13178:28;;;:19;:28;;;;;;;;;13087:127;6296:36;;;;;;;;;;-1:-1:-1;6296:36:0;;;;;;;;;;;13222:134;;;;;;;;;;-1:-1:-1;13222:134:0;;;;;:::i;:::-;;:::i;6369:26::-;;;;;;;;;;;;;;;;12522:557;;;;;;;;;;-1:-1:-1;12522:557:0;;;;;:::i;:::-;;:::i;9980:117::-;;;;;;;;;;-1:-1:-1;9980:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10073:16:0;10046:7;10073:16;;;;;;;;;;;;9980:117;8705:310;;;;;;;;;;;;;:::i;14096:182::-;;;;;;;;;;;;;:::i;11950:564::-;;;;;;;;;;-1:-1:-1;11950:564:0;;;;;:::i;:::-;;:::i;9756:79::-;;;;;;;;;;-1:-1:-1;9826:6:0;;-1:-1:-1;;;;;9826:6:0;9756:79;;10765:175;;;;;;;;;;;;;:::i;21724:737::-;;;;;;;;;;;;;:::i;9580:84::-;;;;;;;;;;-1:-1:-1;9654:7:0;;;;;;;;;;;;-1:-1:-1;;;9654:7:0;;;;9580:84;;10105:165;;;;;;;;;;-1:-1:-1;10105:165:0;;;;;:::i;:::-;;:::i;22659:296::-;;;;;;;;;;-1:-1:-1;22659:296:0;;;;;:::i;:::-;;:::i;6174:34::-;;;;;;;;;;-1:-1:-1;6174:34:0;;;;;;;;14747:358;;;;;;;;;;-1:-1:-1;14747:358:0;;;;;:::i;:::-;;:::i;16546:263::-;;;;;;;;;;-1:-1:-1;16546:263:0;;;;;:::i;:::-;;:::i;5239:106::-;;;;;;;;;;-1:-1:-1;5239:106:0;;;;;;;;;;;;;;;;;;;;;;15113:296;;;;;;;;;;-1:-1:-1;15113:296:0;;;;;:::i;:::-;;:::i;9841:133::-;;;;;;;;;;-1:-1:-1;9841:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9943:19:0;;;9925:7;9943:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9841:133;11262:680;;;;;;;;;;-1:-1:-1;11262:680:0;;;;;:::i;:::-;;:::i;22469:182::-;;;;;;;;;;;;;:::i;5835:195::-;;;;;;;;;;-1:-1:-1;5835:195:0;;;;;;-1:-1:-1;;;;;5835:195:0;;;;;;;;;;;-1:-1:-1;;;;;8579:15:1;;;8561:34;;8631:15;;;;8626:2;8611:18;;8604:43;8473:18;5835:195:0;8294:359:1;15614:699:0;;;;;;;;;;-1:-1:-1;15614:699:0;;;;;:::i;:::-;;:::i;6061:39::-;;;;;;;;;;-1:-1:-1;6061:39:0;;;;;;;;;;;13512:148;;;;;;;;;;-1:-1:-1;13512:148:0;;;;;:::i;:::-;;:::i;13935:153::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;;;;;;;;;14030:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14030:50:0;;9581:14:1;;9574:22;14030:50:0::1;::::0;::::1;9556:41:1::0;9640:14;;9633:22;9613:18;;;9606:50;14030:11:0;;;::::1;-1:-1:-1::0;;;;;14030:11:0::1;::::0;:26:::1;::::0;9529:18:1;;14030:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13935:153:::0;;:::o;10278:161::-;10355:4;10372:37;10381:10;10393:7;10402:6;10372:8;:37::i;:::-;-1:-1:-1;10427:4:0;10278:161;;;;;:::o;16817:809::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;16921:23:::1;::::0;::::1;;16913:32;;;::::0;::::1;;-1:-1:-1::0;;;;;16964:23:0;::::1;16982:4;16964:23;::::0;::::1;::::0;:69:::1;;-1:-1:-1::0;;;;;;17009:24:0;::::1;17028:4;17009:24;;16964:69;:107;;;;-1:-1:-1::0;17055:6:0::1;::::0;-1:-1:-1;;;;;17055:16:0;;::::1;:6:::0;::::1;:16;;16964:107;:146;;;;-1:-1:-1::0;17093:6:0::1;::::0;-1:-1:-1;;;;;17093:17:0;;::::1;:6:::0;::::1;:17;;16964:146;16956:170;;;::::0;-1:-1:-1;;;16956:170:0;;9869:2:1;16956:170:0::1;::::0;::::1;9851:21:1::0;9908:2;9888:18;;;9881:30;-1:-1:-1;;;9927:18:1;;;9920:41;9978:18;;16956:170:0::1;9667:335:1::0;16956:170:0::1;17151:7;-1:-1:-1::0;;;;;17141:17:0::1;:6;-1:-1:-1::0;;;;;17141:17:0::1;::::0;17137:482:::1;;-1:-1:-1::0;;;;;17175:26:0;::::1;;::::0;;;:17:::1;:26;::::0;;;;;;;:33;;17204:4:::1;-1:-1:-1::0;;17175:33:0;;::::1;::::0;::::1;::::0;;;17223:16:::1;:25:::0;;;;;:32;;;;::::1;::::0;::::1;::::0;;17270:34:::1;::::0;17175:26;;17270:19:::1;:34::i;:::-;16817:809:::0;;:::o;17137:482::-:1;-1:-1:-1::0;;;;;17337:25:0;;::::1;;::::0;;;:17:::1;:25;::::0;;;;;;;:32;;17365:4:::1;-1:-1:-1::0;;17337:32:0;;::::1;::::0;::::1;::::0;;;17384:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;17432:24;;;:16:::1;:24:::0;;;;;;:31;;;::::1;::::0;::::1;::::0;;17478:25;;;;;;:32;;;;::::1;::::0;::::1;::::0;;;17525:33:::1;::::0;17337:25;;17525:19:::1;:33::i;:::-;17573:34;17593:7;17602:4;17573:19;:34::i;9405:83::-:0;9460:7;4886:13;4825:2;4886;:13;:::i;:::-;4869:30;;4674:13;4869:30;:::i;:::-;9471:14;;9405:83;:::o;10948:306::-;-1:-1:-1;;;;;11069:19:0;;11048:4;11069:19;;;:11;:19;;;;;;;;11089:10;11069:31;;;;;;;;-1:-1:-1;;11069:52:0;11065:126;;-1:-1:-1;;;;;11138:19:0;;;;;;:11;:19;;;;;;;;11158:10;11138:31;;;;;;;:41;;11173:6;;11138:19;:41;;11173:6;;11138:41;:::i;:::-;;;;-1:-1:-1;;11065:126:0;11210:36;11220:6;11228:9;11239:6;11210:9;:36::i;:::-;11203:43;10948:306;-1:-1:-1;;;;10948:306:0:o;22963:447::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;23098:7:::1;:14;23079:8;:15;:33;23071:67;;;::::0;-1:-1:-1;;;23071:67:0;;12030:2:1;23071:67:0::1;::::0;::::1;12012:21:1::0;12069:2;12049:18;;;12042:30;12108:23;12088:18;;;12081:51;12149:18;;23071:67:0::1;11828:345:1::0;23071:67:0::1;23154:8;23149:254;23172:8;:15;23168:1;:19;;;23149:254;;;23253:13;4825:2;23253;:13;:::i;:::-;23242:7;23250:1;23242:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23227:10;10046:7:::0;10073:16;;;;;;;;;;;23217:49:::1;;23209:80;;;::::0;-1:-1:-1;;;23209:80:0;;12512:2:1;23209:80:0::1;::::0;::::1;12494:21:1::0;12551:2;12531:18;;;12524:30;12590:20;12570:18;;;12563:48;12628:18;;23209:80:0::1;12310:342:1::0;23209:80:0::1;23304:87;23321:10;23333:8;23342:1;23333:11;;;;;;;;;;:::i;:::-;;;;;;;4825:2;23357;:13;;;;:::i;:::-;23346:7;23354:1;23346:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23372:5;23379::::0;23386:4:::1;23304:16;:87::i;:::-;-1:-1:-1::0;23189:3:0;::::1;::::0;::::1;:::i;:::-;;;;23149:254;;;;22963:447:::0;;:::o;13668:141::-;13721:7;10073:16;;;;;;5680:42;10073:16;;;;13760:39;;10073:16;13760:39;:::i;:::-;4886:13;4825:2;4886;:13;:::i;:::-;4869:30;;4674:13;4869:30;:::i;:::-;13749:51;;;;:::i;14286:453::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;14394:14:::1;::::0;::::1;;14393:15;14385:45;;;::::0;-1:-1:-1;;;14385:45:0;;13191:2:1;14385:45:0::1;::::0;::::1;13173:21:1::0;13230:2;13210:18;;;13203:30;13269:19;13249:18;;;13242:47;13306:18;;14385:45:0::1;12989:341:1::0;14385:45:0::1;5392:4;14449:6;:21;;;;:65;;;;;5442:4;14491:7;:23;;;;14449:65;:117;;;;;5496:4;14535:11;:31;;;;14449:117;14441:170;;;::::0;-1:-1:-1;;;14441:170:0;;13537:2:1;14441:170:0::1;::::0;::::1;13519:21:1::0;13576:2;13556:18;;;13549:30;13615:25;13595:18;;;13588:53;13658:18;;14441:170:0::1;13335:347:1::0;14441:170:0::1;14622:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;14658:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;14696:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14286:453::o;13817:110::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;13886:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;13886:33:0;;-1:-1:-1;;;;;178:55:1;;;13886:33:0::1;::::0;::::1;160:74:1::0;13886:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;13886:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13817:110:::0;:::o;15417:189::-;15546:6;;-1:-1:-1;;;;;15546:6:0;15508:7;10073:16;;;;;;;;;;;5543:5;;15536:41;;15556:21;;15536:41;:::i;:::-;15535:62;;;;:::i;16321:217::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;16451:3:::1;16425:22;:29;;16417:64;;;::::0;-1:-1:-1;;;16417:64:0;;14111:2:1;16417:64:0::1;::::0;::::1;14093:21:1::0;14150:2;14130:18;;;14123:30;14189:24;14169:18;;;14162:52;14231:18;;16417:64:0::1;13909:346:1::0;16417:64:0::1;16492:13;:38:::0;16321:217::o;8043:654::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;-1:-1:-1;;;;;8122:22:0;::::1;8114:96;;;::::0;-1:-1:-1;;;8114:96:0;;14462:2:1;8114:96:0::1;::::0;::::1;14444:21:1::0;14501:2;14481:18;;;14474:30;14540:34;14520:18;;;14513:62;14611:31;14591:18;;;14584:59;14660:19;;8114:96:0::1;14260:425:1::0;8114:96:0::1;-1:-1:-1::0;;;;;;;8229:16:0;::::1;::::0;8221:90:::1;;;::::0;-1:-1:-1;;;8221:90:0;;14462:2:1;8221:90:0::1;::::0;::::1;14444:21:1::0;14501:2;14481:18;;;14474:30;14540:34;14520:18;;;14513:62;14611:31;14591:18;;;14584:59;14660:19;;8221:90:0::1;14260:425:1::0;8221:90:0::1;8342:6;::::0;8322:34:::1;::::0;-1:-1:-1;;;;;8342:6:0::1;;8322:19;:34::i;:::-;8367:35;8387:8;8397:4;8367:19;:35::i;:::-;8437:6;::::0;-1:-1:-1;;;;;8437:6:0::1;8447:1;10073:16:::0;;;;;;;;;;;8427:21;8423:127:::1;;8482:6;::::0;-1:-1:-1;;;;;8482:6:0::1;10046:7:::0;10073:16;;;;;;;;;;;8465:73:::1;::::0;8482:6;8490:8;;8500:17:::1;9980:117:::0;8465:73:::1;;8423:127;8589:6;::::0;;-1:-1:-1;;;;;8606:17:0;;::::1;-1:-1:-1::0;;;;;;8606:17:0;::::1;::::0;::::1;::::0;;;8639:40:::1;::::0;8589:6;::::1;::::0;8606:17;8589:6;;8639:40:::1;::::0;8570:16:::1;::::0;8639:40:::1;8103:594;8043:654:::0;:::o;13222:134::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;-1:-1:-1;;;;;13310:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13310:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13222:134::o;12522:557::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;12597:14:::1;::::0;::::1;;12596:15;12588:24;;;::::0;::::1;;12647:4;-1:-1:-1::0;;;;;12631:21:0;::::1;::::0;12623:48:::1;;;::::0;-1:-1:-1;;;12623:48:0;;14892:2:1;12623:48:0::1;::::0;::::1;14874:21:1::0;14931:2;14911:18;;;14904:30;14970:16;14950:18;;;14943:44;15004:18;;12623:48:0::1;14690:338:1::0;12623:48:0::1;12682:11;:31:::0;;-1:-1:-1;;;;;;12682:31:0::1;::::0;-1:-1:-1;;;;;12682:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12728:23:::1;::::0;;-1:-1:-1;;;12728:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12728:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12728:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12728:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12724:348;;13061:8;::::0;::::1;12724:348;12815:9;:29:::0;;-1:-1:-1;;12815:29:0::1;;-1:-1:-1::0;;;;;12815:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12846:6:::1;:22:::0;;-1:-1:-1;;;;;;12846:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12870:15:0;;;-1:-1:-1;12870:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12870:22:0::1;::::0;;::::1;::::0;;12917:6:::1;::::0;12933:9;;12908:55:::1;::::0;12917:6;::::1;::::0;12933:9;;::::1;;-1:-1:-1::0;;12908:8:0::1;:55::i;:::-;13010:9;::::0;12978:62:::1;::::0;12995:4:::1;::::0;13010:9:::1;::::0;::::1;-1:-1:-1::0;;;;;13010:9:0::1;-1:-1:-1::0;;12978:8:0::1;:62::i;12724:348::-;12522:557:::0;:::o;8705:310::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;8772:14:::1;::::0;::::1;;8764:74;;;::::0;-1:-1:-1;;;8764:74:0;;15625:2:1;8764:74:0::1;::::0;::::1;15607:21:1::0;15664:2;15644:18;;;15637:30;15703:34;15683:18;;;15676:62;15774:17;15754:18;;;15747:45;15809:19;;8764:74:0::1;15423:411:1::0;8764:74:0::1;8869:6;::::0;8849:34:::1;::::0;-1:-1:-1;;;;;8869:6:0::1;;8849:19;:34::i;:::-;8913:6;::::0;;-1:-1:-1;;;;;;8930:19:0;::::1;::::0;;;8965:42:::1;::::0;-1:-1:-1;;;;;8913:6:0;;::::1;::::0;8894:16:::1;::::0;8913:6;;8965:42:::1;::::0;8894:16;;8965:42:::1;8753:262;8705:310::o:0;14096:182::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;14249:14:::1;:21:::0;;-1:-1:-1;;14249:21:0::1;14266:4;14249:21;::::0;;14096:182::o;11950:564::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;12032:7:::1;12027:480;;-1:-1:-1::0;;;;;12056:13:0;;::::1;12072:5;12056:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12056:21:0::1;::::0;;12092:11:::1;::::0;:34;;-1:-1:-1;;;12092:34:0;;::::1;::::0;::::1;16007:74:1::0;;;;16097:18;;;16090:50;;;;12092:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15980:18:1;;12092:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;12027:480;12163:17;::::0;:22;12159:135:::1;;12252:6;12232:17;;12214:15;:35;;;;:::i;:::-;:44;12206:72;;;::::0;-1:-1:-1;;;12206:72:0;;16353:2:1;12206:72:0::1;::::0;::::1;16335:21:1::0;16392:2;16372:18;;;16365:30;16431:17;16411:18;;;16404:45;16466:18;;12206:72:0::1;16151:339:1::0;12206:72:0::1;-1:-1:-1::0;;;;;12317:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12316:14;12308:54;;;::::0;-1:-1:-1;;;12308:54:0;;16697:2:1;12308:54:0::1;::::0;::::1;16679:21:1::0;16736:2;16716:18;;;16709:30;16775:29;16755:18;;;16748:57;16822:18;;12308:54:0::1;16495:351:1::0;12308:54:0::1;-1:-1:-1::0;;;;;12377:13:0;;::::1;;::::0;;;12393:4:::1;12377:13;::::0;;;;;;;;:20;;-1:-1:-1;;12377:20:0::1;::::0;::::1;::::0;;12432:15:::1;12412:17;:35:::0;12462:11:::1;::::0;:33;;-1:-1:-1;;;12462:33:0;;::::1;::::0;::::1;16007:74:1::0;;;;16097:18;;;16090:50;12462:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15980:18:1;;12462:33:0::1;15839:307:1::0;10765:175:0;7897:6;;10831:4;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;10880:9:::1;::::0;10848:62:::1;::::0;10865:4:::1;::::0;10880:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10880:9:0::1;-1:-1:-1::0;;10848:8:0::1;:62::i;:::-;-1:-1:-1::0;10928:4:0::1;10765:175:::0;:::o;21724:737::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;21786:14:::1;::::0;::::1;;21785:15;21777:52;;;::::0;-1:-1:-1;;;21777:52:0;;17053:2:1;21777:52:0::1;::::0;::::1;17035:21:1::0;17092:2;17072:18;;;17065:30;17131:26;17111:18;;;17104:54;17175:18;;21777:52:0::1;16851:348:1::0;21777:52:0::1;21848:16;::::0;::::1;::::0;::::1;;;21840:53;;;::::0;-1:-1:-1;;;21840:53:0;;17406:2:1;21840:53:0::1;::::0;::::1;17388:21:1::0;17445:2;17425:18;;;17418:30;17484:26;17464:18;;;17457:54;17528:18;;21840:53:0::1;17204:348:1::0;21840:53:0::1;21916:11;::::0;;;::::1;-1:-1:-1::0;;;;;21916:11:0::1;21904:106;;21958:11;:40:::0;;-1:-1:-1;;;;;;21958:40:0::1;21992:4;21958:40:::0;::::1;;::::0;;21904:106:::1;22024:11;::::0;22046:6:::1;::::0;22024:87:::1;::::0;-1:-1:-1;;;22024:87:0;;-1:-1:-1;;;;;22046:6:0;;::::1;22024:87;::::0;::::1;17780:74:1::0;17902:10;22061:12:0::1;17890:23:1::0;17870:18;;;17863:51;17962:18;22083:15:0::1;17950:31:1::0;17930:18;;;17923:59;4825:2:0::1;17998:18:1::0;;;17991:45;22024:11:0;;;::::1;;::::0;:21:::1;::::0;17752:19:1;;22024:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22137:11:0::1;::::0;22168:6:::1;::::0;-1:-1:-1;;;;;22168:6:0;;::::1;10046:7:::0;10073:16;;;;;;;;;;;;;22137:39;;-1:-1:-1;;;22137:39:0;;::::1;::::0;::::1;391:25:1::0;;;;22137:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;22137:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22137:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22137:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;22133:207:::0;::::1;;22248:13;:29:::0;;;;22292:10:::1;:27:::0;22133:207:::1;22350:14;:21:::0;;-1:-1:-1;;22350:21:0;;::::1;22367:4;22350:21;::::0;;;22382:23:::1;:31:::0;;;;::::1;::::0;;22438:15:::1;22424:11;:29:::0;21724:737::o;10105:165::-;10183:4;10200:40;10210:10;10222:9;10233:6;10200:9;:40::i;:::-;-1:-1:-1;10258:4:0;;10105:165;-1:-1:-1;;;10105:165:0:o;22659:296::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;22737:16:::1;::::0;::::1;::::0;::::1;;;22733:111;;;22795:4;-1:-1:-1::0;;;;;22778:22:0;::::1;::::0;22770:62:::1;;;::::0;-1:-1:-1;;;22770:62:0;;18499:2:1;22770:62:0::1;::::0;::::1;18481:21:1::0;18538:2;18518:18;;;18511:30;18577:29;18557:18;;;18550:57;18624:18;;22770:62:0::1;18297:351:1::0;22770:62:0::1;22908:6;::::0;22916:30:::1;::::0;-1:-1:-1;;;22916:30:0;;22940:4:::1;22916:30;::::0;::::1;160:74:1::0;22876:5:0;;-1:-1:-1;;;;;22893:14:0;;::::1;::::0;::::1;::::0;22908:6;;;::::1;::::0;22893:14;;22916:15:::1;::::0;133:18:1;;22916:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22893:54;::::0;-1:-1:-1;;;;;;22893:54:0::1;::::0;;;;;;-1:-1:-1;;;;;19034:55:1;;;22893:54:0::1;::::0;::::1;19016:74:1::0;19106:18;;;19099:34;18989:18;;22893:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;14747:358::-:0;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;14830:7:::1;:25:::0;;::::1;14866:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;14866:29:0;;;14830:25;;::::1;14866:29:::0;::::1;::::0;;14926:19:::1;14886:9:::0;14848:7;14926:19:::1;:::i;:::-;14906:7;:39:::0;;-1:-1:-1;;14906:39:0::1;::::0;::::1;::::0;;::::1;;;::::0;;14991:9:::1;:17:::0;-1:-1:-1;;14972:36:0::1;::::0;14991:17;;::::1;::::0;::::1;::::0;14972:16:::1;:36;:::i;:::-;15027:7;:17:::0;14956:52:::1;::::0;;::::1;::::0;-1:-1:-1;15027:17:0;;::::1;;:26:::0;-1:-1:-1;15027:26:0::1;15019:78;;;::::0;-1:-1:-1;;;15019:78:0;;19769:2:1;15019:78:0::1;::::0;::::1;19751:21:1::0;19808:2;19788:18;;;19781:30;19847:34;19827:18;;;19820:62;-1:-1:-1;;;19898:18:1;;;19891:37;19945:19;;15019:78:0::1;19567:403:1::0;16546:263:0;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;16655:19:::1;:33:::0;;-1:-1:-1;;16655:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;16699:22:::1;:47:::0;;-1:-1:-1;;16699:47:0::1;::::0;::::1;;;::::0;;16762:39:::1;::::0;2242:41:1;;;16762:39:0::1;::::0;2230:2:1;2215:18;16762:39:0::1;;;;;;;;16546:263:::0;;:::o;15113:296::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;-1:-1:-1;;;;;15223:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;15250:21:0;::::1;::::0;::::1;15223:48;15215:84;;;::::0;-1:-1:-1;;;15215:84:0;;20177:2:1;15215:84:0::1;::::0;::::1;20159:21:1::0;20216:2;20196:18;;;20189:30;20255:25;20235:18;;;20228:53;20298:18;;15215:84:0::1;19975:347:1::0;15215:84:0::1;15310:11;:42:::0;;-1:-1:-1;;;;;15310:42:0;;::::1;-1:-1:-1::0;;;;;;15310:42:0;;::::1;;::::0;;;15363:19;:38;;;;;::::1;::::0;::::1;;::::0;;15113:296::o;11262:680::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;11342:16:::1;::::0;::::1;::::0;::::1;;;11341:17;11333:60;;;::::0;-1:-1:-1;;;11333:60:0;;20529:2:1;11333:60:0::1;::::0;::::1;20511:21:1::0;20568:2;20548:18;;;20541:30;20607:32;20587:18;;;20580:60;20657:18;;11333:60:0::1;20327:354:1::0;11333:60:0::1;11404:20;11437:9;11404:43;;11458:16;11488:10;-1:-1:-1::0;;;;;11488:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11477:40:0::1;;11526:4;11533:10;-1:-1:-1::0;;;;;11533:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11477:74;::::0;-1:-1:-1;;;;;;11477:74:0::1;::::0;;;;;;-1:-1:-1;;;;;8579:15:1;;;11477:74:0::1;::::0;::::1;8561:34:1::0;8631:15;;8611:18;;;8604:43;8473:18;;11477:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11570:6;::::0;-1:-1:-1;;;;;11570:6:0;;::::1;11580:5;11562:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11562:23:0::1;::::0;;11458:93;;-1:-1:-1;11600:22:0;::::1;11596:200;;11659:10;-1:-1:-1::0;;;;;11659:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11648:43:0::1;;11700:4;11707:10;-1:-1:-1::0;;;;;11707:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11648:77;::::0;-1:-1:-1;;;;;;11648:77:0::1;::::0;;;;;;-1:-1:-1;;;;;8579:15:1;;;11648:77:0::1;::::0;::::1;8561:34:1::0;8631:15;;8611:18;;;8604:43;8473:18;;11648:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11639:6;:86:::0;;-1:-1:-1;;;;;;11639:86:0::1;-1:-1:-1::0;;;;;11639:86:0;;;::::1;::::0;;;::::1;::::0;;11596:200:::1;;;11767:6;:17:::0;;-1:-1:-1;;;;;;11767:17:0::1;-1:-1:-1::0;;;;;11767:17:0;::::1;;::::0;;11596:200:::1;11806:9;:22:::0;;-1:-1:-1;;11806:22:0::1;;-1:-1:-1::0;;;;;11806:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11847:6:::1;::::0;;::::1;-1:-1:-1::0;11839:15:0;;;-1:-1:-1;11839:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11839:22:0::1;::::0;;::::1;::::0;;11904:9;;11872:62:::1;::::0;11889:4:::1;::::0;11904:9;::::1;;-1:-1:-1::0;;11872:8:0::1;:62::i;22469:182::-:0;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;22536:16:::1;::::0;::::1;::::0;::::1;;;22535:17;22527:58;;;::::0;-1:-1:-1;;;22527:58:0;;21476:2:1;22527:58:0::1;::::0;::::1;21458:21:1::0;21515:2;21495:18;;;21488:30;21554;21534:18;;;21527:58;21602:18;;22527:58:0::1;21274:352:1::0;22527:58:0::1;22604:6;::::0;22596:47:::1;::::0;-1:-1:-1;;;;;22604:6:0;;::::1;::::0;22621:21:::1;22596:47:::0;::::1;;;::::0;22604:6:::1;22596:47:::0;22604:6;22596:47;22621:21;22604:6;22596:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15614:699:::0;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;15814:16;15794;4886:13:::1;4825:2;4886;:13;:::i;:::-;4869:30;::::0;4674:13:::1;4869:30;:::i;:::-;15784:26;;;;:::i;:::-;15783:47;;;;:::i;:::-;15767:13;:63:::0;15882:13;15865;4886::::1;4825:2;4886;:13;:::i;:::-;4869:30;::::0;4674:13:::1;4869:30;:::i;:::-;15855:23;;;;:::i;:::-;15854:41;;;;:::i;:::-;15841:10;:54:::0;;;15914:13:::1;::::0;:27:::1;;15906:73;;;::::0;-1:-1:-1;;;15906:73:0;;21833:2:1;15906:73:0::1;::::0;::::1;21815:21:1::0;21872:2;21852:18;;;21845:30;21911:34;21891:18;;;21884:62;-1:-1:-1;;;21962:18:1;;;21955:31;22003:19;;15906:73:0::1;21631:397:1::0;15906:73:0::1;16023:6;::::0;-1:-1:-1;;;;;16023:6:0::1;10046:7:::0;10073:16;;;;;;;;;;;5543:5:::1;::::0;16013:23:::1;::::0;16033:3:::1;16013:23;:::i;:::-;16012:44;;;;:::i;:::-;15998:10;;:58;;15990:106;;;::::0;-1:-1:-1;;;15990:106:0;;22235:2:1;15990:106:0::1;::::0;::::1;22217:21:1::0;22274:2;22254:18;;;22247:30;22313:34;22293:18;;;22286:62;-1:-1:-1;;;22364:18:1;;;22357:33;22407:19;;15990:106:0::1;22033:399:1::0;15990:106:0::1;16139:9;4886:13;4825:2;4886;:13;:::i;:::-;4869:30;::::0;4674:13:::1;4869:30;:::i;:::-;16129:19;;;;:::i;:::-;16115:10;;:33;;16107:92;;;::::0;-1:-1:-1;;;16107:92:0;;22639:2:1;16107:92:0::1;::::0;::::1;22621:21:1::0;22678:2;22658:18;;;22651:30;22717:34;22697:18;;;22690:62;-1:-1:-1;;;22768:18:1;;;22761:44;22822:19;;16107:92:0::1;22437:410:1::0;16107:92:0::1;16245:9;4886:13;4825:2;4886;:13;:::i;:::-;4869:30;::::0;4674:13:::1;4869:30;:::i;:::-;16235:19;;;;:::i;:::-;16218:13;;:36;;16210:95;;;::::0;-1:-1:-1;;;16210:95:0;;22639:2:1;16210:95:0::1;::::0;::::1;22621:21:1::0;22678:2;22658:18;;;22651:30;22717:34;22697:18;;;22690:62;-1:-1:-1;;;22768:18:1;;;22761:44;22822:19;;16210:95:0::1;22437:410:1::0;16210:95:0::1;15614:699:::0;;;;:::o;13512:148::-;7897:6;;-1:-1:-1;;;;;7897:6:0;7907:10;7897:20;7889:50;;;;-1:-1:-1;;;7889:50:0;;9250:2:1;7889:50:0;;;9232:21:1;9289:2;9269:18;;;9262:30;-1:-1:-1;;;;;;;;;;;9308:18:1;;;9301:47;9365:18;;7889:50:0;9048:341:1;7889:50:0;-1:-1:-1;;;;;13608:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;13608:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13512:148::o;10447:310::-;-1:-1:-1;;;;;10542:20:0;;10534:52;;;;-1:-1:-1;;;10534:52:0;;23054:2:1;10534:52:0;;;23036:21:1;23093:2;23073:18;;;23066:30;-1:-1:-1;;;23112:18:1;;;23105:49;23171:18;;10534:52:0;22852:343:1;10534:52:0;-1:-1:-1;;;;;10605:21:0;;10597:53;;;;-1:-1:-1;;;10597:53:0;;23054:2:1;10597:53:0;;;23036:21:1;23093:2;23073:18;;;23066:30;-1:-1:-1;;;23112:18:1;;;23105:49;23171:18;;10597:53:0;22852:343:1;10597:53:0;-1:-1:-1;;;;;10663:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10716:33;;391:25:1;;;10716:33:0;;364:18:1;10716:33:0;;;;;;;10447:310;;;:::o;18088:1783::-;18167:4;-1:-1:-1;;;;;18192:18:0;;18184:68;;;;-1:-1:-1;;;18184:68:0;;23402:2:1;18184:68:0;;;23384:21:1;23441:2;23421:18;;;23414:30;23480:34;23460:18;;;23453:62;-1:-1:-1;;;23531:18:1;;;23524:35;23576:19;;18184:68:0;23200:401:1;18184:68:0;-1:-1:-1;;;;;18271:16:0;;18263:64;;;;-1:-1:-1;;;18263:64:0;;23808:2:1;18263:64:0;;;23790:21:1;23847:2;23827:18;;;23820:30;23886:34;23866:18;;;23859:62;-1:-1:-1;;;23937:18:1;;;23930:33;23980:19;;18263:64:0;23606:399:1;18263:64:0;18355:1;18346:6;:10;18338:64;;;;-1:-1:-1;;;18338:64:0;;24212:2:1;18338:64:0;;;24194:21:1;24251:2;24231:18;;;24224:30;24290:34;24270:18;;;24263:62;-1:-1:-1;;;24341:18:1;;;24334:39;24390:19;;18338:64:0;24010:405:1;18338:64:0;-1:-1:-1;;;;;18501:13:0;;18413:8;18501:13;;;:7;:13;;;;;;18413:8;;;;18501:13;;18497:162;;;18537:4;18531:10;;18497:162;;;-1:-1:-1;;;;;18563:11:0;;;;;;:7;:11;;;;;;;;18559:100;;;18598:4;18591:11;;18559:100;;;-1:-1:-1;18643:4:0;18559:100;18673:20;18684:4;18690:2;18673:10;:20::i;:::-;18669:371;;;18714:14;;;;18710:319;;18754:5;18749:265;;18784:34;;-1:-1:-1;;;18784:34:0;;24622:2:1;18784:34:0;;;24604:21:1;24661:2;24641:18;;;24634:30;24700:26;24680:18;;;24673:54;24744:18;;18784:34:0;24420:348:1;18749:265:0;-1:-1:-1;;;;;18849:31:0;;;;;;:25;:31;;;;;;;;18848:32;:66;;;;-1:-1:-1;;;;;;18885:29:0;;;;;;:25;:29;;;;;;;;18884:30;18848:66;18844:170;;;18939:55;;-1:-1:-1;;;18939:55:0;;24975:2:1;18939:55:0;;;24957:21:1;25014:2;24994:18;;;24987:30;25053:34;25033:18;;;25026:62;-1:-1:-1;;;25104:18:1;;;25097:43;25157:19;;18939:55:0;24773:409:1;18844:170:0;19056:4;19052:742;;;19082:6;;;;19077:706;;19113:19;;;;;;;:64;;;;-1:-1:-1;;;;;;19157:20:0;;;;;;:16;:20;;;;;;;;19156:21;19113:64;:111;;;;-1:-1:-1;;;;;;19202:22:0;;;;;;:16;:22;;;;;;;;19201:23;19113:111;19109:659;;;19316:4;19267:28;10073:16;;;;;;;;;;;19373:13;;19349:37;;19345:404;;19433:10;;19474:22;;;;19470:97;;;19531:13;;19521:6;;-1:-1:-1;;;;;19521:6:0;10046:7;10073:16;;;;;;;;;;;5543:5;;19511:33;;;:::i;:::-;19510:54;;;;:::i;:::-;19500:64;;19470:97;19621:7;19597:20;:31;19593:72;;19655:7;19632:30;;19593:72;19691:34;19704:20;19691:12;:34::i;:::-;19388:361;19345:404;19244:524;19109:659;19811:52;19828:4;19834:2;19838:6;19846:3;19851:4;19857:5;19811:16;:52::i;:::-;19804:59;18088:1783;-1:-1:-1;;;;;;;18088:1783:0:o;23418:1055::-;23537:4;23558:20;23569:4;23575:2;23558:10;:20::i;:::-;23554:228;;;23613:11;;:39;;-1:-1:-1;;;23613:39:0;;-1:-1:-1;;;;;25468:15:1;;;23613:39:0;;;25450:34:1;25520:15;;;25500:18;;;25493:43;25552:18;;;25545:34;;;23582:12:0;;23613:11;;;;;:21;;25362:18:1;;23613:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23613:39:0;;;;;;;;-1:-1:-1;;23613:39:0;;;;;;;;;;;;:::i;:::-;;;23609:122;;23720:8;;;23609:122;23703:5;-1:-1:-1;23749:7:0;23745:26;;23760:8;;;23745:26;23580:202;23554:228;-1:-1:-1;;;;;23826:25:0;;23792:12;23826:25;;;:19;:25;;;;;;23807:4;;23826:25;;;:52;;-1:-1:-1;;;;;;23855:23:0;;;;;;:19;:23;;;;;;;;23826:52;23822:99;;;-1:-1:-1;23904:5:0;23822:99;-1:-1:-1;;;;;23931:13:0;;:7;:13;;;;;;;;;;:23;;23948:6;;23931:7;:23;;23948:6;;23931:23;:::i;:::-;;;;-1:-1:-1;23965:22:0;;-1:-1:-1;23991:7:0;23990:55;;24039:6;23990:55;;;24002:34;24012:4;24018:6;24026:3;24031:4;24002:9;:34::i;:::-;23965:80;;24071:14;24056:7;:11;24064:2;-1:-1:-1;;;;;24056:11:0;-1:-1:-1;;;;;24056:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24116:2;-1:-1:-1;;;;;24101:34:0;24110:4;-1:-1:-1;;;;;24101:34:0;;24120:14;24101:34;;;;391:25:1;;379:2;364:18;;245:177;24101:34:0;;;;;;;;24151:16;;;;;;;24146:298;;24184:28;24203:4;24209:2;24184:18;:28::i;:::-;24232:16;;;;;;;24231:17;:41;;;;;24252:20;24263:4;24269:2;24252:10;:20::i;:::-;24231:77;;;;-1:-1:-1;;;;;;24277:31:0;;;;;;:25;:31;;;;;;;;24276:32;24231:77;:111;;;;-1:-1:-1;;;;;;24313:29:0;;;;;;:25;:29;;;;;;;;24312:30;24231:111;:121;;;;;24347:5;24346:6;24231:121;24227:206;;;24373:44;;-1:-1:-1;;;24373:44:0;;25792:2:1;24373:44:0;;;25774:21:1;25831:2;25811:18;;;25804:30;25870:34;25850:18;;;25843:62;-1:-1:-1;;;25921:18:1;;;25914:32;25963:19;;24373:44:0;25590:398:1;24227:206:0;-1:-1:-1;24461:4:0;;23418:1055;-1:-1:-1;;;;;;;;23418:1055:0:o;17634:446::-;17735:6;;17703:4;;-1:-1:-1;;;;;17727:14:0;;;17735:6;;17727:14;;;;:43;;-1:-1:-1;17764:6:0;;-1:-1:-1;;;;;17758:12:0;;;17764:6;;17758:12;;17727:43;:79;;;;-1:-1:-1;17800:6:0;;-1:-1:-1;;;;;17800:6:0;17787:9;:19;;17727:79;:118;;;;-1:-1:-1;;;;;;17824:21:0;;;;;;:17;:21;;;;;;;;17823:22;17727:118;:159;;;;-1:-1:-1;;;;;;17863:23:0;;;;;;:17;:23;;;;;;;;17862:24;17727:159;:186;;;;-1:-1:-1;;;;;;17903:10:0;;5680:42;17903:10;;17727:186;:219;;;;-1:-1:-1;;;;;;17930:16:0;;;;17727:219;:257;;;;-1:-1:-1;;;;;;17963:21:0;;17979:4;17963:21;;17727:257;:302;;;;-1:-1:-1;18017:11:0;;-1:-1:-1;;;;;18001:28:0;;;18017:11;;;;;18001:28;;17727:302;:345;;;;-1:-1:-1;18060:11:0;;-1:-1:-1;;;;;18046:26:0;;;18060:11;;;;;18046:26;;17727:345;17720:352;17634:446;-1:-1:-1;;;17634:446:0:o;19879:1266::-;6560:6;:13;;-1:-1:-1;;6560:13:0;6569:4;6560:13;;;19962:30:::1;::::0;;::::1;::::0;::::1;::::0;;19985:7:::1;19962:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6560:6;20007:21;20003:60:::1;;20045:7;;;20003:60;20099:4;20079:26;::::0;;;:11:::1;:26;::::0;;;;;;;20114:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20114:9:0::1;20079:46:::0;;;;;;;;-1:-1:-1;;20079:67:0::1;20075:166;;20183:4;20163:26;::::0;;;:11:::1;:26;::::0;;;;;;;20198:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20198:9:0::1;20163:46:::0;;;;;;;-1:-1:-1;;20163:66:0;;20075:166:::1;20285:16;::::0;;20299:1:::1;20285:16:::0;;;;;::::1;::::0;;20261:21:::1;::::0;20285:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20285:16:0::1;20261:40;;20330:4;20312;20317:1;20312:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20312:23:0::1;;;-1:-1:-1::0;;;;;20312:23:0::1;;;::::0;::::1;20356:9;;;;;;;;;-1:-1:-1::0;;;;;20356:9:0::1;-1:-1:-1::0;;;;;20356:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20346:4;20351:1;20346:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20346:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20389:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20389:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20464:20;;20499:1:::1;::::0;20515:4;;20542::::1;::::0;20562:15:::1;::::0;20389:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20385:246;;20613:7;;;;20385:246;20776:16;::::0;::::1;::::0;20758:14;;20664:21:::1;::::0;20643:18:::1;::::0;;;20744:48:::1;::::0;;::::1;::::0;20745:27:::1;::::0;::::1;20664:21:::0;20745:27:::1;:::i;:::-;20744:48;;;;:::i;:::-;20719:73:::0;-1:-1:-1;20803:24:0::1;20830:27;20719:73:::0;20830:10;:27:::1;:::i;:::-;20872:16;::::0;::::1;::::0;20803:54;;-1:-1:-1;20872:20:0::1;;::::0;20868:133:::1;;20922:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20922:21:0;;::::1;::::0;20979:5:::1;::::0;20956:16;;20922:67:::1;::::0;;;20956:16;20922:21;20979:5;20922:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20909:80:0;;-1:-1:-1;;20868:133:0::1;21015:14:::0;;:18:::1;;::::0;21011:127:::1;;21063:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;21063:19:0;;::::1;::::0;21116:5:::1;::::0;21095:14;;21063:63:::1;::::0;;;21095:14;21063:19;21116:5;21063:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21050:76:0;;-1:-1:-1;;21011:127:0::1;19951:1194;;;;;;6584:1;-1:-1:-1::0;6596:6:0;:14;;-1:-1:-1;;6596:14:0;;;19879:1266::o;24481:804::-;24569:7;24589:18;24622:3;24618:205;;;-1:-1:-1;24655:9:0;:16;;;24618:205;;;24693:4;24689:134;;;-1:-1:-1;24727:9:0;:17;;;;;;24689:134;;;-1:-1:-1;24790:9:0;:21;;;;;;24689:134;24837:10;24851:1;24837:15;24833:39;;24863:6;24856:13;;;;;24833:39;24894:11;;;;;-1:-1:-1;;;;;24894:11:0;24918:4;24886:37;:110;;;;;24941:13;24958:1;24941:18;:54;;;;24976:13;24993:2;24976:19;24941:54;24882:138;;;-1:-1:-1;25013:4:0;24882:138;25030:17;5543:5;25050:19;25059:10;25050:6;:19;:::i;:::-;:38;;;;:::i;:::-;25030:58;-1:-1:-1;25103:13:0;;25099:141;;25149:4;25133:7;:22;;;;;;;;;;:35;;25159:9;;25133:7;:35;;25159:9;;25133:35;:::i;:::-;;;;-1:-1:-1;;25188:40:0;;391:25:1;;;25211:4:0;;-1:-1:-1;;;;;25188:40:0;;;;;379:2:1;364:18;25188:40:0;;;;;;;25099:141;25259:18;25268:9;25259:6;:18;:::i;21153:563::-;21236:16;;;;;;;21235:17;21227:65;;;;-1:-1:-1;;;21227:65:0;;27436:2:1;21227:65:0;;;27418:21:1;27475:2;27455:18;;;27448:30;27514:34;27494:18;;;27487:62;-1:-1:-1;;;27565:18:1;;;27558:33;27608:19;;21227:65:0;27234:399:1;21227:65:0;21308:20;21319:4;21325:2;21308:10;:20::i;:::-;21307:21;:37;;;;-1:-1:-1;21338:6:0;;-1:-1:-1;;;;;21332:12:0;;;21338:6;;21332:12;21307:37;21303:406;;;-1:-1:-1;;;;;21361:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21361:30:0;;;21387:4;21361:30;;;;;;21406:19;:25;;;;;:32;;;;;;;;;;21453:16;:23;;-1:-1:-1;;21453:23:0;21361:30;21453:23;;;;;21503:11;;;;21491:114;;21549:11;:40;;-1:-1:-1;;;;;;21549:40:0;21583:4;21549:40;;;;;21491:114;21619:19;:26;;-1:-1:-1;;21619:26:0;;;;;21665:32;;-1:-1:-1;2242:41:1;;21665:32:0;;2230:2:1;2215:18;21665:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:388::-;3093:6;3101;3154:2;3142:9;3133:7;3129:23;3125:32;3122:52;;;3170:1;3167;3160:12;3122:52;3209:9;3196:23;3228:31;3253:5;3228:31;:::i;:::-;3278:5;-1:-1:-1;3335:2:1;3320:18;;3307:32;3348:33;3307:32;3348:33;:::i;3418:456::-;3495:6;3503;3511;3564:2;3552:9;3543:7;3539:23;3535:32;3532:52;;;3580:1;3577;3570:12;3532:52;3619:9;3606:23;3638:31;3663:5;3638:31;:::i;:::-;3688:5;-1:-1:-1;3745:2:1;3730:18;;3717:32;3758:33;3717:32;3758:33;:::i;:::-;3418:456;;3810:7;;-1:-1:-1;;;3864:2:1;3849:18;;;;3836:32;;3418:456::o;3879:127::-;3940:10;3935:3;3931:20;3928:1;3921:31;3971:4;3968:1;3961:15;3995:4;3992:1;3985:15;4011:275;4082:2;4076:9;4147:2;4128:13;;-1:-1:-1;;4124:27:1;4112:40;;4182:18;4167:34;;4203:22;;;4164:62;4161:88;;;4229:18;;:::i;:::-;4265:2;4258:22;4011:275;;-1:-1:-1;4011:275:1:o;4291:183::-;4351:4;4384:18;4376:6;4373:30;4370:56;;;4406:18;;:::i;:::-;-1:-1:-1;4451:1:1;4447:14;4463:4;4443:25;;4291:183::o;4479:662::-;4533:5;4586:3;4579:4;4571:6;4567:17;4563:27;4553:55;;4604:1;4601;4594:12;4553:55;4640:6;4627:20;4666:4;4690:60;4706:43;4746:2;4706:43;:::i;:::-;4690:60;:::i;:::-;4784:15;;;4870:1;4866:10;;;;4854:23;;4850:32;;;4815:12;;;;4894:15;;;4891:35;;;4922:1;4919;4912:12;4891:35;4958:2;4950:6;4946:15;4970:142;4986:6;4981:3;4978:15;4970:142;;;5052:17;;5040:30;;5090:12;;;;5003;;4970:142;;;-1:-1:-1;5130:5:1;4479:662;-1:-1:-1;;;;;;4479:662:1:o;5146:1215::-;5264:6;5272;5325:2;5313:9;5304:7;5300:23;5296:32;5293:52;;;5341:1;5338;5331:12;5293:52;5381:9;5368:23;5410:18;5451:2;5443:6;5440:14;5437:34;;;5467:1;5464;5457:12;5437:34;5505:6;5494:9;5490:22;5480:32;;5550:7;5543:4;5539:2;5535:13;5531:27;5521:55;;5572:1;5569;5562:12;5521:55;5608:2;5595:16;5630:4;5654:60;5670:43;5710:2;5670:43;:::i;5654:60::-;5748:15;;;5830:1;5826:10;;;;5818:19;;5814:28;;;5779:12;;;;5854:19;;;5851:39;;;5886:1;5883;5876:12;5851:39;5910:11;;;;5930:217;5946:6;5941:3;5938:15;5930:217;;;6026:3;6013:17;6043:31;6068:5;6043:31;:::i;:::-;6087:18;;5963:12;;;;6125;;;;5930:217;;;6166:5;-1:-1:-1;;6209:18:1;;6196:32;;-1:-1:-1;;6240:16:1;;;6237:36;;;6269:1;6266;6259:12;6237:36;;6292:63;6347:7;6336:8;6325:9;6321:24;6292:63;:::i;:::-;6282:73;;;5146:1215;;;;;:::o;6555:159::-;6622:20;;6682:6;6671:18;;6661:29;;6651:57;;6704:1;6701;6694:12;6651:57;6555:159;;;:::o;6719:328::-;6793:6;6801;6809;6862:2;6850:9;6841:7;6837:23;6833:32;6830:52;;;6878:1;6875;6868:12;6830:52;6901:28;6919:9;6901:28;:::i;:::-;6891:38;;6948:37;6981:2;6970:9;6966:18;6948:37;:::i;:::-;6938:47;;7004:37;7037:2;7026:9;7022:18;7004:37;:::i;:::-;6994:47;;6719:328;;;;;:::o;7052:180::-;7111:6;7164:2;7152:9;7143:7;7139:23;7135:32;7132:52;;;7180:1;7177;7170:12;7132:52;-1:-1:-1;7203:23:1;;7052:180;-1:-1:-1;7052:180:1:o;7237:382::-;7302:6;7310;7363:2;7351:9;7342:7;7338:23;7334:32;7331:52;;;7379:1;7376;7369:12;7331:52;7418:9;7405:23;7437:31;7462:5;7437:31;:::i;7624:256::-;7690:6;7698;7751:2;7739:9;7730:7;7726:23;7722:32;7719:52;;;7767:1;7764;7757:12;7719:52;7790:28;7808:9;7790:28;:::i;:::-;7780:38;;7837:37;7870:2;7859:9;7855:18;7837:37;:::i;:::-;7827:47;;7624:256;;;;;:::o;8658:385::-;8744:6;8752;8760;8768;8821:3;8809:9;8800:7;8796:23;8792:33;8789:53;;;8838:1;8835;8828:12;8789:53;-1:-1:-1;;8861:23:1;;;8931:2;8916:18;;8903:32;;-1:-1:-1;8982:2:1;8967:18;;8954:32;;9033:2;9018:18;9005:32;;-1:-1:-1;8658:385:1;-1:-1:-1;8658:385:1:o;10007:127::-;10068:10;10063:3;10059:20;10056:1;10049:31;10099:4;10096:1;10089:15;10123:4;10120:1;10113:15;10139:422;10228:1;10271:5;10228:1;10285:270;10306:7;10296:8;10293:21;10285:270;;;10365:4;10361:1;10357:6;10353:17;10347:4;10344:27;10341:53;;;10374:18;;:::i;:::-;10424:7;10414:8;10410:22;10407:55;;;10444:16;;;;10407:55;10523:22;;;;10483:15;;;;10285:270;;;10289:3;10139:422;;;;;:::o;10566:806::-;10615:5;10645:8;10635:80;;-1:-1:-1;10686:1:1;10700:5;;10635:80;10734:4;10724:76;;-1:-1:-1;10771:1:1;10785:5;;10724:76;10816:4;10834:1;10829:59;;;;10902:1;10897:130;;;;10809:218;;10829:59;10859:1;10850:10;;10873:5;;;10897:130;10934:3;10924:8;10921:17;10918:43;;;10941:18;;:::i;:::-;-1:-1:-1;;10997:1:1;10983:16;;11012:5;;10809:218;;11111:2;11101:8;11098:16;11092:3;11086:4;11083:13;11079:36;11073:2;11063:8;11060:16;11055:2;11049:4;11046:12;11042:35;11039:77;11036:159;;;-1:-1:-1;11148:19:1;;;11180:5;;11036:159;11227:34;11252:8;11246:4;11227:34;:::i;:::-;11297:6;11293:1;11289:6;11285:19;11276:7;11273:32;11270:58;;;11308:18;;:::i;:::-;11346:20;;10566:806;-1:-1:-1;;;10566:806:1:o;11377:140::-;11435:5;11464:47;11505:4;11495:8;11491:19;11485:4;11464:47;:::i;11522:168::-;11595:9;;;11626;;11643:15;;;11637:22;;11623:37;11613:71;;11664:18;;:::i;11695:128::-;11762:9;;;11783:11;;;11780:37;;;11797:18;;:::i;12178:127::-;12239:10;12234:3;12230:20;12227:1;12220:31;12270:4;12267:1;12260:15;12294:4;12291:1;12284:15;12657:197;12695:3;12723:6;12764:2;12757:5;12753:14;12791:2;12782:7;12779:15;12776:41;;12797:18;;:::i;:::-;12846:1;12833:15;;12657:197;-1:-1:-1;;;12657:197:1:o;12859:125::-;12924:9;;;12945:10;;;12942:36;;;12958:18;;:::i;13687:217::-;13727:1;13753;13743:132;;13797:10;13792:3;13788:20;13785:1;13778:31;13832:4;13829:1;13822:15;13860:4;13857:1;13850:15;13743:132;-1:-1:-1;13889:9:1;;13687:217::o;15033:385::-;15112:6;15120;15173:2;15161:9;15152:7;15148:23;15144:32;15141:52;;;15189:1;15186;15179:12;15141:52;15221:9;15215:16;15240:31;15265:5;15240:31;:::i;:::-;15340:2;15325:18;;15319:25;15290:5;;-1:-1:-1;15353:33:1;15319:25;15353:33;:::i;18047:245::-;18126:6;18134;18187:2;18175:9;18166:7;18162:23;18158:32;18155:52;;;18203:1;18200;18193:12;18155:52;-1:-1:-1;;18226:16:1;;18282:2;18267:18;;;18261:25;18226:16;;18261:25;;-1:-1:-1;18047:245:1:o;18653:184::-;18723:6;18776:2;18764:9;18755:7;18751:23;18747:32;18744:52;;;18792:1;18789;18782:12;18744:52;-1:-1:-1;18815:16:1;;18653:184;-1:-1:-1;18653:184:1:o;19144:245::-;19211:6;19264:2;19252:9;19243:7;19239:23;19235:32;19232:52;;;19280:1;19277;19270:12;19232:52;19312:9;19306:16;19331:28;19353:5;19331:28;:::i;19394:168::-;19461:6;19487:10;;;19499;;;19483:27;;19522:11;;;19519:37;;;19536:18;;:::i;:::-;19519:37;19394:168;;;;:::o;20686:251::-;20756:6;20809:2;20797:9;20788:7;20784:23;20780:32;20777:52;;;20825:1;20822;20815:12;20777:52;20857:9;20851:16;20876:31;20901:5;20876:31;:::i;25993:1026::-;26255:4;26303:3;26292:9;26288:19;26334:6;26323:9;26316:25;26360:2;26398:6;26393:2;26382:9;26378:18;26371:34;26441:3;26436:2;26425:9;26421:18;26414:31;26465:6;26500;26494:13;26531:6;26523;26516:22;26569:3;26558:9;26554:19;26547:26;;26608:2;26600:6;26596:15;26582:29;;26629:1;26639:218;26653:6;26650:1;26647:13;26639:218;;;26718:13;;-1:-1:-1;;;;;26714:62:1;26702:75;;26832:15;;;;26797:12;;;;26675:1;26668:9;26639:218;;;-1:-1:-1;;;;;;;26913:55:1;;;;26908:2;26893:18;;26886:83;-1:-1:-1;;;27000:3:1;26985:19;26978:35;26874:3;25993:1026;-1:-1:-1;;;25993:1026:1:o

Swarm Source

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