ETH Price: $2,808.30 (-4.93%)

Token

Mumu The Bull ($MUMU)

Overview

Max Total Supply

2,324,000,000,000 $MUMU

Holders

5,673 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
462,287,672.17493664 $MUMU

Value
$0.79 ( ~0.000281308513103304 ETH) [0.0199%]
0xbEE2D469AACB46251aE33Cca91F482e26c971dFF
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Mumu The Bull the meme coin religion based around a funny bull that prints magical internet money on $ARB.

Contract Source Code Verified (Exact Match)

Contract Name:
MumuTheBull

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 Arbiscan.io on 2023-04-21
*/

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

/*

$MUMU the bull is here to trigger the infinite bull run. Join the stampede. 
https://mumuthebull.io/

*/

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 Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
}

contract MumuTheBull 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;
   
    uint256 constant private startingSupply = 2_324_000_000_000;
    string constant private _name = "Mumu The Bull";
    string constant private _symbol = "$MUMU";
    uint8 constant private _decimals = 9;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

    Ratios public _ratios = Ratios({
        bank: 300,
        marketing: 200,
        totalSwap: 500
    });

    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;
    address payable public marketingWallet = payable(0x000000000000000000000000000000000000dEaD);

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

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x6584035D6119eeD2d9BD1F0bE2E79F0B77F1195f),
        bank: payable(0x4D2da09a06A942bD0Ec34dD0D8eD1DC57F09c6fA)
    });
    
    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;
    Protections protections;
    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);

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3 || block.chainid == 5) {
            dexRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
            //Ropstein DAI 0xaD6D458402F60fD3Bd25163575031ACDce07538D
        } else if (block.chainid == 43114) {
            dexRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            dexRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else if (block.chainid == 42161) {
            dexRouter = IRouter02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        } else {
            revert();
        }


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

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

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

        _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 {
        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;
            protections.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;
            protections.setLpPair(pair, true);
        }
    }

    function setInitializer(address initializer) external onlyOwner {
        require(!tradingEnabled);
        require(initializer != address(this), "Can't be self.");
        protections = Protections(initializer);
    }

    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 {
        protections.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiBlock) external onlyOwner {
        protections.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 bank, uint16 marketing) external onlyOwner {
        _ratios.bank = bank;
        _ratios.marketing = marketing;
        _ratios.totalSwap = bank + 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 bank) external onlyOwner {
        require(marketing != address(0) && bank != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.bank = payable(bank);
    }

    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 _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(protections)
            && to != address(protections);
    }

    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) {
                    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 bankBalance = (amtBalance * ratios.bank) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - bankBalance;
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.bank > 0) {
            (success,) = _taxWallets.bank.call{value: bankBalance, 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(protections) == address(0)){
                protections = Protections(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(protections) == address(0)){
            protections = Protections(address(this));
        }
        try protections.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try protections.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        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 protections.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, buy, sell, amount) : 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, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0) { return amount; }
        if (address(protections) == 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

API
[{"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":"bank","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":"bank","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":[],"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":"marketingWallet","outputs":[{"internalType":"address payable","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":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"bank","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":"bank","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"}]

600060028190556101f4608081905260a081905260c0919091526007805465ffffffffffff199081166301f401f41790915561012c60e05260c86101005261012091909152600880546501f400c8012c9216919091179055600b80546001600160a01b031990811661dead17909155610180604052736584035d6119eed2d9bd1f0be2e79f0b77f1195f610140819052734d2da09a06a942bd0ec34dd0d8ed1dc57f09c6fa610160819052600c80548416909217909155600d805483169091179055600e805461ff0019169055600a60128190556013805461ffff19169055601580549092163317909155620000f89060099062000811565b6200010a9065021d1931c80062000829565b601580546001600160a01b03908116600090815260208190526040812093909355905416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200015e6009600a62000811565b620001709065021d1931c80062000829565b60405190815260200160405180910390a346603803620001b85760098054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e00179055620002f7565b46606103620001ef5760098054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d100179055620002f7565b4660011480620001ff5750466004145b806200020b5750466003145b80620002175750466005145b156200024b5760098054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055620002f7565b4661a86a03620002835760098054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d400179055620002f7565b4660fa03620002ba5760098054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c2900179055620002f7565b4661a4b103620002f25760098054610100600160a81b031916741b02da8cb0d097eb8d57a175b88c7d8b4799750600179055620002f7565b600080fd5b600960019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000371919062000843565b6001600160a01b031663c9c65396600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f9919062000843565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000446573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046c919062000843565b600a80546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601554600954620004c6929182169161010090910416600019620005fb565b600954620004e790309061010090046001600160a01b0316600019620005fb565b601580546001600160a01b0390811660009081526006602081815260408084208054600160ff19918216811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055965490951684526004825283208054861685179055527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf980549092161790556200086e565b6001600160a01b0383166200064d5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200069b5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000644565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000753578160001904821115620007375762000737620006fc565b808516156200074557918102915b93841c939080029062000717565b509250929050565b6000826200076c575060016200080b565b816200077b575060006200080b565b81600181146200079457600281146200079f57620007bf565b60019150506200080b565b60ff841115620007b357620007b3620006fc565b50506001821b6200080b565b5060208310610133831016604e8410600b8410161715620007e4575081810a6200080b565b620007f0838362000712565b8060001904821115620008075762000807620006fc565b0290505b92915050565b60006200082260ff8416836200075b565b9392505050565b80820281158282048414176200080b576200080b620006fc565b6000602082840312156200085657600080fd5b81516001600160a01b03811681146200082257600080fd5b613ad9806200087e6000396000f3fe6080604052600436106103595760003560e01c80635a6f0918116101bb578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109e7578063fb78680d14610a2e578063fdb78c0e14610a4e578063feadde9c14610a6d57600080fd5b8063dd62ed3e1461096c578063eafb5a3c146109b2578063ee5d9c2d146109d257600080fd5b8063bcd96a25116100d1578063bcd96a25146108db578063bfc2fc35146108fb578063cf8477061461091b578063d3f6a1571461094c57600080fd5b8063b1b08f711461059b578063b3d514fb1461059b578063b7df8b36146108c157600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461083e57806395d89b4114610853578063a9059cbb14610881578063ab558e4d146108a157600080fd5b806380c581d1146107eb578063893d20e81461080b5780638a63bd9b1461082957600080fd5b8063715018a611610195578063715018a6146107a157806375f0a874146107b657806378648edf146107d657600080fd5b80635a6f0918146107355780635c24b0741461074b57806370a082311461076b57600080fd5b80632b112e49116102955780634ada218b116102335780634fb2e45d1161020d5780634fb2e45d1461069d5780634fbee193146106bd57806350a8e016146106f6578063590ffdce1461071557600080fd5b80634ada218b146106435780634bbb93eb1461065d5780634e718e481461067d57600080fd5b8063313ce5671161026f578063313ce567146105c757806332cde664146105e357806333251a0b14610603578063452ed4f11461062357600080fd5b80632b112e49146105865780632b28fc7a1461059b5780632e8fa821146105b157600080fd5b806307dd79e01161030257806318160ddd116102dc57806318160ddd1461051b57806323b872dd146105305780632610eaca14610550578063285777511461057057600080fd5b806307dd79e014610498578063095ea7b3146104c25780630dcbcf1c146104e257600080fd5b8063069d955f11610333578063069d955f146103de57806306fdde03146104345780630758d9241461047357600080fd5b806303fd2a45146103655780630445b66714610398578063044df726146103bc57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103ae600f5481565b60405190815260200161038f565b3480156103c857600080fd5b506103dc6103d73660046133f8565b610a8d565b005b3480156103ea57600080fd5b5060075461040f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561044057600080fd5b5060408051808201909152600d81526c135d5b5d48151a1948109d5b1b609a1b60208201525b60405161038f9190613431565b34801561047f57600080fd5b5060095461037b9061010090046001600160a01b031681565b3480156104a457600080fd5b506009546104b29060ff1681565b604051901515815260200161038f565b3480156104ce57600080fd5b506104b26104dd366004613494565b610b4b565b3480156104ee57600080fd5b506104b26104fd3660046134c0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052757600080fd5b506103ae610b62565b34801561053c57600080fd5b506104b261054b3660046134dd565b610b85565b34801561055c57600080fd5b506103dc61056b3660046135f4565b610bfd565b34801561057c57600080fd5b506103ae60125481565b34801561059257600080fd5b506103ae610db2565b3480156105a757600080fd5b506103ae6103e881565b3480156105bd57600080fd5b506103ae60105481565b3480156105d357600080fd5b506040516009815260200161038f565b3480156105ef57600080fd5b506103dc6105fe3660046136cd565b610e32565b34801561060f57600080fd5b506103dc61061e3660046134c0565b610f86565b34801561062f57600080fd5b50600a5461037b906001600160a01b031681565b34801561064f57600080fd5b506013546104b29060ff1681565b34801561066957600080fd5b506103ae610678366004613710565b611037565b34801561068957600080fd5b506103dc610698366004613710565b61106b565b3480156106a957600080fd5b506103dc6106b83660046134c0565b611109565b3480156106c957600080fd5b506104b26106d83660046134c0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070257600080fd5b506013546104b290610100900460ff1681565b34801561072157600080fd5b506103dc610730366004613729565b61130b565b34801561074157600080fd5b506103ae60145481565b34801561075757600080fd5b506103dc6107663660046134c0565b61137e565b34801561077757600080fd5b506103ae6107863660046134c0565b6001600160a01b031660009081526020819052604090205490565b3480156107ad57600080fd5b506103dc611458565b3480156107c257600080fd5b50600b5461037b906001600160a01b031681565b3480156107e257600080fd5b506103dc611505565b3480156107f757600080fd5b506103dc610806366004613729565b61155c565b34801561081757600080fd5b506015546001600160a01b031661037b565b34801561083557600080fd5b506104b2611735565b34801561084a57600080fd5b506103dc6117a5565b34801561085f57600080fd5b50604080518082019091526005815264244d554d5560d81b6020820152610466565b34801561088d57600080fd5b506104b261089c366004613494565b6119ef565b3480156108ad57600080fd5b506103dc6108bc3660046134c0565b611a06565b3480156108cd57600080fd5b506011546104b29060ff1681565b3480156108e757600080fd5b506103dc6108f6366004613747565b611ba0565b34801561090757600080fd5b506103dc6109163660046133f8565b611cba565b34801561092757600080fd5b5060085461040f9061ffff808216916201000081048216916401000000009091041683565b34801561095857600080fd5b506103dc61096736600461377a565b611d61565b34801561097857600080fd5b506103ae61098736600461377a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109be57600080fd5b506103dc6109cd3660046134c0565b611e43565b3480156109de57600080fd5b506103dc612244565b3480156109f357600080fd5b50600c54600d54610a0e916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161038f565b348015610a3a57600080fd5b506103dc610a493660046137a8565b612320565b348015610a5a57600080fd5b50600e546104b290610100900460ff1681565b348015610a7957600080fd5b506103dc610a88366004613729565b6125ea565b6015546001600160a01b03163314610ada5760405162461bcd60e51b81526020600482015260116024820152600080516020613a8483398151915260448201526064015b60405180910390fd5b60135460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b505050505050565b6000610b5833848461265d565b5060015b92915050565b6000610b706009600a6138d4565b610b809065021d1931c8006138e3565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610bea576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610be49084906138fa565b90915550505b610bf5848484612756565b949350505050565b6015546001600160a01b03163314610c455760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b8051825114610c965760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ad1565b60005b82518161ffff161015610dad57610cb26009600a6138d4565b828261ffff1681518110610cc857610cc861390d565b6020026020010151610cda91906138e3565b336000908152602081905260409020541015610d385760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ad1565b610d9a33848361ffff1681518110610d5257610d5261390d565b60200260200101516009600a610d6891906138d4565b858561ffff1681518110610d7e57610d7e61390d565b6020026020010151610d9091906138e3565b6000806001612a97565b5080610da581613923565b915050610c99565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e0c9190613944565b610e186009600a6138d4565b610e289065021d1931c8006138e3565b610b8091906138fa565b6015546001600160a01b03163314610e7a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60095460ff1615610ecd5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ad1565b6103e88361ffff1611158015610ee957506103e88261ffff1611155b8015610efb57506103e88161ffff1611155b610f475760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ad1565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6015546001600160a01b03163314610fce5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6013546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b5050505050565b600a546001600160a01b0316600090815260208190526040812054612710906110619084906138e3565b610b5c9190613957565b6015546001600160a01b031633146110b35760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60968111156111045760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ad1565b601255565b6015546001600160a01b031633146111515760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad1565b61deac196001600160a01b0382160161124e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad1565b601554611265906001600160a01b0316600061130b565b61127081600161130b565b6015546001600160a01b0316600090815260208190526040902054156112b9576015546001600160a01b03166000818152602081905260409020546112b791908390610d90565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146113535760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6015546001600160a01b031633146113c65760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60135460ff16156113d657600080fd5b306001600160a01b0382160361142e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ad1565b601380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6015546001600160a01b031633146114a05760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6015546114b7906001600160a01b0316600061130b565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b0316331461154d5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6009805460ff19166001179055565b6015546001600160a01b031633146115a45760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b80611602576001600160a01b03828116600081815260016020526040808220805460ff1916905560135490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610b15565b60025415611669576203f4806002544261161c91906138fa565b116116695760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ad1565b6001600160a01b03821660009081526001602052604090205460ff16156116d25760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ad1565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560135491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b15565b5050565b6015546000906001600160a01b031633146117805760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60095461179f90309061010090046001600160a01b031660001961265d565b50600190565b6015546001600160a01b031633146117ed5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60135460ff16156118405760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ad1565b601354610100900460ff166118975760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ad1565b6013546201000090046001600160a01b03166118c7576013805462010000600160b01b0319163062010000021790555b601354600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561193957600080fd5b505af192505050801561194a575060015b50601354600a546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156119cd575060408051601f3d908101601f191682019092526119ca91810190613979565b60015b156119dc57600f919091556010555b6013805460ff1916600117905542601455565b60006119fc338484612756565b5060019392505050565b6015546001600160a01b03163314611a4e5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff1615611ab657306001600160a01b03821603611ab65760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ad1565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b31919061399d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad91906139b6565b6015546001600160a01b03163314611be85760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6008805461ffff838116620100000263ffffffff1990921690851617179055611c1181836139d3565b6008805465ffff00000000191664010000000061ffff93841602179055600754600091611c4791620100008104821691166139d3565b60085461ffff9182169250640100000000900416811015610dad5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ad1565b6015546001600160a01b03163314611d025760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546001600160a01b03163314611da95760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03821615801590611dc957506001600160a01b03811615155b611e155760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ad1565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6015546001600160a01b03163314611e8b5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff1615611ee35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ad1565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4c91906139f5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd91906139f5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202c91906139f5565b600a546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166121c257816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb91906139f5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212c91906139f5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906139f5565b600a80546001600160a01b0319166001600160a01b03929092169190911790556121de565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610dad92309291041660001961265d565b6015546001600160a01b0316331461228c5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff16156122e45760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ad1565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561231d573d6000803e3d6000fd5b50565b6015546001600160a01b031633146123685760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b82846123766009600a6138d4565b6123869065021d1931c8006138e3565b61239091906138e3565b61239a9190613957565b600f5580826123ab6009600a6138d4565b6123bb9065021d1931c8006138e3565b6123c591906138e3565b6123cf9190613957565b6010819055600f54111561242f5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ad1565b600a546001600160a01b0316600090815260208190526040902054612710906124599060966138e3565b6124639190613957565b60105411156124c05760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ad1565b620f42406124d06009600a6138d4565b6124e09065021d1931c8006138e3565b6124ea9190613957565b60105410156125525760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ad1565b620f42406125626009600a6138d4565b6125729065021d1931c8006138e3565b61257c9190613957565b600f5410156125e45760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ad1565b50505050565b6015546001600160a01b031633146126325760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166126a95760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ad1565b6001600160a01b0382166126f55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ad1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b03831661281e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b600082116128805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156128ae57600192506128dc565b6001600160a01b03861660009081526001602052604090205460ff16156128d857600191506128dc565b5060015b6128e68787612d4a565b156129e75760135460ff166129e757806129425760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ad1565b6001600160a01b03871660009081526005602052604090205460ff1615801561298457506001600160a01b03861660009081526005602052604090205460ff16155b156129e75760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ad1565b8115612a7e57600e5460ff16612a7e57600e54610100900460ff1615612a7e5730600090815260208190526040902054600f548110612a7c5760105460115460ff1615612a6657601254600a546001600160a01b031660009081526020819052604090205461271091612a59916138e3565b612a639190613957565b90505b808210612a71578091505b612a7a82612e61565b505b505b612a8c878787868686612a97565b979650505050505050565b6000612aa38787612d4a565b15612b3d5760135460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612b26575060408051601f3d908101601f19168201909252612b23918101906139b6565b60015b612b2f57600080fd5b905080612b3b57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612b7f57506001600160a01b03871660009081526006602052604090205460ff165b15612b88575060005b6001600160a01b03881660009081526020819052604081208054889290612bb09084906138fa565b909155506000905081612bc35786612bcf565b612bcf8987878a613195565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612c059190613944565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5191815260200190565b60405180910390a3601354610100900460ff16612d3b57612c7289896132aa565b601354610100900460ff16158015612c8f5750612c8f8989612d4a565b8015612cb457506001600160a01b03891660009081526005602052604090205460ff16155b8015612cd957506001600160a01b03881660009081526005602052604090205460ff16155b8015612ce3575083155b15612d3b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ad1565b50600198975050505050505050565b6015546000906001600160a01b03848116911614801590612d7957506015546001600160a01b03838116911614155b8015612d9057506015546001600160a01b03163214155b8015612db557506001600160a01b03821660009081526004602052604090205460ff16155b8015612dda57506001600160a01b03831660009081526004602052604090205460ff16155b8015612df157506001600160a01b03821661dead14155b8015612e0557506001600160a01b03821615155b8015612e1a57506001600160a01b0383163014155b8015612e3a57506013546001600160a01b03848116620100009092041614155b8015612e5a57506013546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260085461ffff8082168352620100008204811660208401526401000000009091041691810182905290600003612eae5750613188565b30600090815260036020908152604080832060095461010090046001600160a01b0316845290915290205460001914612f115730600090815260036020908152604080832060095461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f4657612f4661390d565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdd91906139f5565b81600181518110612ff057612ff061390d565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac9479061303d908690600090869030904290600401613a12565b600060405180830381600087803b15801561305757600080fd5b505af1925050508015613068575060015b613073575050613188565b604082015182514791600091829161ffff908116916130939116856138e3565b61309d9190613957565b905060006130ab82856138fa565b602087015190915061ffff161561311957600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461310e576040519150601f19603f3d011682016040523d82523d6000602084013e613113565b606091505b50909350505b855161ffff161561318157600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613176576040519150601f19603f3d011682016040523d82523d6000602084013e61317b565b606091505b50909350505b5050505050505b50600e805460ff19169055565b60008084156131ab575060075461ffff166131d5565b83156131c4575060075462010000900461ffff166131d5565b50600754640100000000900461ffff165b806000036131e65782915050610bf5565b6013546201000090046001600160a01b031630148015613210575046600114806132105750466038145b1561321a57506111945b600061271061322983866138e3565b6132339190613957565b905080156132a057306000908152602081905260408120805483929061325a908490613944565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612a8c81856138fa565b601354610100900460ff161561330e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ad1565b6133188282612d4a565b1580156133325750600a546001600160a01b038281169116145b15611731576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556013805461ff0019166101001790819055620100009004166133aa576013805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611d55565b801515811461231d57600080fd5b6000806040838503121561340b57600080fd5b8235613416816133ea565b91506020830135613426816133ea565b809150509250929050565b600060208083528351808285015260005b8181101561345e57858101830151858201604001528201613442565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461231d57600080fd5b600080604083850312156134a757600080fd5b82356134b28161347f565b946020939093013593505050565b6000602082840312156134d257600080fd5b8135612e5a8161347f565b6000806000606084860312156134f257600080fd5b83356134fd8161347f565b9250602084013561350d8161347f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561355d5761355d61351e565b604052919050565b600067ffffffffffffffff82111561357f5761357f61351e565b5060051b60200190565b600082601f83011261359a57600080fd5b813560206135af6135aa83613565565b613534565b82815260059290921b840181019181810190868411156135ce57600080fd5b8286015b848110156135e957803583529183019183016135d2565b509695505050505050565b6000806040838503121561360757600080fd5b823567ffffffffffffffff8082111561361f57600080fd5b818501915085601f83011261363357600080fd5b813560206136436135aa83613565565b82815260059290921b8401810191818101908984111561366257600080fd5b948201945b8386101561368957853561367a8161347f565b82529482019490820190613667565b9650508601359250508082111561369f57600080fd5b506136ac85828601613589565b9150509250929050565b803561ffff811681146136c857600080fd5b919050565b6000806000606084860312156136e257600080fd5b6136eb846136b6565b92506136f9602085016136b6565b9150613707604085016136b6565b90509250925092565b60006020828403121561372257600080fd5b5035919050565b6000806040838503121561373c57600080fd5b82356134168161347f565b6000806040838503121561375a57600080fd5b613763836136b6565b9150613771602084016136b6565b90509250929050565b6000806040838503121561378d57600080fd5b82356137988161347f565b915060208301356134268161347f565b600080600080608085870312156137be57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561382b578160001904821115613811576138116137da565b8085161561381e57918102915b93841c93908002906137f5565b509250929050565b60008261384257506001610b5c565b8161384f57506000610b5c565b8160018114613865576002811461386f5761388b565b6001915050610b5c565b60ff841115613880576138806137da565b50506001821b610b5c565b5060208310610133831016604e8410600b84101617156138ae575081810a610b5c565b6138b883836137f0565b80600019048211156138cc576138cc6137da565b029392505050565b6000612e5a60ff841683613833565b8082028115828204841417610b5c57610b5c6137da565b81810381811115610b5c57610b5c6137da565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361393a5761393a6137da565b6001019392505050565b80820180821115610b5c57610b5c6137da565b60008261397457634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561398c57600080fd5b505080516020909101519092909150565b6000602082840312156139af57600080fd5b5051919050565b6000602082840312156139c857600080fd5b8151612e5a816133ea565b61ffff8181168382160190808211156139ee576139ee6137da565b5092915050565b600060208284031215613a0757600080fd5b8151612e5a8161347f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a625784516001600160a01b031683529383019391830191600101613a3d565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220da8c51a20da8151e15f9a0fcf113062d64640f0d7a69fa61607c0dc04e28887e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103595760003560e01c80635a6f0918116101bb578063b1b08f71116100f7578063dd62ed3e11610095578063f94aa1b41161006f578063f94aa1b4146109e7578063fb78680d14610a2e578063fdb78c0e14610a4e578063feadde9c14610a6d57600080fd5b8063dd62ed3e1461096c578063eafb5a3c146109b2578063ee5d9c2d146109d257600080fd5b8063bcd96a25116100d1578063bcd96a25146108db578063bfc2fc35146108fb578063cf8477061461091b578063d3f6a1571461094c57600080fd5b8063b1b08f711461059b578063b3d514fb1461059b578063b7df8b36146108c157600080fd5b806380c581d1116101645780638a8c523c1161013e5780638a8c523c1461083e57806395d89b4114610853578063a9059cbb14610881578063ab558e4d146108a157600080fd5b806380c581d1146107eb578063893d20e81461080b5780638a63bd9b1461082957600080fd5b8063715018a611610195578063715018a6146107a157806375f0a874146107b657806378648edf146107d657600080fd5b80635a6f0918146107355780635c24b0741461074b57806370a082311461076b57600080fd5b80632b112e49116102955780634ada218b116102335780634fb2e45d1161020d5780634fb2e45d1461069d5780634fbee193146106bd57806350a8e016146106f6578063590ffdce1461071557600080fd5b80634ada218b146106435780634bbb93eb1461065d5780634e718e481461067d57600080fd5b8063313ce5671161026f578063313ce567146105c757806332cde664146105e357806333251a0b14610603578063452ed4f11461062357600080fd5b80632b112e49146105865780632b28fc7a1461059b5780632e8fa821146105b157600080fd5b806307dd79e01161030257806318160ddd116102dc57806318160ddd1461051b57806323b872dd146105305780632610eaca14610550578063285777511461057057600080fd5b806307dd79e014610498578063095ea7b3146104c25780630dcbcf1c146104e257600080fd5b8063069d955f11610333578063069d955f146103de57806306fdde03146104345780630758d9241461047357600080fd5b806303fd2a45146103655780630445b66714610398578063044df726146103bc57600080fd5b3661036057005b600080fd5b34801561037157600080fd5b5061037b61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103a457600080fd5b506103ae600f5481565b60405190815260200161038f565b3480156103c857600080fd5b506103dc6103d73660046133f8565b610a8d565b005b3480156103ea57600080fd5b5060075461040f9061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161038f565b34801561044057600080fd5b5060408051808201909152600d81526c135d5b5d48151a1948109d5b1b609a1b60208201525b60405161038f9190613431565b34801561047f57600080fd5b5060095461037b9061010090046001600160a01b031681565b3480156104a457600080fd5b506009546104b29060ff1681565b604051901515815260200161038f565b3480156104ce57600080fd5b506104b26104dd366004613494565b610b4b565b3480156104ee57600080fd5b506104b26104fd3660046134c0565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561052757600080fd5b506103ae610b62565b34801561053c57600080fd5b506104b261054b3660046134dd565b610b85565b34801561055c57600080fd5b506103dc61056b3660046135f4565b610bfd565b34801561057c57600080fd5b506103ae60125481565b34801561059257600080fd5b506103ae610db2565b3480156105a757600080fd5b506103ae6103e881565b3480156105bd57600080fd5b506103ae60105481565b3480156105d357600080fd5b506040516009815260200161038f565b3480156105ef57600080fd5b506103dc6105fe3660046136cd565b610e32565b34801561060f57600080fd5b506103dc61061e3660046134c0565b610f86565b34801561062f57600080fd5b50600a5461037b906001600160a01b031681565b34801561064f57600080fd5b506013546104b29060ff1681565b34801561066957600080fd5b506103ae610678366004613710565b611037565b34801561068957600080fd5b506103dc610698366004613710565b61106b565b3480156106a957600080fd5b506103dc6106b83660046134c0565b611109565b3480156106c957600080fd5b506104b26106d83660046134c0565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561070257600080fd5b506013546104b290610100900460ff1681565b34801561072157600080fd5b506103dc610730366004613729565b61130b565b34801561074157600080fd5b506103ae60145481565b34801561075757600080fd5b506103dc6107663660046134c0565b61137e565b34801561077757600080fd5b506103ae6107863660046134c0565b6001600160a01b031660009081526020819052604090205490565b3480156107ad57600080fd5b506103dc611458565b3480156107c257600080fd5b50600b5461037b906001600160a01b031681565b3480156107e257600080fd5b506103dc611505565b3480156107f757600080fd5b506103dc610806366004613729565b61155c565b34801561081757600080fd5b506015546001600160a01b031661037b565b34801561083557600080fd5b506104b2611735565b34801561084a57600080fd5b506103dc6117a5565b34801561085f57600080fd5b50604080518082019091526005815264244d554d5560d81b6020820152610466565b34801561088d57600080fd5b506104b261089c366004613494565b6119ef565b3480156108ad57600080fd5b506103dc6108bc3660046134c0565b611a06565b3480156108cd57600080fd5b506011546104b29060ff1681565b3480156108e757600080fd5b506103dc6108f6366004613747565b611ba0565b34801561090757600080fd5b506103dc6109163660046133f8565b611cba565b34801561092757600080fd5b5060085461040f9061ffff808216916201000081048216916401000000009091041683565b34801561095857600080fd5b506103dc61096736600461377a565b611d61565b34801561097857600080fd5b506103ae61098736600461377a565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109be57600080fd5b506103dc6109cd3660046134c0565b611e43565b3480156109de57600080fd5b506103dc612244565b3480156109f357600080fd5b50600c54600d54610a0e916001600160a01b03908116911682565b604080516001600160a01b0393841681529290911660208301520161038f565b348015610a3a57600080fd5b506103dc610a493660046137a8565b612320565b348015610a5a57600080fd5b50600e546104b290610100900460ff1681565b348015610a7957600080fd5b506103dc610a88366004613729565b6125ea565b6015546001600160a01b03163314610ada5760405162461bcd60e51b81526020600482015260116024820152600080516020613a8483398151915260448201526064015b60405180910390fd5b60135460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610b2f57600080fd5b505af1158015610b43573d6000803e3d6000fd5b505050505050565b6000610b5833848461265d565b5060015b92915050565b6000610b706009600a6138d4565b610b809065021d1931c8006138e3565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610bea576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610be49084906138fa565b90915550505b610bf5848484612756565b949350505050565b6015546001600160a01b03163314610c455760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b8051825114610c965760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ad1565b60005b82518161ffff161015610dad57610cb26009600a6138d4565b828261ffff1681518110610cc857610cc861390d565b6020026020010151610cda91906138e3565b336000908152602081905260409020541015610d385760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ad1565b610d9a33848361ffff1681518110610d5257610d5261390d565b60200260200101516009600a610d6891906138d4565b858561ffff1681518110610d7e57610d7e61390d565b6020026020010151610d9091906138e3565b6000806001612a97565b5080610da581613923565b915050610c99565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610e0c9190613944565b610e186009600a6138d4565b610e289065021d1931c8006138e3565b610b8091906138fa565b6015546001600160a01b03163314610e7a5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60095460ff1615610ecd5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ad1565b6103e88361ffff1611158015610ee957506103e88261ffff1611155b8015610efb57506103e88161ffff1611155b610f475760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ad1565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6015546001600160a01b03163314610fce5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6013546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561101c57600080fd5b505af1158015611030573d6000803e3d6000fd5b5050505050565b600a546001600160a01b0316600090815260208190526040812054612710906110619084906138e3565b610b5c9190613957565b6015546001600160a01b031633146110b35760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60968111156111045760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ad1565b601255565b6015546001600160a01b031633146111515760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b0381166111cd5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad1565b61deac196001600160a01b0382160161124e5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ad1565b601554611265906001600160a01b0316600061130b565b61127081600161130b565b6015546001600160a01b0316600090815260208190526040902054156112b9576015546001600160a01b03166000818152602081905260409020546112b791908390610d90565b505b601580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6015546001600160a01b031633146113535760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6015546001600160a01b031633146113c65760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60135460ff16156113d657600080fd5b306001600160a01b0382160361142e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ad1565b601380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6015546001600160a01b031633146114a05760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6015546114b7906001600160a01b0316600061130b565b601580546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6015546001600160a01b0316331461154d5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6009805460ff19166001179055565b6015546001600160a01b031633146115a45760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b80611602576001600160a01b03828116600081815260016020526040808220805460ff1916905560135490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610b15565b60025415611669576203f4806002544261161c91906138fa565b116116695760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ad1565b6001600160a01b03821660009081526001602052604090205460ff16156116d25760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ad1565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560135491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610b15565b5050565b6015546000906001600160a01b031633146117805760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60095461179f90309061010090046001600160a01b031660001961265d565b50600190565b6015546001600160a01b031633146117ed5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b60135460ff16156118405760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ad1565b601354610100900460ff166118975760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ad1565b6013546201000090046001600160a01b03166118c7576013805462010000600160b01b0319163062010000021790555b601354600a54604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260096064820152620100009092041690636c115c3490608401600060405180830381600087803b15801561193957600080fd5b505af192505050801561194a575060015b50601354600a546001600160a01b03908116600090815260208190526040908190205490516312d38e5760e11b815260048101919091526201000090920416906325a71cae9060240160408051808303816000875af19250505080156119cd575060408051601f3d908101601f191682019092526119ca91810190613979565b60015b156119dc57600f919091556010555b6013805460ff1916600117905542601455565b60006119fc338484612756565b5060019392505050565b6015546001600160a01b03163314611a4e5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff1615611ab657306001600160a01b03821603611ab65760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ad1565b6015546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b31919061399d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad91906139b6565b6015546001600160a01b03163314611be85760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6008805461ffff838116620100000263ffffffff1990921690851617179055611c1181836139d3565b6008805465ffff00000000191664010000000061ffff93841602179055600754600091611c4791620100008104821691166139d3565b60085461ffff9182169250640100000000900416811015610dad5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ad1565b6015546001600160a01b03163314611d025760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b600e805461ff001916610100841515908102919091179091556011805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6015546001600160a01b03163314611da95760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03821615801590611dc957506001600160a01b03811615155b611e155760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ad1565b600c80546001600160a01b039384166001600160a01b031991821617909155600d8054929093169116179055565b6015546001600160a01b03163314611e8b5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff1615611ee35760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ad1565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4c91906139f5565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fbd91906139f5565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612008573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061202c91906139f5565b600a546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166121c257816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612097573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bb91906139f5565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212c91906139f5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219d91906139f5565b600a80546001600160a01b0319166001600160a01b03929092169190911790556121de565b600a80546001600160a01b0319166001600160a01b0383161790555b6009805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b038581168202929092178355600a5482166000908152600160208190526040909120805460ff191690911790559154610dad92309291041660001961265d565b6015546001600160a01b0316331461228c5760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b601354610100900460ff16156122e45760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ad1565b6015546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561231d573d6000803e3d6000fd5b50565b6015546001600160a01b031633146123685760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b82846123766009600a6138d4565b6123869065021d1931c8006138e3565b61239091906138e3565b61239a9190613957565b600f5580826123ab6009600a6138d4565b6123bb9065021d1931c8006138e3565b6123c591906138e3565b6123cf9190613957565b6010819055600f54111561242f5760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ad1565b600a546001600160a01b0316600090815260208190526040902054612710906124599060966138e3565b6124639190613957565b60105411156124c05760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ad1565b620f42406124d06009600a6138d4565b6124e09065021d1931c8006138e3565b6124ea9190613957565b60105410156125525760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ad1565b620f42406125626009600a6138d4565b6125729065021d1931c8006138e3565b61257c9190613957565b600f5410156125e45760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ad1565b50505050565b6015546001600160a01b031633146126325760405162461bcd60e51b81526020600482015260116024820152600080516020613a848339815191526044820152606401610ad1565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166126a95760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ad1565b6001600160a01b0382166126f55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ad1565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166127bc5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ad1565b6001600160a01b03831661281e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ad1565b600082116128805760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ad1565b6001600160a01b0384166000908152600160205260408120548190819060ff16156128ae57600192506128dc565b6001600160a01b03861660009081526001602052604090205460ff16156128d857600191506128dc565b5060015b6128e68787612d4a565b156129e75760135460ff166129e757806129425760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ad1565b6001600160a01b03871660009081526005602052604090205460ff1615801561298457506001600160a01b03861660009081526005602052604090205460ff16155b156129e75760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ad1565b8115612a7e57600e5460ff16612a7e57600e54610100900460ff1615612a7e5730600090815260208190526040902054600f548110612a7c5760105460115460ff1615612a6657601254600a546001600160a01b031660009081526020819052604090205461271091612a59916138e3565b612a639190613957565b90505b808210612a71578091505b612a7a82612e61565b505b505b612a8c878787868686612a97565b979650505050505050565b6000612aa38787612d4a565b15612b3d5760135460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015612b26575060408051601f3d908101601f19168201909252612b23918101906139b6565b60015b612b2f57600080fd5b905080612b3b57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680612b7f57506001600160a01b03871660009081526006602052604090205460ff165b15612b88575060005b6001600160a01b03881660009081526020819052604081208054889290612bb09084906138fa565b909155506000905081612bc35786612bcf565b612bcf8987878a613195565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254612c059190613944565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c5191815260200190565b60405180910390a3601354610100900460ff16612d3b57612c7289896132aa565b601354610100900460ff16158015612c8f5750612c8f8989612d4a565b8015612cb457506001600160a01b03891660009081526005602052604090205460ff16155b8015612cd957506001600160a01b03881660009081526005602052604090205460ff16155b8015612ce3575083155b15612d3b5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ad1565b50600198975050505050505050565b6015546000906001600160a01b03848116911614801590612d7957506015546001600160a01b03838116911614155b8015612d9057506015546001600160a01b03163214155b8015612db557506001600160a01b03821660009081526004602052604090205460ff16155b8015612dda57506001600160a01b03831660009081526004602052604090205460ff16155b8015612df157506001600160a01b03821661dead14155b8015612e0557506001600160a01b03821615155b8015612e1a57506001600160a01b0383163014155b8015612e3a57506013546001600160a01b03848116620100009092041614155b8015612e5a57506013546001600160a01b03838116620100009092041614155b9392505050565b600e805460ff191660011790556040805160608101825260085461ffff8082168352620100008204811660208401526401000000009091041691810182905290600003612eae5750613188565b30600090815260036020908152604080832060095461010090046001600160a01b0316845290915290205460001914612f115730600090815260036020908152604080832060095461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f4657612f4661390d565b60200260200101906001600160a01b031690816001600160a01b031681525050600960019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdd91906139f5565b81600181518110612ff057612ff061390d565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b81526101009091049091169063791ac9479061303d908690600090869030904290600401613a12565b600060405180830381600087803b15801561305757600080fd5b505af1925050508015613068575060015b613073575050613188565b604082015182514791600091829161ffff908116916130939116856138e3565b61309d9190613957565b905060006130ab82856138fa565b602087015190915061ffff161561311957600c546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461310e576040519150601f19603f3d011682016040523d82523d6000602084013e613113565b606091505b50909350505b855161ffff161561318157600d546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114613176576040519150601f19603f3d011682016040523d82523d6000602084013e61317b565b606091505b50909350505b5050505050505b50600e805460ff19169055565b60008084156131ab575060075461ffff166131d5565b83156131c4575060075462010000900461ffff166131d5565b50600754640100000000900461ffff165b806000036131e65782915050610bf5565b6013546201000090046001600160a01b031630148015613210575046600114806132105750466038145b1561321a57506111945b600061271061322983866138e3565b6132339190613957565b905080156132a057306000908152602081905260408120805483929061325a908490613944565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b612a8c81856138fa565b601354610100900460ff161561330e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ad1565b6133188282612d4a565b1580156133325750600a546001600160a01b038281169116145b15611731576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556013805461ff0019166101001790819055620100009004166133aa576013805462010000600160b01b0319163062010000021790555b600e805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611d55565b801515811461231d57600080fd5b6000806040838503121561340b57600080fd5b8235613416816133ea565b91506020830135613426816133ea565b809150509250929050565b600060208083528351808285015260005b8181101561345e57858101830151858201604001528201613442565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461231d57600080fd5b600080604083850312156134a757600080fd5b82356134b28161347f565b946020939093013593505050565b6000602082840312156134d257600080fd5b8135612e5a8161347f565b6000806000606084860312156134f257600080fd5b83356134fd8161347f565b9250602084013561350d8161347f565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561355d5761355d61351e565b604052919050565b600067ffffffffffffffff82111561357f5761357f61351e565b5060051b60200190565b600082601f83011261359a57600080fd5b813560206135af6135aa83613565565b613534565b82815260059290921b840181019181810190868411156135ce57600080fd5b8286015b848110156135e957803583529183019183016135d2565b509695505050505050565b6000806040838503121561360757600080fd5b823567ffffffffffffffff8082111561361f57600080fd5b818501915085601f83011261363357600080fd5b813560206136436135aa83613565565b82815260059290921b8401810191818101908984111561366257600080fd5b948201945b8386101561368957853561367a8161347f565b82529482019490820190613667565b9650508601359250508082111561369f57600080fd5b506136ac85828601613589565b9150509250929050565b803561ffff811681146136c857600080fd5b919050565b6000806000606084860312156136e257600080fd5b6136eb846136b6565b92506136f9602085016136b6565b9150613707604085016136b6565b90509250925092565b60006020828403121561372257600080fd5b5035919050565b6000806040838503121561373c57600080fd5b82356134168161347f565b6000806040838503121561375a57600080fd5b613763836136b6565b9150613771602084016136b6565b90509250929050565b6000806040838503121561378d57600080fd5b82356137988161347f565b915060208301356134268161347f565b600080600080608085870312156137be57600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561382b578160001904821115613811576138116137da565b8085161561381e57918102915b93841c93908002906137f5565b509250929050565b60008261384257506001610b5c565b8161384f57506000610b5c565b8160018114613865576002811461386f5761388b565b6001915050610b5c565b60ff841115613880576138806137da565b50506001821b610b5c565b5060208310610133831016604e8410600b84101617156138ae575081810a610b5c565b6138b883836137f0565b80600019048211156138cc576138cc6137da565b029392505050565b6000612e5a60ff841683613833565b8082028115828204841417610b5c57610b5c6137da565b81810381811115610b5c57610b5c6137da565b634e487b7160e01b600052603260045260246000fd5b600061ffff80831681810361393a5761393a6137da565b6001019392505050565b80820180821115610b5c57610b5c6137da565b60008261397457634e487b7160e01b600052601260045260246000fd5b500490565b6000806040838503121561398c57600080fd5b505080516020909101519092909150565b6000602082840312156139af57600080fd5b5051919050565b6000602082840312156139c857600080fd5b8151612e5a816133ea565b61ffff8181168382160190808211156139ee576139ee6137da565b5092915050565b600060208284031215613a0757600080fd5b8151612e5a8161347f565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613a625784516001600160a01b031683529383019391830191600101613a3d565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a2646970667358221220da8c51a20da8151e15f9a0fcf113062d64640f0d7a69fa61607c0dc04e28887e64736f6c63430008130033

Deployed Bytecode Sourcemap

4144:20968:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5608:73;;;;;;;;;;;;5639:42;5608:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5608:73:0;;;;;;;;6159:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;6159:28:0;245:177:1;14770:153:0;;;;;;;;;;-1:-1:-1;14770:153:0;;;;;:::i;:::-;;:::i;:::-;;5079:107;;;;;;;;;;-1:-1:-1;5079: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;5079:107:0;931:365:1;10840:80:0;;;;;;;;;;-1:-1:-1;10912:5:0;;;;;;;;;;;;-1:-1:-1;;;10912:5:0;;;;10840:80;;;;;;;:::i;5547:26::-;;;;;;;;;;-1:-1:-1;5547:26:0;;;;;;;-1:-1:-1;;;;;5547:26:0;;;5514;;;;;;;;;;-1:-1:-1;5514:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5514:26:0;2102:187:1;11448:161:0;;;;;;;;;;-1:-1:-1;11448:161:0;;;;;:::i;:::-;;:::i;14199:140::-;;;;;;;;;;-1:-1:-1;14199:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14297:34:0;14273:4;14297:34;;;:25;:34;;;;;;;;;14199:140;10575:83;;;;;;;;;;;;;:::i;12118:306::-;;;;;;;;;;-1:-1:-1;12118:306:0;;;;;:::i;:::-;;:::i;22787:447::-;;;;;;;;;;-1:-1:-1;22787:447:0;;;;;:::i;:::-;;:::i;6267:33::-;;;;;;;;;;;;;;;;14503:141;;;;;;;;;;;;;:::i;5313:42::-;;;;;;;;;;;;5351:4;5313:42;;6194:25;;;;;;;;;;;;;;;;10664:80;;;;;;;;;;-1:-1:-1;10664:80:0;;4785:1;6115:36:1;;6103:2;6088:18;10664:80:0;5973:184:1;15121:453:0;;;;;;;;;;-1:-1:-1;15121:453:0;;;;;:::i;:::-;;:::i;14652:110::-;;;;;;;;;;-1:-1:-1;14652:110:0;;;;;:::i;:::-;;:::i;5580:21::-;;;;;;;;;;-1:-1:-1;5580:21:0;;;;-1:-1:-1;;;;;5580:21:0;;;6309:34;;;;;;;;;;-1:-1:-1;6309:34:0;;;;;;;;16228:189;;;;;;;;;;-1:-1:-1;16228:189:0;;;;;:::i;:::-;;:::i;17132:217::-;;;;;;;;;;-1:-1:-1;17132:217:0;;;;;:::i;:::-;;:::i;9298:654::-;;;;;;;;;;-1:-1:-1;9298:654:0;;;;;:::i;:::-;;:::i;13922:127::-;;;;;;;;;;-1:-1:-1;13922:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;14013:28:0;13989:4;14013:28;;;:19;:28;;;;;;;;;13922:127;6350:36;;;;;;;;;;-1:-1:-1;6350:36:0;;;;;;;;;;;14057:134;;;;;;;;;;-1:-1:-1;14057:134:0;;;;;:::i;:::-;;:::i;6423:26::-;;;;;;;;;;;;;;;;13692:222;;;;;;;;;;-1:-1:-1;13692:222:0;;;;;:::i;:::-;;:::i;11150:117::-;;;;;;;;;;-1:-1:-1;11150:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;11243:16:0;11216:7;11243:16;;;;;;;;;;;;11150:117;9960:225;;;;;;;;;;;;;:::i;5688:92::-;;;;;;;;;;-1:-1:-1;5688:92:0;;;;-1:-1:-1;;;;;5688:92:0;;;14931:182;;;;;;;;;;;;;:::i;13120:564::-;;;;;;;;;;-1:-1:-1;13120:564:0;;;;;:::i;:::-;;:::i;10926:79::-;;;;;;;;;;-1:-1:-1;10996:6:0;;-1:-1:-1;;;;;10996:6:0;10926:79;;11935:175;;;;;;;;;;;;;:::i;21590:695::-;;;;;;;;;;;;;:::i;10750:84::-;;;;;;;;;;-1:-1:-1;10824:7:0;;;;;;;;;;;;-1:-1:-1;;;10824:7:0;;;;10750:84;;11275:165;;;;;;;;;;-1:-1:-1;11275:165:0;;;;;:::i;:::-;;:::i;22483:296::-;;;;;;;;;;-1:-1:-1;22483:296:0;;;;;:::i;:::-;;:::i;6226:34::-;;;;;;;;;;-1:-1:-1;6226:34:0;;;;;;;;15582:346;;;;;;;;;;-1:-1:-1;15582:346:0;;;;;:::i;:::-;;:::i;17357:263::-;;;;;;;;;;-1:-1:-1;17357:263:0;;;;;:::i;:::-;;:::i;5195:109::-;;;;;;;;;;-1:-1:-1;5195:109:0;;;;;;;;;;;;;;;;;;;;;;15936:284;;;;;;;;;;-1:-1:-1;15936:284:0;;;;;:::i;:::-;;:::i;11011:133::-;;;;;;;;;;-1:-1:-1;11011:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11113:19:0;;;11095:7;11113:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;11011:133;12432:680;;;;;;;;;;-1:-1:-1;12432:680:0;;;;;:::i;:::-;;:::i;22293:182::-;;;;;;;;;;;;;:::i;5890:192::-;;;;;;;;;;-1:-1:-1;5890:192:0;;;;;;-1:-1:-1;;;;;5890:192:0;;;;;;;;;;;-1:-1:-1;;;;;8826:15:1;;;8808:34;;8878:15;;;;8873:2;8858:18;;8851:43;8720:18;5890:192:0;8541:359:1;16425:699:0;;;;;;;;;;-1:-1:-1;16425:699:0;;;;;:::i;:::-;;:::i;6113:39::-;;;;;;;;;;-1:-1:-1;6113:39:0;;;;;;;;;;;14347:148;;;;;;;;;;-1:-1:-1;14347:148:0;;;;;:::i;:::-;;:::i;14770:153::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;;;;;;;;;14865:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14865:50:0;;9828:14:1;;9821:22;14865:50:0::1;::::0;::::1;9803:41:1::0;9887:14;;9880:22;9860:18;;;9853:50;14865:11:0;;;::::1;-1:-1:-1::0;;;;;14865:11:0::1;::::0;:26:::1;::::0;9776:18:1;;14865:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14770:153:::0;;:::o;11448:161::-;11525:4;11542:37;11551:10;11563:7;11572:6;11542:8;:37::i;:::-;-1:-1:-1;11597:4:0;11448:161;;;;;:::o;10575:83::-;10630:7;4845:13;4785:1;4845:2;:13;:::i;:::-;4828:30;;4624:17;4828:30;:::i;:::-;10641:14;;10575:83;:::o;12118:306::-;-1:-1:-1;;;;;12239:19:0;;12218:4;12239:19;;;:11;:19;;;;;;;;12259:10;12239:31;;;;;;;;-1:-1:-1;;12239:52:0;12235:126;;-1:-1:-1;;;;;12308:19:0;;;;;;:11;:19;;;;;;;;12328:10;12308:31;;;;;;;:41;;12343:6;;12308:19;:41;;12343:6;;12308:41;:::i;:::-;;;;-1:-1:-1;;12235:126:0;12380:36;12390:6;12398:9;12409:6;12380:9;:36::i;:::-;12373:43;12118:306;-1:-1:-1;;;;12118:306:0:o;22787:447::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;22922:7:::1;:14;22903:8;:15;:33;22895:67;;;::::0;-1:-1:-1;;;22895:67:0;;11937:2:1;22895:67:0::1;::::0;::::1;11919:21:1::0;11976:2;11956:18;;;11949:30;12015:23;11995:18;;;11988:51;12056:18;;22895:67:0::1;11735:345:1::0;22895:67:0::1;22978:8;22973:254;22996:8;:15;22992:1;:19;;;22973:254;;;23077:13;4785:1;23077:2;:13;:::i;:::-;23066:7;23074:1;23066:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23051:10;11216:7:::0;11243:16;;;;;;;;;;;23041:49:::1;;23033:80;;;::::0;-1:-1:-1;;;23033:80:0;;12419:2:1;23033:80:0::1;::::0;::::1;12401:21:1::0;12458:2;12438:18;;;12431:30;12497:20;12477:18;;;12470:48;12535:18;;23033:80:0::1;12217:342:1::0;23033:80:0::1;23128:87;23145:10;23157:8;23166:1;23157:11;;;;;;;;;;:::i;:::-;;;;;;;4785:1;23181:2;:13;;;;:::i;:::-;23170:7;23178:1;23170:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23196:5;23203::::0;23210:4:::1;23128:16;:87::i;:::-;-1:-1:-1::0;23013:3:0;::::1;::::0;::::1;:::i;:::-;;;;22973:254;;;;22787:447:::0;;:::o;14503:141::-;14556:7;11243:16;;;;;;5639:42;11243:16;;;;14595:39;;11243:16;14595:39;:::i;:::-;4845:13;4785:1;4845:2;:13;:::i;:::-;4828:30;;4624:17;4828:30;:::i;:::-;14584:51;;;;:::i;15121:453::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;15229:14:::1;::::0;::::1;;15228:15;15220:45;;;::::0;-1:-1:-1;;;15220:45:0;;13098:2:1;15220:45:0::1;::::0;::::1;13080:21:1::0;13137:2;13117:18;;;13110:30;13176:19;13156:18;;;13149:47;13213:18;;15220:45:0::1;12896:341:1::0;15220:45:0::1;5351:4;15284:6;:21;;;;:65;;;;;5401:4;15326:7;:23;;;;15284:65;:117;;;;;5455:4;15370:11;:31;;;;15284:117;15276:170;;;::::0;-1:-1:-1;;;15276:170:0;;13444:2:1;15276:170:0::1;::::0;::::1;13426:21:1::0;13483:2;13463:18;;;13456:30;13522:25;13502:18;;;13495:53;13565:18;;15276:170:0::1;13242:347:1::0;15276:170:0::1;15457:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15493:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15531:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;15121:453::o;14652:110::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;14721:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14721:33:0;;-1:-1:-1;;;;;178:55:1;;;14721:33:0::1;::::0;::::1;160:74:1::0;14721:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14721:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14652:110:::0;:::o;16228:189::-;16357:6;;-1:-1:-1;;;;;16357:6:0;16319:7;11243:16;;;;;;;;;;;5502:5;;16347:41;;16367:21;;16347:41;:::i;:::-;16346:62;;;;:::i;17132:217::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;17262:3:::1;17236:22;:29;;17228:64;;;::::0;-1:-1:-1;;;17228:64:0;;14018:2:1;17228:64:0::1;::::0;::::1;14000:21:1::0;14057:2;14037:18;;;14030:30;14096:24;14076:18;;;14069:52;14138:18;;17228:64:0::1;13816:346:1::0;17228:64:0::1;17303:13;:38:::0;17132:217::o;9298:654::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;-1:-1:-1;;;;;9377:22:0;::::1;9369:96;;;::::0;-1:-1:-1;;;9369:96:0;;14369:2:1;9369:96:0::1;::::0;::::1;14351:21:1::0;14408:2;14388:18;;;14381:30;14447:34;14427:18;;;14420:62;14518:31;14498:18;;;14491:59;14567:19;;9369:96:0::1;14167:425:1::0;9369:96:0::1;-1:-1:-1::0;;;;;;;9484:16:0;::::1;::::0;9476:90:::1;;;::::0;-1:-1:-1;;;9476:90:0;;14369:2:1;9476:90:0::1;::::0;::::1;14351:21:1::0;14408:2;14388:18;;;14381:30;14447:34;14427:18;;;14420:62;14518:31;14498:18;;;14491:59;14567:19;;9476:90:0::1;14167:425:1::0;9476:90:0::1;9597:6;::::0;9577:34:::1;::::0;-1:-1:-1;;;;;9597:6:0::1;;9577:19;:34::i;:::-;9622:35;9642:8;9652:4;9622:19;:35::i;:::-;9692:6;::::0;-1:-1:-1;;;;;9692:6:0::1;9702:1;11243:16:::0;;;;;;;;;;;9682:21;9678:127:::1;;9737:6;::::0;-1:-1:-1;;;;;9737:6:0::1;11216:7:::0;11243:16;;;;;;;;;;;9720:73:::1;::::0;9737:6;9745:8;;9755:17:::1;11150:117:::0;9720:73:::1;;9678:127;9844:6;::::0;;-1:-1:-1;;;;;9861:17:0;;::::1;-1:-1:-1::0;;;;;;9861:17:0;::::1;::::0;::::1;::::0;;;9894:40:::1;::::0;9844:6;::::1;::::0;9861:17;9844:6;;9894:40:::1;::::0;9825:16:::1;::::0;9894:40:::1;9358:594;9298:654:::0;:::o;14057:134::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;-1:-1:-1;;;;;14145:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;14145:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14057:134::o;13692:222::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;13776:14:::1;::::0;::::1;;13775:15;13767:24;;;::::0;::::1;;13833:4;-1:-1:-1::0;;;;;13810:28:0;::::1;::::0;13802:55:::1;;;::::0;-1:-1:-1;;;13802:55:0;;14799:2:1;13802:55:0::1;::::0;::::1;14781:21:1::0;14838:2;14818:18;;;14811:30;14877:16;14857:18;;;14850:44;14911:18;;13802:55:0::1;14597:338:1::0;13802:55:0::1;13868:11;:38:::0;;-1:-1:-1;;;;;13868:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;13868:38:0;;::::1;::::0;;;::::1;::::0;;13692:222::o;9960:225::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;10039:6:::1;::::0;10019:34:::1;::::0;-1:-1:-1;;;;;10039:6:0::1;;10019:19;:34::i;:::-;10083:6;::::0;;-1:-1:-1;;;;;;10100:19:0;::::1;::::0;;;10135:42:::1;::::0;-1:-1:-1;;;;;10083:6:0;;::::1;::::0;10064:16:::1;::::0;10083:6;;10135:42:::1;::::0;10064:16;;10135:42:::1;10008:177;9960:225::o:0;14931:182::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;15084:14:::1;:21:::0;;-1:-1:-1;;15084:21:0::1;15101:4;15084:21;::::0;;14931:182::o;13120:564::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;13202:7:::1;13197:480;;-1:-1:-1::0;;;;;13226:13:0;;::::1;13242:5;13226:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;13226:21:0::1;::::0;;13262:11:::1;::::0;:34;;-1:-1:-1;;;13262:34:0;;::::1;::::0;::::1;15108:74:1::0;;;;15198:18;;;15191:50;;;;13262:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15081:18:1;;13262:34:0::1;14940:307:1::0;13197:480:0::1;13333:17;::::0;:22;13329:135:::1;;13422:6;13402:17;;13384:15;:35;;;;:::i;:::-;:44;13376:72;;;::::0;-1:-1:-1;;;13376:72:0;;15454:2:1;13376:72:0::1;::::0;::::1;15436:21:1::0;15493:2;15473:18;;;15466:30;15532:17;15512:18;;;15505:45;15567:18;;13376:72:0::1;15252:339:1::0;13376:72:0::1;-1:-1:-1::0;;;;;13487:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;13486:14;13478:54;;;::::0;-1:-1:-1;;;13478:54:0;;15798:2:1;13478:54:0::1;::::0;::::1;15780:21:1::0;15837:2;15817:18;;;15810:30;15876:29;15856:18;;;15849:57;15923:18;;13478:54:0::1;15596:351:1::0;13478:54:0::1;-1:-1:-1::0;;;;;13547:13:0;;::::1;;::::0;;;13563:4:::1;13547:13;::::0;;;;;;;;:20;;-1:-1:-1;;13547:20:0::1;::::0;::::1;::::0;;13602:15:::1;13582:17;:35:::0;13632:11:::1;::::0;:33;;-1:-1:-1;;;13632:33:0;;::::1;::::0;::::1;15108:74:1::0;;;;15198:18;;;15191:50;13632:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15081:18:1;;13632:33:0::1;14940:307:1::0;13197:480:0::1;13120:564:::0;;:::o;11935:175::-;9152:6;;12001:4;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;12050:9:::1;::::0;12018:62:::1;::::0;12035:4:::1;::::0;12050:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12050:9:0::1;-1:-1:-1::0;;12018:8:0::1;:62::i;:::-;-1:-1:-1::0;12098:4:0::1;11935:175:::0;:::o;21590:695::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;21652:14:::1;::::0;::::1;;21651:15;21643:52;;;::::0;-1:-1:-1;;;21643:52:0;;16154:2:1;21643:52:0::1;::::0;::::1;16136:21:1::0;16193:2;16173:18;;;16166:30;16232:26;16212:18;;;16205:54;16276:18;;21643:52:0::1;15952:348:1::0;21643:52:0::1;21714:16;::::0;::::1;::::0;::::1;;;21706:53;;;::::0;-1:-1:-1;;;21706:53:0;;16507:2:1;21706:53:0::1;::::0;::::1;16489:21:1::0;16546:2;16526:18;;;16519:30;16585:26;16565:18;;;16558:54;16629:18;;21706:53:0::1;16305:348:1::0;21706:53:0::1;21782:11;::::0;;;::::1;-1:-1:-1::0;;;;;21782:11:0::1;21770:106;;21824:11;:40:::0;;-1:-1:-1;;;;;;21824:40:0::1;21858:4;21824:40:::0;::::1;;::::0;;21770:106:::1;21890:11;::::0;21912:6:::1;::::0;21890:87:::1;::::0;-1:-1:-1;;;21890:87:0;;-1:-1:-1;;;;;21912:6:0;;::::1;21890:87;::::0;::::1;16881:74:1::0;17003:10;21927:12:0::1;16991:23:1::0;16971:18;;;16964:51;17063:18;21949:15:0::1;17051:31:1::0;17031:18;;;17024:59;4785:1:0::1;17099:18:1::0;;;17092:45;21890:11:0;;;::::1;;::::0;:21:::1;::::0;16853:19:1;;21890:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;-1:-1:-1::0;22003:11:0::1;::::0;22034:6:::1;::::0;-1:-1:-1;;;;;22034:6:0;;::::1;11216:7:::0;11243:16;;;;;;;;;;;;;22003:39;;-1:-1:-1;;;22003:39:0;;::::1;::::0;::::1;391:25:1::0;;;;22003:11:0;;;::::1;;::::0;:20:::1;::::0;364:18:1;;22003:39:0::1;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;22003:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;22003:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;21999:207:::0;::::1;;22114:13;:29:::0;;;;22158:10:::1;:27:::0;21999:207:::1;22216:14;:21:::0;;-1:-1:-1;;22216:21:0::1;22233:4;22216:21;::::0;;22262:15:::1;22248:11;:29:::0;21590:695::o;11275:165::-;11353:4;11370:40;11380:10;11392:9;11403:6;11370:9;:40::i;:::-;-1:-1:-1;11428:4:0;;11275:165;-1:-1:-1;;;11275:165:0:o;22483:296::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;22561:16:::1;::::0;::::1;::::0;::::1;;;22557:111;;;22619:4;-1:-1:-1::0;;;;;22602:22:0;::::1;::::0;22594:62:::1;;;::::0;-1:-1:-1;;;22594:62:0;;17600:2:1;22594:62:0::1;::::0;::::1;17582:21:1::0;17639:2;17619:18;;;17612:30;17678:29;17658:18;;;17651:57;17725:18;;22594:62:0::1;17398:351:1::0;22594:62:0::1;22732:6;::::0;22740:30:::1;::::0;-1:-1:-1;;;22740:30:0;;22764:4:::1;22740:30;::::0;::::1;160:74:1::0;22700:5:0;;-1:-1:-1;;;;;22717:14:0;;::::1;::::0;::::1;::::0;22732:6;;;::::1;::::0;22717:14;;22740:15:::1;::::0;133:18:1;;22740:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22717:54;::::0;-1:-1:-1;;;;;;22717:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18135:55:1;;;22717:54:0::1;::::0;::::1;18117:74:1::0;18207:18;;;18200:34;18090:18;;22717:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15582:346::-:0;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;15662:7:::1;:19:::0;;::::1;15692:29:::0;;::::1;::::0;::::1;-1:-1:-1::0;;15692:29:0;;;15662:19;;::::1;15692:29:::0;::::1;::::0;;15752:16:::1;15712:9:::0;15677:4;15752:16:::1;:::i;:::-;15732:7;:36:::0;;-1:-1:-1;;15732:36:0::1;::::0;::::1;::::0;;::::1;;;::::0;;15814:9:::1;:17:::0;-1:-1:-1;;15795:36:0::1;::::0;15814:17;;::::1;::::0;::::1;::::0;15795:16:::1;:36;:::i;:::-;15850:7;:17:::0;15779:52:::1;::::0;;::::1;::::0;-1:-1:-1;15850:17:0;;::::1;;:26:::0;-1:-1:-1;15850:26:0::1;15842:78;;;::::0;-1:-1:-1;;;15842:78:0;;18870:2:1;15842:78:0::1;::::0;::::1;18852:21:1::0;18909:2;18889:18;;;18882:30;18948:34;18928:18;;;18921:62;-1:-1:-1;;;18999:18:1;;;18992:37;19046:19;;15842:78:0::1;18668:403:1::0;17357:263:0;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;17466:19:::1;:33:::0;;-1:-1:-1;;17466:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17510:22:::1;:47:::0;;-1:-1:-1;;17510:47:0::1;::::0;::::1;;;::::0;;17573:39:::1;::::0;2242:41:1;;;17573:39:0::1;::::0;2230:2:1;2215:18;17573:39:0::1;;;;;;;;17357:263:::0;;:::o;15936:284::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;-1:-1:-1;;;;;16043:23:0;::::1;::::0;;::::1;::::0;:45:::1;;-1:-1:-1::0;;;;;;16070:18:0;::::1;::::0;::::1;16043:45;16035:81;;;::::0;-1:-1:-1;;;16035:81:0;;19278:2:1;16035:81:0::1;::::0;::::1;19260:21:1::0;19317:2;19297:18;;;19290:30;19356:25;19336:18;;;19329:53;19399:18;;16035:81:0::1;19076:347:1::0;16035:81:0::1;16127:11;:42:::0;;-1:-1:-1;;;;;16127:42:0;;::::1;-1:-1:-1::0;;;;;;16127:42:0;;::::1;;::::0;;;16180:16;:32;;;;;::::1;::::0;::::1;;::::0;;15936:284::o;12432:680::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;12512:16:::1;::::0;::::1;::::0;::::1;;;12511:17;12503:60;;;::::0;-1:-1:-1;;;12503:60:0;;19630:2:1;12503:60:0::1;::::0;::::1;19612:21:1::0;19669:2;19649:18;;;19642:30;19708:32;19688:18;;;19681:60;19758:18;;12503:60:0::1;19428:354:1::0;12503:60:0::1;12574:20;12607:9;12574:43;;12628:16;12658:10;-1:-1:-1::0;;;;;12658:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12647:40:0::1;;12696:4;12703:10;-1:-1:-1::0;;;;;12703:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12647:74;::::0;-1:-1:-1;;;;;;12647:74:0::1;::::0;;;;;;-1:-1:-1;;;;;8826:15:1;;;12647:74:0::1;::::0;::::1;8808:34:1::0;8878:15;;8858:18;;;8851:43;8720:18;;12647:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12740:6;::::0;-1:-1:-1;;;;;12740:6:0;;::::1;12750:5;12732:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12732:23:0::1;::::0;;12628:93;;-1:-1:-1;12770:22:0;::::1;12766:200;;12829:10;-1:-1:-1::0;;;;;12829:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12818:43:0::1;;12870:4;12877:10;-1:-1:-1::0;;;;;12877:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12818:77;::::0;-1:-1:-1;;;;;;12818:77:0::1;::::0;;;;;;-1:-1:-1;;;;;8826:15:1;;;12818:77:0::1;::::0;::::1;8808:34:1::0;8878:15;;8858:18;;;8851:43;8720:18;;12818:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12809:6;:86:::0;;-1:-1:-1;;;;;;12809:86:0::1;-1:-1:-1::0;;;;;12809:86:0;;;::::1;::::0;;;::::1;::::0;;12766:200:::1;;;12937:6;:17:::0;;-1:-1:-1;;;;;;12937:17:0::1;-1:-1:-1::0;;;;;12937:17:0;::::1;;::::0;;12766:200:::1;12976:9;:22:::0;;-1:-1:-1;;12976:22:0::1;;-1:-1:-1::0;;;;;12976:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;13017:6:::1;::::0;;::::1;-1:-1:-1::0;13009:15:0;;;-1:-1:-1;13009:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;13009:22:0::1;::::0;;::::1;::::0;;13074:9;;13042:62:::1;::::0;13059:4:::1;::::0;13074:9;::::1;;-1:-1:-1::0;;13042:8:0::1;:62::i;22293:182::-:0;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;22360:16:::1;::::0;::::1;::::0;::::1;;;22359:17;22351:58;;;::::0;-1:-1:-1;;;22351:58:0;;20577:2:1;22351:58:0::1;::::0;::::1;20559:21:1::0;20616:2;20596:18;;;20589:30;20655;20635:18;;;20628:58;20703:18;;22351:58:0::1;20375:352:1::0;22351:58:0::1;22428:6;::::0;22420:47:::1;::::0;-1:-1:-1;;;;;22428:6:0;;::::1;::::0;22445:21:::1;22420:47:::0;::::1;;;::::0;22428:6:::1;22420:47:::0;22428:6;22420:47;22445:21;22428:6;22420:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22293:182::o:0;16425:699::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;16625:16;16605;4845:13:::1;4785:1;4845:2;:13;:::i;:::-;4828:30;::::0;4624:17:::1;4828:30;:::i;:::-;16595:26;;;;:::i;:::-;16594:47;;;;:::i;:::-;16578:13;:63:::0;16693:13;16676;4845::::1;4785:1;4845:2;:13;:::i;:::-;4828:30;::::0;4624:17:::1;4828:30;:::i;:::-;16666:23;;;;:::i;:::-;16665:41;;;;:::i;:::-;16652:10;:54:::0;;;16725:13:::1;::::0;:27:::1;;16717:73;;;::::0;-1:-1:-1;;;16717:73:0;;20934:2:1;16717:73:0::1;::::0;::::1;20916:21:1::0;20973:2;20953:18;;;20946:30;21012:34;20992:18;;;20985:62;-1:-1:-1;;;21063:18:1;;;21056:31;21104:19;;16717:73:0::1;20732:397:1::0;16717:73:0::1;16834:6;::::0;-1:-1:-1;;;;;16834:6:0::1;11216:7:::0;11243:16;;;;;;;;;;;5502:5:::1;::::0;16824:23:::1;::::0;16844:3:::1;16824:23;:::i;:::-;16823:44;;;;:::i;:::-;16809:10;;:58;;16801:106;;;::::0;-1:-1:-1;;;16801:106:0;;21336:2:1;16801:106:0::1;::::0;::::1;21318:21:1::0;21375:2;21355:18;;;21348:30;21414:34;21394:18;;;21387:62;-1:-1:-1;;;21465:18:1;;;21458:33;21508:19;;16801:106:0::1;21134:399:1::0;16801:106:0::1;16950:9;4845:13;4785:1;4845:2;:13;:::i;:::-;4828:30;::::0;4624:17:::1;4828:30;:::i;:::-;16940:19;;;;:::i;:::-;16926:10;;:33;;16918:92;;;::::0;-1:-1:-1;;;16918:92:0;;21740:2:1;16918:92:0::1;::::0;::::1;21722:21:1::0;21779:2;21759:18;;;21752:30;21818:34;21798:18;;;21791:62;-1:-1:-1;;;21869:18:1;;;21862:44;21923:19;;16918:92:0::1;21538:410:1::0;16918:92:0::1;17056:9;4845:13;4785:1;4845:2;:13;:::i;:::-;4828:30;::::0;4624:17:::1;4828:30;:::i;:::-;17046:19;;;;:::i;:::-;17029:13;;:36;;17021:95;;;::::0;-1:-1:-1;;;17021:95:0;;21740:2:1;17021:95:0::1;::::0;::::1;21722:21:1::0;21779:2;21759:18;;;21752:30;21818:34;21798:18;;;21791:62;-1:-1:-1;;;21869:18:1;;;21862:44;21923:19;;17021:95:0::1;21538:410:1::0;17021:95:0::1;16425:699:::0;;;;:::o;14347:148::-;9152:6;;-1:-1:-1;;;;;9152:6:0;9162:10;9152:20;9144:50;;;;-1:-1:-1;;;9144:50:0;;9497:2:1;9144:50:0;;;9479:21:1;9536:2;9516:18;;;9509:30;-1:-1:-1;;;;;;;;;;;9555:18:1;;;9548:47;9612:18;;9144:50:0;9295:341:1;9144:50:0;-1:-1:-1;;;;;14443:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14443:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14347:148::o;11617:310::-;-1:-1:-1;;;;;11712:20:0;;11704:52;;;;-1:-1:-1;;;11704:52:0;;22155:2:1;11704:52:0;;;22137:21:1;22194:2;22174:18;;;22167:30;-1:-1:-1;;;22213:18:1;;;22206:49;22272:18;;11704:52:0;21953:343:1;11704:52:0;-1:-1:-1;;;;;11775:21:0;;11767:53;;;;-1:-1:-1;;;11767:53:0;;22155:2:1;11767:53:0;;;22137:21:1;22194:2;22174:18;;;22167:30;-1:-1:-1;;;22213:18:1;;;22206:49;22272:18;;11767:53:0;21953:343:1;11767:53:0;-1:-1:-1;;;;;11833:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11886:33;;391:25:1;;;11886:33:0;;364:18:1;11886:33:0;;;;;;;11617:310;;;:::o;18082:1673::-;18161:4;-1:-1:-1;;;;;18186:18:0;;18178:68;;;;-1:-1:-1;;;18178:68:0;;22503:2:1;18178:68:0;;;22485:21:1;22542:2;22522:18;;;22515:30;22581:34;22561:18;;;22554:62;-1:-1:-1;;;22632:18:1;;;22625:35;22677:19;;18178:68:0;22301:401:1;18178:68:0;-1:-1:-1;;;;;18265:16:0;;18257:64;;;;-1:-1:-1;;;18257:64:0;;22909:2:1;18257:64:0;;;22891:21:1;22948:2;22928:18;;;22921:30;22987:34;22967:18;;;22960:62;-1:-1:-1;;;23038:18:1;;;23031:33;23081:19;;18257:64:0;22707:399:1;18257:64:0;18349:1;18340:6;:10;18332:64;;;;-1:-1:-1;;;18332:64:0;;23313:2:1;18332:64:0;;;23295:21:1;23352:2;23332:18;;;23325:30;23391:34;23371:18;;;23364:62;-1:-1:-1;;;23442:18:1;;;23435:39;23491:19;;18332:64:0;23111:405:1;18332:64:0;-1:-1:-1;;;;;18495:13:0;;18407:8;18495:13;;;:7;:13;;;;;;18407:8;;;;18495:13;;18491:162;;;18531:4;18525:10;;18491:162;;;-1:-1:-1;;;;;18557:11:0;;;;;;:7;:11;;;;;;;;18553:100;;;18592:4;18585:11;;18553:100;;;-1:-1:-1;18637:4:0;18553:100;18667:20;18678:4;18684:2;18667:10;:20::i;:::-;18663:371;;;18708:14;;;;18704:319;;18748:5;18743:265;;18778:34;;-1:-1:-1;;;18778:34:0;;23723:2:1;18778:34:0;;;23705:21:1;23762:2;23742:18;;;23735:30;23801:26;23781:18;;;23774:54;23845:18;;18778:34:0;23521:348:1;18743:265:0;-1:-1:-1;;;;;18843:31:0;;;;;;:25;:31;;;;;;;;18842:32;:66;;;;-1:-1:-1;;;;;;18879:29:0;;;;;;:25;:29;;;;;;;;18878:30;18842:66;18838:170;;;18933:55;;-1:-1:-1;;;18933:55:0;;24076:2:1;18933:55:0;;;24058:21:1;24115:2;24095:18;;;24088:30;24154:34;24134:18;;;24127:62;-1:-1:-1;;;24205:18:1;;;24198:43;24258:19;;18933:55:0;23874:409:1;18838:170:0;19050:4;19046:632;;;19076:6;;;;19071:596;;19107:19;;;;;;;19103:549;;;19200:4;19151:28;11243:16;;;;;;;;;;;19257:13;;19233:37;;19229:404;;19317:10;;19358:22;;;;19354:97;;;19415:13;;19405:6;;-1:-1:-1;;;;;19405:6:0;11216:7;11243:16;;;;;;;;;;;5502:5;;19395:33;;;:::i;:::-;19394:54;;;;:::i;:::-;19384:64;;19354:97;19505:7;19481:20;:31;19477:72;;19539:7;19516:30;;19477:72;19575:34;19588:20;19575:12;:34::i;:::-;19272:361;19229:404;19128:524;19103:549;19695:52;19712:4;19718:2;19722:6;19730:3;19735:4;19741:5;19695:16;:52::i;:::-;19688:59;18082:1673;-1:-1:-1;;;;;;;18082:1673:0:o;23242:1055::-;23361:4;23382:20;23393:4;23399:2;23382:10;:20::i;:::-;23378:228;;;23437:11;;:39;;-1:-1:-1;;;23437:39:0;;-1:-1:-1;;;;;24569:15:1;;;23437:39:0;;;24551:34:1;24621:15;;;24601:18;;;24594:43;24653:18;;;24646:34;;;23406:12:0;;23437:11;;;;;:21;;24463:18:1;;23437:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23437:39:0;;;;;;;;-1:-1:-1;;23437:39:0;;;;;;;;;;;;:::i;:::-;;;23433:122;;23544:8;;;23433:122;23527:5;-1:-1:-1;23573:7:0;23569:26;;23584:8;;;23569:26;23404:202;23378:228;-1:-1:-1;;;;;23650:25:0;;23616:12;23650:25;;;:19;:25;;;;;;23631:4;;23650:25;;;:52;;-1:-1:-1;;;;;;23679:23:0;;;;;;:19;:23;;;;;;;;23650:52;23646:99;;;-1:-1:-1;23728:5:0;23646:99;-1:-1:-1;;;;;23755:13:0;;:7;:13;;;;;;;;;;:23;;23772:6;;23755:7;:23;;23772:6;;23755:23;:::i;:::-;;;;-1:-1:-1;23789:22:0;;-1:-1:-1;23815:7:0;23814:55;;23863:6;23814:55;;;23826:34;23836:4;23842:3;23847:4;23853:6;23826:9;:34::i;:::-;23789:80;;23895:14;23880:7;:11;23888:2;-1:-1:-1;;;;;23880:11:0;-1:-1:-1;;;;;23880:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;23940:2;-1:-1:-1;;;;;23925:34:0;23934:4;-1:-1:-1;;;;;23925:34:0;;23944:14;23925:34;;;;391:25:1;;379:2;364:18;;245:177;23925:34:0;;;;;;;;23975:16;;;;;;;23970:298;;24008:28;24027:4;24033:2;24008:18;:28::i;:::-;24056:16;;;;;;;24055:17;:41;;;;;24076:20;24087:4;24093:2;24076:10;:20::i;:::-;24055:77;;;;-1:-1:-1;;;;;;24101:31:0;;;;;;:25;:31;;;;;;;;24100:32;24055:77;:111;;;;-1:-1:-1;;;;;;24137:29:0;;;;;;:25;:29;;;;;;;;24136:30;24055:111;:121;;;;;24171:5;24170:6;24055:121;24051:206;;;24197:44;;-1:-1:-1;;;24197:44:0;;24893:2:1;24197:44:0;;;24875:21:1;24932:2;24912:18;;;24905:30;24971:34;24951:18;;;24944:62;-1:-1:-1;;;25022:18:1;;;25015:32;25064:19;;24197:44:0;24691:398:1;24051:206:0;-1:-1:-1;24285:4:0;;23242:1055;-1:-1:-1;;;;;;;;23242:1055:0:o;17628:446::-;17729:6;;17697:4;;-1:-1:-1;;;;;17721:14:0;;;17729:6;;17721:14;;;;:43;;-1:-1:-1;17758:6:0;;-1:-1:-1;;;;;17752:12:0;;;17758:6;;17752:12;;17721:43;:79;;;;-1:-1:-1;17794:6:0;;-1:-1:-1;;;;;17794:6:0;17781:9;:19;;17721:79;:118;;;;-1:-1:-1;;;;;;17818:21:0;;;;;;:17;:21;;;;;;;;17817:22;17721:118;:159;;;;-1:-1:-1;;;;;;17857:23:0;;;;;;:17;:23;;;;;;;;17856:24;17721:159;:186;;;;-1:-1:-1;;;;;;17897:10:0;;5639:42;17897:10;;17721:186;:219;;;;-1:-1:-1;;;;;;17924:16:0;;;;17721:219;:257;;;;-1:-1:-1;;;;;;17957:21:0;;17973:4;17957:21;;17721:257;:302;;;;-1:-1:-1;18011:11:0;;-1:-1:-1;;;;;17995:28:0;;;18011:11;;;;;17995:28;;17721:302;:345;;;;-1:-1:-1;18054:11:0;;-1:-1:-1;;;;;18040:26:0;;;18054:11;;;;;18040:26;;17721:345;17714:352;17628:446;-1:-1:-1;;;17628:446:0:o;19763:1248::-;6614:6;:13;;-1:-1:-1;;6614:13:0;6623:4;6614:13;;;19846:30:::1;::::0;;::::1;::::0;::::1;::::0;;19869:7:::1;19846:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6614:6;19891:21;19887:60:::1;;19929:7;;;19887:60;19983:4;19963:26;::::0;;;:11:::1;:26;::::0;;;;;;;19998:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19998:9:0::1;19963:46:::0;;;;;;;;-1:-1:-1;;19963:67:0::1;19959:166;;20067:4;20047:26;::::0;;;:11:::1;:26;::::0;;;;;;;20082:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;20082:9:0::1;20047:46:::0;;;;;;;-1:-1:-1;;20047:66:0;;19959:166:::1;20169:16;::::0;;20183:1:::1;20169:16:::0;;;;;::::1;::::0;;20145:21:::1;::::0;20169:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20169:16:0::1;20145:40;;20214:4;20196;20201:1;20196:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;20196:23:0::1;;;-1:-1:-1::0;;;;;20196:23:0::1;;;::::0;::::1;20240:9;;;;;;;;;-1:-1:-1::0;;;;;20240:9:0::1;-1:-1:-1::0;;;;;20240:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20230:4;20235:1;20230:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20230:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;20273:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;20273:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;20348:20;;20383:1:::1;::::0;20399:4;;20426::::1;::::0;20446:15:::1;::::0;20273:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20269:246;;20497:7;;;;20269:246;20654:16;::::0;::::1;::::0;20639:11;;20548:21:::1;::::0;20527:18:::1;::::0;;;20625:45:::1;::::0;;::::1;::::0;20626:24:::1;::::0;::::1;20548:21:::0;20626:24:::1;:::i;:::-;20625:45;;;;:::i;:::-;20603:67:::0;-1:-1:-1;20681:24:0::1;20708;20603:67:::0;20708:10;:24:::1;:::i;:::-;20747:16;::::0;::::1;::::0;20681:51;;-1:-1:-1;20747:20:0::1;;::::0;20743:133:::1;;20797:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20797:21:0;;::::1;::::0;20854:5:::1;::::0;20831:16;;20797:67:::1;::::0;;;20831:16;20797:21;20854:5;20797:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20784:80:0;;-1:-1:-1;;20743:133:0::1;20890:11:::0;;:15:::1;;::::0;20886:118:::1;;20935:16:::0;;:57:::1;::::0;-1:-1:-1;;;;;20935:16:0;;::::1;::::0;20982:5:::1;::::0;20964:11;;20935:57:::1;::::0;;;20964:11;20935:16;20982:5;20935:57:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20922:70:0;;-1:-1:-1;;20886:118:0::1;19835:1176;;;;;;6638:1;-1:-1:-1::0;6650:6:0;:14;;-1:-1:-1;;6650:14:0;;;19763:1248::o;24305:804::-;24393:7;24413:18;24446:3;24442:205;;;-1:-1:-1;24479:9:0;:16;;;24442:205;;;24517:4;24513:134;;;-1:-1:-1;24551:9:0;:17;;;;;;24513:134;;;-1:-1:-1;24614:9:0;:21;;;;;;24513:134;24661:10;24675:1;24661:15;24657:39;;24687:6;24680:13;;;;;24657:39;24718:11;;;;;-1:-1:-1;;;;;24718:11:0;24742:4;24710:37;:110;;;;;24765:13;24782:1;24765:18;:54;;;;24800:13;24817:2;24800:19;24765:54;24706:138;;;-1:-1:-1;24837:4:0;24706:138;24854:17;5502:5;24874:19;24883:10;24874:6;:19;:::i;:::-;:38;;;;:::i;:::-;24854:58;-1:-1:-1;24927:13:0;;24923:141;;24973:4;24957:7;:22;;;;;;;;;;:35;;24983:9;;24957:7;:35;;24983:9;;24957:35;:::i;:::-;;;;-1:-1:-1;;25012:40:0;;391:25:1;;;25035:4:0;;-1:-1:-1;;;;;25012:40:0;;;;;379:2:1;364:18;25012:40:0;;;;;;;24923:141;25083:18;25092:9;25083:6;:18;:::i;21019:563::-;21102:16;;;;;;;21101:17;21093:65;;;;-1:-1:-1;;;21093:65:0;;26537:2:1;21093:65:0;;;26519:21:1;26576:2;26556:18;;;26549:30;26615:34;26595:18;;;26588:62;-1:-1:-1;;;26666:18:1;;;26659:33;26709:19;;21093:65:0;26335:399:1;21093:65:0;21174:20;21185:4;21191:2;21174:10;:20::i;:::-;21173:21;:37;;;;-1:-1:-1;21204:6:0;;-1:-1:-1;;;;;21198:12:0;;;21204:6;;21198:12;21173:37;21169:406;;;-1:-1:-1;;;;;21227:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21227:30:0;;;21253:4;21227:30;;;;;;21272:19;:25;;;;;:32;;;;;;;;;;21319:16;:23;;-1:-1:-1;;21319:23:0;21227:30;21319:23;;;;;21369:11;;;;21357:114;;21415:11;:40;;-1:-1:-1;;;;;;21415:40:0;21449:4;21415:40;;;;;21357:114;21485:19;:26;;-1:-1:-1;;21485:26:0;;;;;21531:32;;-1:-1:-1;2242:41:1;;21531:32:0;;2230:2:1;2215:18;21531: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:456::-;3102:6;3110;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3352:2:1;3337:18;;3324:32;3365:33;3324:32;3365:33;:::i;:::-;3025:456;;3417:7;;-1:-1:-1;;;3471:2:1;3456:18;;;;3443:32;;3025:456::o;3486:127::-;3547:10;3542:3;3538:20;3535:1;3528:31;3578:4;3575:1;3568:15;3602:4;3599:1;3592:15;3618:275;3689:2;3683:9;3754:2;3735:13;;-1:-1:-1;;3731:27:1;3719:40;;3789:18;3774:34;;3810:22;;;3771:62;3768:88;;;3836:18;;:::i;:::-;3872:2;3865:22;3618:275;;-1:-1:-1;3618:275:1:o;3898:183::-;3958:4;3991:18;3983:6;3980:30;3977:56;;;4013:18;;:::i;:::-;-1:-1:-1;4058:1:1;4054:14;4070:4;4050:25;;3898:183::o;4086:662::-;4140:5;4193:3;4186:4;4178:6;4174:17;4170:27;4160:55;;4211:1;4208;4201:12;4160:55;4247:6;4234:20;4273:4;4297:60;4313:43;4353:2;4313:43;:::i;:::-;4297:60;:::i;:::-;4391:15;;;4477:1;4473:10;;;;4461:23;;4457:32;;;4422:12;;;;4501:15;;;4498:35;;;4529:1;4526;4519:12;4498:35;4565:2;4557:6;4553:15;4577:142;4593:6;4588:3;4585:15;4577:142;;;4659:17;;4647:30;;4697:12;;;;4610;;4577:142;;;-1:-1:-1;4737:5:1;4086:662;-1:-1:-1;;;;;;4086:662:1:o;4753:1215::-;4871:6;4879;4932:2;4920:9;4911:7;4907:23;4903:32;4900:52;;;4948:1;4945;4938:12;4900:52;4988:9;4975:23;5017:18;5058:2;5050:6;5047:14;5044:34;;;5074:1;5071;5064:12;5044:34;5112:6;5101:9;5097:22;5087:32;;5157:7;5150:4;5146:2;5142:13;5138:27;5128:55;;5179:1;5176;5169:12;5128:55;5215:2;5202:16;5237:4;5261:60;5277:43;5317:2;5277:43;:::i;5261:60::-;5355:15;;;5437:1;5433:10;;;;5425:19;;5421:28;;;5386:12;;;;5461:19;;;5458:39;;;5493:1;5490;5483:12;5458:39;5517:11;;;;5537:217;5553:6;5548:3;5545:15;5537:217;;;5633:3;5620:17;5650:31;5675:5;5650:31;:::i;:::-;5694:18;;5570:12;;;;5732;;;;5537:217;;;5773:5;-1:-1:-1;;5816:18:1;;5803:32;;-1:-1:-1;;5847:16:1;;;5844:36;;;5876:1;5873;5866:12;5844:36;;5899:63;5954:7;5943:8;5932:9;5928:24;5899:63;:::i;:::-;5889:73;;;4753:1215;;;;;:::o;6162:159::-;6229:20;;6289:6;6278:18;;6268:29;;6258:57;;6311:1;6308;6301:12;6258:57;6162:159;;;:::o;6326:328::-;6400:6;6408;6416;6469:2;6457:9;6448:7;6444:23;6440:32;6437:52;;;6485:1;6482;6475:12;6437:52;6508:28;6526:9;6508:28;:::i;:::-;6498:38;;6555:37;6588:2;6577:9;6573:18;6555:37;:::i;:::-;6545:47;;6611:37;6644:2;6633:9;6629:18;6611:37;:::i;:::-;6601:47;;6326:328;;;;;:::o;6659:180::-;6718:6;6771:2;6759:9;6750:7;6746:23;6742:32;6739:52;;;6787:1;6784;6777:12;6739:52;-1:-1:-1;6810:23:1;;6659:180;-1:-1:-1;6659:180:1:o;6844:382::-;6909:6;6917;6970:2;6958:9;6949:7;6945:23;6941:32;6938:52;;;6986:1;6983;6976:12;6938:52;7025:9;7012:23;7044:31;7069:5;7044:31;:::i;7478:256::-;7544:6;7552;7605:2;7593:9;7584:7;7580:23;7576:32;7573:52;;;7621:1;7618;7611:12;7573:52;7644:28;7662:9;7644:28;:::i;:::-;7634:38;;7691:37;7724:2;7713:9;7709:18;7691:37;:::i;:::-;7681:47;;7478:256;;;;;:::o;7739:404::-;7823:6;7831;7884:2;7872:9;7863:7;7859:23;7855:32;7852:52;;;7900:1;7897;7890:12;7852:52;7939:9;7926:23;7958:31;7983:5;7958:31;:::i;:::-;8008:5;-1:-1:-1;8065:2:1;8050:18;;8037:32;8078:33;8037:32;8078:33;:::i;8905:385::-;8991:6;8999;9007;9015;9068:3;9056:9;9047:7;9043:23;9039:33;9036:53;;;9085:1;9082;9075:12;9036:53;-1:-1:-1;;9108:23:1;;;9178:2;9163:18;;9150:32;;-1:-1:-1;9229:2:1;9214:18;;9201:32;;9280:2;9265:18;9252:32;;-1:-1:-1;8905:385:1;-1:-1:-1;8905:385:1:o;9914:127::-;9975:10;9970:3;9966:20;9963:1;9956:31;10006:4;10003:1;9996:15;10030:4;10027:1;10020:15;10046:422;10135:1;10178:5;10135:1;10192:270;10213:7;10203:8;10200:21;10192:270;;;10272:4;10268:1;10264:6;10260:17;10254:4;10251:27;10248:53;;;10281:18;;:::i;:::-;10331:7;10321:8;10317:22;10314:55;;;10351:16;;;;10314:55;10430:22;;;;10390:15;;;;10192:270;;;10196:3;10046:422;;;;;:::o;10473:806::-;10522:5;10552:8;10542:80;;-1:-1:-1;10593:1:1;10607:5;;10542:80;10641:4;10631:76;;-1:-1:-1;10678:1:1;10692:5;;10631:76;10723:4;10741:1;10736:59;;;;10809:1;10804:130;;;;10716:218;;10736:59;10766:1;10757:10;;10780:5;;;10804:130;10841:3;10831:8;10828:17;10825:43;;;10848:18;;:::i;:::-;-1:-1:-1;;10904:1:1;10890:16;;10919:5;;10716:218;;11018:2;11008:8;11005:16;10999:3;10993:4;10990:13;10986:36;10980:2;10970:8;10967:16;10962:2;10956:4;10953:12;10949:35;10946:77;10943:159;;;-1:-1:-1;11055:19:1;;;11087:5;;10943:159;11134:34;11159:8;11153:4;11134:34;:::i;:::-;11204:6;11200:1;11196:6;11192:19;11183:7;11180:32;11177:58;;;11215:18;;:::i;:::-;11253:20;;10473:806;-1:-1:-1;;;10473:806:1:o;11284:140::-;11342:5;11371:47;11412:4;11402:8;11398:19;11392:4;11371:47;:::i;11429:168::-;11502:9;;;11533;;11550:15;;;11544:22;;11530:37;11520:71;;11571:18;;:::i;11602:128::-;11669:9;;;11690:11;;;11687:37;;;11704:18;;:::i;12085:127::-;12146:10;12141:3;12137:20;12134:1;12127:31;12177:4;12174:1;12167:15;12201:4;12198:1;12191:15;12564:197;12602:3;12630:6;12671:2;12664:5;12660:14;12698:2;12689:7;12686:15;12683:41;;12704:18;;:::i;:::-;12753:1;12740:15;;12564:197;-1:-1:-1;;;12564:197:1:o;12766:125::-;12831:9;;;12852:10;;;12849:36;;;12865:18;;:::i;13594:217::-;13634:1;13660;13650:132;;13704:10;13699:3;13695:20;13692:1;13685:31;13739:4;13736:1;13729:15;13767:4;13764:1;13757:15;13650:132;-1:-1:-1;13796:9:1;;13594:217::o;17148:245::-;17227:6;17235;17288:2;17276:9;17267:7;17263:23;17259:32;17256:52;;;17304:1;17301;17294:12;17256:52;-1:-1:-1;;17327:16:1;;17383:2;17368:18;;;17362:25;17327:16;;17362:25;;-1:-1:-1;17148:245:1:o;17754:184::-;17824:6;17877:2;17865:9;17856:7;17852:23;17848:32;17845:52;;;17893:1;17890;17883:12;17845:52;-1:-1:-1;17916:16:1;;17754:184;-1:-1:-1;17754:184:1:o;18245:245::-;18312:6;18365:2;18353:9;18344:7;18340:23;18336:32;18333:52;;;18381:1;18378;18371:12;18333:52;18413:9;18407:16;18432:28;18454:5;18432:28;:::i;18495:168::-;18562:6;18588:10;;;18600;;;18584:27;;18623:11;;;18620:37;;;18637:18;;:::i;:::-;18620:37;18495:168;;;;:::o;19787:251::-;19857:6;19910:2;19898:9;19889:7;19885:23;19881:32;19878:52;;;19926:1;19923;19916:12;19878:52;19958:9;19952:16;19977:31;20002:5;19977:31;:::i;25094:1026::-;25356:4;25404:3;25393:9;25389:19;25435:6;25424:9;25417:25;25461:2;25499:6;25494:2;25483:9;25479:18;25472:34;25542:3;25537:2;25526:9;25522:18;25515:31;25566:6;25601;25595:13;25632:6;25624;25617:22;25670:3;25659:9;25655:19;25648:26;;25709:2;25701:6;25697:15;25683:29;;25730:1;25740:218;25754:6;25751:1;25748:13;25740:218;;;25819:13;;-1:-1:-1;;;;;25815:62:1;25803:75;;25933:15;;;;25898:12;;;;25776:1;25769:9;25740:218;;;-1:-1:-1;;;;;;;26014:55:1;;;;26009:2;25994:18;;25987:83;-1:-1:-1;;;26101:3:1;26086:19;26079:35;25975:3;25094:1026;-1:-1:-1;;;25094:1026:1:o

Swarm Source

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