ETH Price: $2,643.09 (+1.05%)

Token

Chi Suzaku (Suzaku)
 

Overview

Max Total Supply

10,000,000,000 Suzaku

Holders

153

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 Suzaku

Value
$0.00
0x8218bc2073482a1ceeb295ef70e24843998d8990
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
ChiSuzaku

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

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

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

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

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

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}

interface Protections {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ab) external;
    function removeSniper(address account) external;
    function getInitializers() external returns (string memory, string memory, uint256, uint8);
}

contract ChiSuzaku is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromProtection;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
   
    uint256 private startingSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

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

    struct Ratios {
        uint16 marketing;
        uint16 development;
        uint16 staking;
        uint16 totalSwap;
    }

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

    Ratios public _ratios = Ratios({
        marketing: 200,
        development: 200,
        staking: 100,
        totalSwap: 500
    });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable staking;
        address payable development;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xf3971AFc16c68674A27aae60241067DC19DE3e14),
        staking: payable(0x1D97CD900b06aB80Fc89e8f27B716d153FFC450a),
        development: payable(0x62cBB80B9bF627fd3EA57FF46C3E94235138eC6a)
    });
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Protections protections;
    uint256 public launchStamp;

    mapping (address => uint256) private buyStamp;
    bool public bonusFeeEnabled = true;
    uint256 public timeFromFirstBuy = 24 hours;

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

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

    constructor () payable {
        // Set the owner.
        _owner = msg.sender;

        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 {
            revert();
        }

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

    bool contractInitialized;

    function intializeContract(address[] calldata accounts, uint256[] calldata amounts, address _protections) payable external onlyOwner {
        require(!contractInitialized, "1");
        require(accounts.length == amounts.length, "2");
        require(address(this).balance > 0 || msg.value > 0, "No funds for liquidity.");
        protections = Protections(_protections);
        try protections.getInitializers() returns (string memory initName, string memory initSymbol, uint256 initStartingSupply, uint8 initDecimals) {
            _name = initName;
            _symbol = initSymbol;
            startingSupply = initStartingSupply;
            _decimals = initDecimals;
            _tTotal = startingSupply * 10**_decimals;
        } catch {
            revert("3");
        }
        lpPair = IFactoryV2(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _maxTxAmount = (_tTotal * 5) / 1000;
        _maxWalletSize = (_tTotal * 5) / 1000;
        contractInitialized = true;     
        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

        _approve(address(this), address(dexRouter), type(uint256).max);
        _approve(_owner, address(dexRouter), type(uint256).max);
        for(uint256 i = 0; i < accounts.length; i++){
            uint256 amount = amounts[i] * 10**_decimals;
            finalizeTransfer(_owner, accounts[i], amount, false, false, true);
        }
        finalizeTransfer(_owner, address(this), balanceOf(_owner), false, false, true);

        dexRouter.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            _owner,
            block.timestamp
        );
        enableTrading();
    }

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // 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 view override returns (uint256) { if (_tTotal == 0) { revert(); } return _tTotal; }
    function decimals() external view override returns (uint8) { if (_tTotal == 0) { revert(); } return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view 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 isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

    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.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 development, uint16 staking, uint16 marketing) external onlyOwner {
        _ratios.development = development;
        _ratios.staking = staking;
        _ratios.marketing = marketing;
        _ratios.totalSwap = staking + marketing + development;
        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 staking, address payable development) external onlyOwner {
        require(marketing != address(0) && staking != address(0) && development != address(0), "Cannot be zero address.");
        _taxWallets.marketing = payable(marketing);
        _taxWallets.staking = payable(staking);
        _taxWallets.development = payable(development);
    }

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

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

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

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

    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 setBonusSellFeeEnabled(bool enabled) external onlyOwner {
        bonusFeeEnabled = enabled;
    }

    function setBonusSellFeeSettings(uint256 timeLimit, uint16 bonusFee) external onlyOwner {
        require(timeFromFirstBuy <= 24 hours, "Cannot exceed 24 hours.");
        require(bonusFee <= 500, "Cannot exceed 5%.");
        timeFromFirstBuy = timeLimit;
        _taxRates.bonusFee = bonusFee;
    }

    function getSecondsFromLastBuy(address account) external view returns (uint256) {
        return block.timestamp - buyStamp[account];
    }

    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 (buy || sell){
                if (!_isExcludedFromLimits[from] && !_isExcludedFromLimits[to]) {
                    require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
                }
            }
            if (to != address(dexRouter) && !sell) {
                if (!_isExcludedFromLimits[to]) {
                    require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
                }
            }
        }

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

    function contractSwap(uint256 contractTokenBalance) internal inSwapFlag {
        Ratios memory ratios = _ratios;
        if (ratios.totalSwap == 0) {
            return;
        }

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

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

        uint256 amtBalance = address(this).balance;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 stakingBalance = (amtBalance * ratios.staking) / ratios.totalSwap;
        uint256 marketingBalance = amtBalance - (developmentBalance + stakingBalance);
        if (ratios.marketing > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 55000}("");
        }
        if (ratios.development > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 55000}("");
        }
        if (ratios.staking > 0) {
            (success,) = _taxWallets.staking.call{value: stakingBalance, 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 {}
        tradingEnabled = true;
        allowedPresaleExclusion = false;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        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 {
        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, to, 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, address to, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            buyStamp[to] = block.timestamp;
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
            if (bonusFeeEnabled) {
                if (buyStamp[from] != 0 && block.timestamp - buyStamp[from] < timeFromFirstBuy) {
                    currentFee += _taxRates.bonusFee;
                }
            }
        } 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

[{"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":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"staking","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"},{"internalType":"uint16","name":"bonusFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"staking","type":"address"},{"internalType":"address payable","name":"development","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":"bonusFeeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getSecondsFromLastBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address","name":"_protections","type":"address"}],"name":"intializeContract","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromProtection","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","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":"view","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":"enabled","type":"bool"}],"name":"setBonusSellFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeLimit","type":"uint256"},{"internalType":"uint16","name":"bonusFee","type":"uint16"}],"name":"setBonusSellFeeSettings","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":"setExcludedFromLimits","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":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"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":"development","type":"uint16"},{"internalType":"uint16","name":"staking","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":"staking","type":"address"},{"internalType":"address payable","name":"development","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":"view","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeFromFirstBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

6000600255600b8054600160ff1991821681179092556101f4608081905260a081905260c081905260e0819052601180546001600160401b03199081166701f401f401f401f41790915560c86101008181526101209190915260646101405261016092909252601280549091166701f4006400c800c81790556101e060405273f3971afc16c68674a27aae60241067dc19de3e14610180819052731d97cd900b06ab80fc89e8f27b716d153ffc450a6101a08190527362cbb80b9bf627fd3ea57ff46c3e94235138ec6a6101c0819052601580546001600160a01b03199081169094179055601680548416909217909155601780549092161790556018805461ff0019169055600a601c55601f805461ffff191690556022805490921690921790556201518060235560248054610100600160a81b0319163390920291909117905546603803620001785760138054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e001790556200027f565b46606103620001af5760138054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d1001790556200027f565b4660011480620001bf5750466004145b80620001cb5750466003145b80620001d75750466005145b156200020b5760138054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d001790556200027f565b4661a86a03620002435760138054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d4001790556200027f565b4660fa036200027a5760138054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c29001790556200027f565b600080fd5b602480546001600160a01b036101009182900481166000908152600660208181526040808420805460ff19908116600190811790925530865282862080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905597549690960490941683526004815292822080548616851790559091527f9f0450866e340883c5637ebf25d629ea9e0ea06bf9caa3748b581238b1bc2bb980548416831790557f9b00c99845a242ceea732a2478bee8e7b057d22892cafbdc32d0e607c88ddea0805484168317905573dba68f07d1b7ca219f78ae8582c213d975c25caf90527fab9d0a02af394b8961be3a9588d91fbbf70984385fd8d3031385f593b62a4bf98054909216179055614ff180620003ab6000396000f3fe6080604052600436106103dd5760003560e01c8063590ffdce116101fd578063aa22b17211610118578063dd62ed3e116100ab578063f6c25b6b1161007a578063f6c25b6b14610b9c578063f94aa1b414610bbc578063fb78680d14610c13578063fdb78c0e14610c33578063feadde9c14610c5257600080fd5b8063dd62ed3e14610b0e578063de3a3b6914610b54578063eafb5a3c14610b67578063ee5d9c2d14610b8757600080fd5b8063b7df8b36116100e7578063b7df8b3614610a84578063bfc2fc3514610a9e578063cf84770614610abe578063db34e89214610af857600080fd5b8063aa22b17214610a44578063ab558e4d14610a64578063b1b08f7114610689578063b3d514fb1461068957600080fd5b806377a202ec116101905780638a63bd9b1161015f5780638a63bd9b146109e55780638a8c523c146109fa57806395d89b4114610a0f578063a9059cbb14610a2457600080fd5b806377a202ec1461097357806378648edf1461098d57806380c581d1146109a2578063893d20e8146109c257600080fd5b80636ebd0078116101cc5780636ebd0078146108f357806370a0823114610908578063715018a61461093e57806375cb1bd11461095357600080fd5b8063590ffdce146108645780635a6f0918146108845780635c24b0741461089a5780635cce86cd146108ba57600080fd5b806328577751116102f85780633f3cf56c1161028b5780634bbb93eb1161025a5780634bbb93eb146107ac5780634e718e48146107cc5780634fb2e45d146107ec5780634fbee1931461080c57806350a8e0161461084557600080fd5b80633f3cf56c1461073c578063452ed4f11461075c57806346ea7ac81461077c5780634ada218b1461079257600080fd5b8063313ce567116102c7578063313ce567146106b557806332cde664146106dc57806333251a0b146106fc57806336fddb041461071c57600080fd5b8063285777511461065e5780632b112e49146106745780632b28fc7a146106895780632e8fa8211461069f57600080fd5b8063095ea7b31161037057806323b872dd1161033f57806323b872dd146105de578063247cb8b7146105fe578063260039571461061e5780632610eaca1461063e57600080fd5b8063095ea7b31461055b5780630dcbcf1c1461057b5780630fa604e4146105b457806318160ddd146105c957600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104ea5780630758d9241461050c57806307dd79e01461053157600080fd5b80630281abdf146103e957806303fd2a451461041c5780630445b6671461044a578063044df7261461046057600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b5061040961040436600461456e565b610c72565b6040519081526020015b60405180910390f35b34801561042857600080fd5b5061043261dead81565b6040516001600160a01b039091168152602001610413565b34801561045657600080fd5b5061040960195481565b34801561046c57600080fd5b5061048061047b366004614599565b610c9b565b005b34801561048e57600080fd5b506011546104bc9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610413565b3480156104f657600080fd5b506104ff610d5e565b60405161041391906145f6565b34801561051857600080fd5b506013546104329061010090046001600160a01b031681565b34801561053d57600080fd5b5060135461054b9060ff1681565b6040519015158152602001610413565b34801561056757600080fd5b5061054b610576366004614629565b610df0565b34801561058757600080fd5b5061054b61059636600461456e565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c057600080fd5b50610409610e06565b3480156105d557600080fd5b50610409610e2c565b3480156105ea57600080fd5b5061054b6105f9366004614655565b610e44565b34801561060a57600080fd5b506104806106193660046146ad565b610ebc565b34801561062a57600080fd5b506104806106393660046146d9565b610fdf565b34801561064a57600080fd5b506104806106593660046147d1565b6110e8565b34801561066a57600080fd5b50610409601c5481565b34801561068057600080fd5b506104096112ad565b34801561069557600080fd5b506104096107d081565b3480156106ab57600080fd5b50610409601a5481565b3480156106c157600080fd5b506106ca611314565b60405160ff9091168152602001610413565b3480156106e857600080fd5b506104806106f7366004614893565b61132f565b34801561070857600080fd5b5061048061071736600461456e565b6114e7565b34801561072857600080fd5b506104806107373660046148d6565b61159d565b34801561074857600080fd5b506104806107573660046146d9565b611615565b34801561076857600080fd5b50601454610432906001600160a01b031681565b34801561078857600080fd5b506104096109c481565b34801561079e57600080fd5b50601f5461054b9060ff1681565b3480156107b857600080fd5b506104096107c73660046148f4565b61172b565b3480156107d857600080fd5b506104806107e73660046148f4565b61175f565b3480156107f857600080fd5b5061048061080736600461456e565b611802565b34801561081857600080fd5b5061054b61082736600461456e565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561085157600080fd5b50601f5461054b90610100900460ff1681565b34801561087057600080fd5b5061048061087f3660046148d6565b611a21565b34801561089057600080fd5b5061040960205481565b3480156108a657600080fd5b506104806108b536600461456e565b611a99565b3480156108c657600080fd5b5061054b6108d536600461456e565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ff57600080fd5b50610409611b78565b34801561091457600080fd5b5061040961092336600461456e565b6001600160a01b031660009081526020819052604090205490565b34801561094a57600080fd5b50610480611b99565b34801561095f57600080fd5b5061048061096e36600461490d565b611c55565b34801561097f57600080fd5b5060225461054b9060ff1681565b34801561099957600080fd5b50610480611d61565b3480156109ae57600080fd5b506104806109bd3660046148d6565b611dbd565b3480156109ce57600080fd5b5060245461010090046001600160a01b0316610432565b3480156109f157600080fd5b5061054b611f9b565b348015610a0657600080fd5b50610480612010565b348015610a1b57600080fd5b506104ff61224e565b348015610a3057600080fd5b5061054b610a3f366004614629565b61225d565b348015610a5057600080fd5b50610480610a5f366004614893565b612274565b348015610a7057600080fd5b50610480610a7f36600461456e565b6123c3565b348015610a9057600080fd5b50601b5461054b9060ff1681565b348015610aaa57600080fd5b50610480610ab9366004614599565b612556565b348015610aca57600080fd5b506012546104bc9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b348015610b0457600080fd5b5061040960235481565b348015610b1a57600080fd5b50610409610b29366004614958565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610480610b623660046149d2565b612602565b348015610b7357600080fd5b50610480610b8236600461456e565b612c70565b348015610b9357600080fd5b50610480613069565b348015610ba857600080fd5b50610480610bb7366004614a56565b613151565b348015610bc857600080fd5b50601554601654601754610be9926001600160a01b03908116928116911683565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610413565b348015610c1f57600080fd5b50610480610c2e366004614a73565b6131b1565b348015610c3f57600080fd5b5060185461054b90610100900460ff1681565b348015610c5e57600080fd5b50610480610c6d3660046148d6565b613417565b6001600160a01b038116600090815260216020526040812054610c959042614abb565b92915050565b60245461010090046001600160a01b03163314610ced5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c83398151915260448201526064015b60405180910390fd5b601f5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050505050565b6060600d8054610d6d90614ace565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990614ace565b8015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b5050505050905090565b6000610dfd33848461348f565b50600192915050565b600f54600090610e1a9060ff16600a614bec565b601e54610e279190614bfb565b905090565b6000601054600003610e3d57600080fd5b5060105490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ea9576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ea3908490614abb565b90915550505b610eb4848484613588565b949350505050565b60245461010090046001600160a01b03163314610f095760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b620151806023541115610f5e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742065786365656420323420686f7572732e0000000000000000006044820152606401610ce4565b6101f48161ffff161115610fb45760405162461bcd60e51b815260206004820152601160248201527f43616e6e6f74206578636565642035252e0000000000000000000000000000006044820152606401610ce4565b6023919091556011805461ffff909216600160301b0267ffff00000000000019909216919091179055565b60245461010090046001600160a01b0316331461102c5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b606460105461103b9190614bfb565b818360105461104a9190614c1d565b6110549190614bfb565b10156110c85760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ce4565b80826010546110d79190614c1d565b6110e19190614bfb565b601e555050565b60245461010090046001600160a01b031633146111355760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b80518251146111865760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ce4565b60005b82518161ffff1610156112a857600f546111a79060ff16600a614bec565b828261ffff16815181106111bd576111bd614c34565b60200260200101516111cf9190614c1d565b33600090815260208190526040902054101561122d5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ce4565b61129533848361ffff168151811061124757611247614c34565b6020908102919091010151600f546112639060ff16600a614bec565b858561ffff168151811061127957611279614c34565b602002602001015161128b9190614c1d565b6000806001613a9f565b50806112a081614c4a565b915050611189565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546113079190614c6b565b601054610e279190614abb565b600060105460000361132557600080fd5b50600f5460ff1690565b60245461010090046001600160a01b0316331461137c5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60135460ff16156113cf5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ce4565b6107d08361ffff16111580156113eb57506107d08261ffff1611155b80156113fd57506107d08161ffff1611155b6114495760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ce4565b6109c46114568385614c7e565b61ffff1611156114a85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610ce4565b6011805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b60245461010090046001600160a01b031633146115345760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561158257600080fd5b505af1158015611596573d6000803e3d6000fd5b5050505050565b60245461010090046001600160a01b031633146115ea5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60245461010090046001600160a01b031633146116625760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6103e860105460056116749190614c1d565b61167e9190614bfb565b818360105461168d9190614c1d565b6116979190614bfb565b101561170b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ce4565b808260105461171a9190614c1d565b6117249190614bfb565b601d555050565b6014546001600160a01b031660009081526020819052604081205461271090611755908490614c1d565b610c959190614bfb565b60245461010090046001600160a01b031633146117ac5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60968111156117fd5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ce4565b601c55565b60245461010090046001600160a01b0316331461184f5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b0381166118cb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce4565b61deac196001600160a01b0382160161194c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce4565b6024546119689061010090046001600160a01b03166000611a21565b611973816001611a21565b60245461010090046001600160a01b031660009081526020819052604081205411156119c75760245461010090046001600160a01b03166000818152602081905260409020546119c59190839061128b565b505b602480546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60245461010090046001600160a01b03163314611a6e5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60245461010090046001600160a01b03163314611ae65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f5460ff1615611af657600080fd5b306001600160a01b03821603611b4e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ce4565b601f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600f54600090611b8c9060ff16600a614bec565b601d54610e279190614bfb565b60245461010090046001600160a01b03163314611be65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b602454611c029061010090046001600160a01b03166000611a21565b60248054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b60245461010090046001600160a01b03163314611ca25760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03831615801590611cc257506001600160a01b03821615155b8015611cd657506001600160a01b03811615155b611d225760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ce4565b601580546001600160a01b039485166001600160a01b031991821617909155601680549385169382169390931790925560178054919093169116179055565b60245461010090046001600160a01b03163314611dae5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6013805460ff19166001179055565b60245461010090046001600160a01b03163314611e0a5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b80611e68576001600160a01b03828116600081815260016020526040808220805460ff19169055601f5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610d28565b60025415611ecf576203f48060025442611e829190614abb565b11611ecf5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ce4565b6001600160a01b03821660009081526001602052604090205460ff1615611f385760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ce4565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601f5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610d28565b5050565b60245460009061010090046001600160a01b03163314611feb5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60135461200a90309061010090046001600160a01b031660001961348f565b50600190565b60245461010090046001600160a01b0316331461205d5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f5460ff16156120b05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ce4565b601f54610100900460ff166121075760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ce4565b601f546201000090046001600160a01b031661213757601f805462010000600160b01b0319163062010000021790555b601f54601454600f54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156121af57600080fd5b505af19250505080156121c0575060015b50601f8054600160ff1991821617909155600b805490911690556014546001600160a01b03166000908152602081905260409020546127109061220490600a614c1d565b61220e9190614bfb565b6019556014546001600160a01b03166000908152602081905260409020546127109061223b90601e614c1d565b6122459190614bfb565b601a5542602055565b6060600e8054610d6d90614ace565b600061226a338484613588565b5060019392505050565b60245461010090046001600160a01b031633146122c15760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6012805465ffffffff000019166201000061ffff8681169190910265ffff00000000191691909117640100000000858316021761ffff19169083161790558261230a8284614c7e565b6123149190614c7e565b6012805467ffff0000000000001916600160301b61ffff9384160217905560115460009161234b9162010000810482169116614c7e565b60125461ffff9182169250600160301b9004168110156123bd5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ce4565b50505050565b60245461010090046001600160a01b031633146124105760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b306001600160a01b038216036124685760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ce4565b602480546040516370a0823160e01b815230600482015283926001600160a01b038085169363a9059cbb936101009091049091169184916370a082319101602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a89190614cb9565b60245461010090046001600160a01b031633146125a35760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6018805461ff00191661010084151590810291909117909155601b805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b60245461010090046001600160a01b0316331461264f5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60245460ff16156126865760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610ce4565b8382146126b95760405162461bcd60e51b81526020600482015260016024820152601960f91b6044820152606401610ce4565b60004711806126c85750600034115b6127145760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610ce4565b80601f60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601f60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156127b157506040513d6000823e601f3d908101601f191682016040526127ae9190810190614d3a565b60015b6127e15760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610ce4565b600d6127ed8582614e06565b50600e6127fa8482614e06565b50600c829055600f805460ff191660ff831690811790915561281d90600a614bec565b600c5461282a9190614c1d565b60105550505050601360019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a89190614ec6565b6001600160a01b031663c9c65396601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190614ec6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d9190614ec6565b601480546001600160a01b0319166001600160a01b039290921691821790556000908152600160208190526040909120805460ff191690911790556010546103e8906129ea906005614c1d565b6129f49190614bfb565b601d556010546103e890612a09906005614c1d565b612a139190614bfb565b601e556024805460ff19166001178082556010546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612a849190815260200190565b60405180910390a3601354612aab90309061010090046001600160a01b031660001961348f565b602454601354612ad4916001600160a01b0361010091829004811692919091041660001961348f565b60005b84811015612b7557600f54600090612af39060ff16600a614bec565b858584818110612b0557612b05614c34565b90506020020135612b169190614c1d565b602454909150612b609061010090046001600160a01b0316888885818110612b4057612b40614c34565b9050602002016020810190612b55919061456e565b836000806001613a9f565b50508080612b6d90614ee3565b915050612ad7565b5060245461010090046001600160a01b0316600081815260208190526040902054612ba29190309061128b565b50601354306000818152602081905260409020546101009092046001600160a01b03169163f305d7199147916024805460405160e087901b6001600160e01b03191681526001600160a01b03948516600482015291820192909252600060448201819052606482015261010090910490911660848201524260a482015260c40160606040518083038185885af1158015612c40573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c659190614efc565b505050611596612010565b60245461010090046001600160a01b03163314612cbd5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f54610100900460ff1615612d155760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ce4565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7e9190614ec6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612def9190614ec6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5e9190614ec6565b6014546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612ff457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190614ec6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e9190614ec6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf9190614ec6565b601480546001600160a01b0319166001600160a01b0392909216919091179055613010565b601480546001600160a01b0319166001600160a01b0383161790555b60138054610100600160a81b0319166101006001600160a01b03858116820292909217835560145482166000908152600160208190526040909120805460ff1916909117905591546112a892309291041660001961348f565b60245461010090046001600160a01b031633146130b65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f54610100900460ff161561310e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ce4565b6024546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561314e573d6000803e3d6000fd5b50565b60245461010090046001600160a01b0316331461319e5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6022805460ff1916911515919091179055565b60245461010090046001600160a01b031633146131fe5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b828460105461320d9190614c1d565b6132179190614bfb565b601955601054819061322a908490614c1d565b6132349190614bfb565b601a81905560195411156132945760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ce4565b6014546001600160a01b0316600090815260208190526040902054612710906132be906096614c1d565b6132c89190614bfb565b601a5411156133255760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ce4565b620f42406010546133369190614bfb565b601a54101561339e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce4565b620f42406010546133af9190614bfb565b60195410156123bd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce4565b60245461010090046001600160a01b031633146134645760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166134db5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ce4565b6001600160a01b0382166135275760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ce4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166135ee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce4565b6001600160a01b0383166136505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce4565b600082116136b25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ce4565b6001600160a01b0384166000908152600160205260408120548190819060ff16156136e0576001925061370e565b6001600160a01b03861660009081526001602052604090205460ff161561370a576001915061370e565b5060015b6137188787613d53565b156139a557601f5460ff1661381957806137745760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ce4565b6001600160a01b03871660009081526005602052604090205460ff161580156137b657506001600160a01b03861660009081526005602052604090205460ff16155b156138195760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ce4565b82806138225750815b156138d1576001600160a01b03871660009081526007602052604090205460ff1615801561386957506001600160a01b03861660009081526007602052604090205460ff16155b156138d157601d548511156138d15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ce4565b6013546001600160a01b0387811661010090920416148015906138f2575081155b156139a5576001600160a01b03861660009081526007602052604090205460ff166139a557601e548561393a886001600160a01b031660009081526020819052604090205490565b6139449190614c6b565b11156139a55760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ce4565b8115613a865760185460ff16613a8657601854610100900460ff1680156139e557506001600160a01b0386166000908152600a602052604090205460ff16155b8015613a0a57506001600160a01b0387166000908152600a602052604090205460ff16155b15613a8657306000908152602081905260409020546019548110613a8457601a54601b5460ff1615613a6e57601c546014546001600160a01b031660009081526020819052604090205461271091613a6191614c1d565b613a6b9190614bfb565b90505b808210613a79578091505b613a8282613e79565b505b505b613a94878787868686613a9f565b979650505050505050565b6000613aab8787613d53565b15613b4557601f5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b2e575060408051601f3d908101601f19168201909252613b2b91810190614cb9565b60015b613b3757600080fd5b905080613b4357600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613b8757506001600160a01b03871660009081526006602052604090205460ff165b15613b90575060005b6001600160a01b03881660009081526020819052604081208054889290613bb8908490614abb565b909155506000905081613bcb5786613bd8565b613bd8898988888b614264565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c0e9190614c6b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c5a91815260200190565b60405180910390a3601f54610100900460ff16613d4457613c7b8989614419565b601f54610100900460ff16158015613c985750613c988989613d53565b8015613cbd57506001600160a01b03891660009081526005602052604090205460ff16155b8015613ce257506001600160a01b03881660009081526005602052604090205460ff16155b8015613cec575083155b15613d445760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ce4565b50600198975050505050505050565b6024546000906001600160a01b038481166101009092041614801590613d8c57506024546001600160a01b038381166101009092041614155b8015613da8575060245461010090046001600160a01b03163214155b8015613dcd57506001600160a01b03821660009081526004602052604090205460ff16155b8015613df257506001600160a01b03831660009081526004602052604090205460ff16155b8015613e0957506001600160a01b03821661dead14155b8015613e1d57506001600160a01b03821615155b8015613e3257506001600160a01b0383163014155b8015613e525750601f546001600160a01b03848116620100009092041614155b8015613e725750601f546001600160a01b03838116620100009092041614155b9392505050565b6018805460ff191660011790556040805160808101825260125461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b900490911660608201819052600003613ed75750614257565b30600090815260036020908152604080832060135461010090046001600160a01b0316845290915290205460001914613f3a5730600090815260036020908152604080832060135461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f6f57613f6f614c34565b60200260200101906001600160a01b031690816001600160a01b031681525050601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140069190614ec6565b8160018151811061401957614019614c34565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81526101009091049091169063791ac94790614066908690600090869030904290600401614f2a565b600060405180830381600087803b15801561408057600080fd5b505af1925050508015614091575060015b61409c575050614257565b6000479050600080846060015161ffff16856020015161ffff16846140c19190614c1d565b6140cb9190614bfb565b90506000856060015161ffff16866040015161ffff16856140ec9190614c1d565b6140f69190614bfb565b905060006141048284614c6b565b61410e9086614abb565b875190915061ffff1615614179576015546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461416e576040519150601f19603f3d011682016040523d82523d6000602084013e614173565b606091505b50909450505b602087015161ffff16156141e4576017546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d80600081146141d9576040519150601f19603f3d011682016040523d82523d6000602084013e6141de565b606091505b50909450505b604087015161ffff161561424f576016546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114614244576040519150601f19603f3d011682016040523d82523d6000602084013e614249565b606091505b50909450505b505050505050505b506018805460ff19169055565b600080841561429557506001600160a01b038516600090815260216020526040902042905560115461ffff16614336565b831561432557506011546022546201000090910461ffff169060ff1615614320576001600160a01b0387166000908152602160205260409020541580159061430057506023546001600160a01b0388166000908152602160205260409020546142fe9042614abb565b105b156143205760115461431d90600160301b900461ffff1682614c6b565b90505b614336565b50601154640100000000900461ffff165b806000036143475782915050614410565b601f546201000090046001600160a01b031630148015614371575046600114806143715750466038145b1561437b57506111945b600061271061438a8386614c1d565b6143949190614bfb565b905080156144015730600090815260208190526040812080548392906143bb908490614c6b565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61440b8185614abb565b925050505b95945050505050565b601f54610100900460ff161561447d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ce4565b6144878282613d53565b1580156144a157506014546001600160a01b038281169116145b15611f97576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601f805461ff00191661010017908190556201000090041661451957601f805462010000600160b01b0319163062010000021790555b6018805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016125f6565b6001600160a01b038116811461314e57600080fd5b60006020828403121561458057600080fd5b8135613e7281614559565b801515811461314e57600080fd5b600080604083850312156145ac57600080fd5b82356145b78161458b565b915060208301356145c78161458b565b809150509250929050565b60005b838110156145ed5781810151838201526020016145d5565b50506000910152565b60208152600082518060208401526146158160408501602087016145d2565b601f01601f19169190910160400192915050565b6000806040838503121561463c57600080fd5b823561464781614559565b946020939093013593505050565b60008060006060848603121561466a57600080fd5b833561467581614559565b9250602084013561468581614559565b929592945050506040919091013590565b803561ffff811681146146a857600080fd5b919050565b600080604083850312156146c057600080fd5b823591506146d060208401614696565b90509250929050565b600080604083850312156146ec57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561473a5761473a6146fb565b604052919050565b600067ffffffffffffffff82111561475c5761475c6146fb565b5060051b60200190565b600082601f83011261477757600080fd5b8135602061478c61478783614742565b614711565b82815260059290921b840181019181810190868411156147ab57600080fd5b8286015b848110156147c657803583529183019183016147af565b509695505050505050565b600080604083850312156147e457600080fd5b823567ffffffffffffffff808211156147fc57600080fd5b818501915085601f83011261481057600080fd5b8135602061482061478783614742565b82815260059290921b8401810191818101908984111561483f57600080fd5b948201945b8386101561486657853561485781614559565b82529482019490820190614844565b9650508601359250508082111561487c57600080fd5b5061488985828601614766565b9150509250929050565b6000806000606084860312156148a857600080fd5b6148b184614696565b92506148bf60208501614696565b91506148cd60408501614696565b90509250925092565b600080604083850312156148e957600080fd5b82356145b781614559565b60006020828403121561490657600080fd5b5035919050565b60008060006060848603121561492257600080fd5b833561492d81614559565b9250602084013561493d81614559565b9150604084013561494d81614559565b809150509250925092565b6000806040838503121561496b57600080fd5b823561497681614559565b915060208301356145c781614559565b60008083601f84011261499857600080fd5b50813567ffffffffffffffff8111156149b057600080fd5b6020830191508360208260051b85010111156149cb57600080fd5b9250929050565b6000806000806000606086880312156149ea57600080fd5b853567ffffffffffffffff80821115614a0257600080fd5b614a0e89838a01614986565b90975095506020880135915080821115614a2757600080fd5b50614a3488828901614986565b9094509250506040860135614a4881614559565b809150509295509295909350565b600060208284031215614a6857600080fd5b8135613e728161458b565b60008060008060808587031215614a8957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c9557610c95614aa5565b600181811c90821680614ae257607f821691505b602082108103614b0257634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115614b43578160001904821115614b2957614b29614aa5565b80851615614b3657918102915b93841c9390800290614b0d565b509250929050565b600082614b5a57506001610c95565b81614b6757506000610c95565b8160018114614b7d5760028114614b8757614ba3565b6001915050610c95565b60ff841115614b9857614b98614aa5565b50506001821b610c95565b5060208310610133831016604e8410600b8410161715614bc6575081810a610c95565b614bd08383614b08565b8060001904821115614be457614be4614aa5565b029392505050565b6000613e7260ff841683614b4b565b600082614c1857634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c9557610c95614aa5565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614c6157614c61614aa5565b6001019392505050565b80820180821115610c9557610c95614aa5565b61ffff818116838216019080821115614c9957614c99614aa5565b5092915050565b600060208284031215614cb257600080fd5b5051919050565b600060208284031215614ccb57600080fd5b8151613e728161458b565b600082601f830112614ce757600080fd5b815167ffffffffffffffff811115614d0157614d016146fb565b614d14601f8201601f1916602001614711565b818152846020838601011115614d2957600080fd5b610eb48260208301602087016145d2565b60008060008060808587031215614d5057600080fd5b845167ffffffffffffffff80821115614d6857600080fd5b614d7488838901614cd6565b95506020870151915080821115614d8a57600080fd5b50614d9787828801614cd6565b93505060408501519150606085015160ff81168114614db557600080fd5b939692955090935050565b601f8211156112a857600081815260208120601f850160051c81016020861015614de75750805b601f850160051c820191505b81811015610d5657828155600101614df3565b815167ffffffffffffffff811115614e2057614e206146fb565b614e3481614e2e8454614ace565b84614dc0565b602080601f831160018114614e695760008415614e515750858301515b600019600386901b1c1916600185901b178555610d56565b600085815260208120601f198616915b82811015614e9857888601518255948401946001909101908401614e79565b5085821015614eb65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614ed857600080fd5b8151613e7281614559565b600060018201614ef557614ef5614aa5565b5060010190565b600080600060608486031215614f1157600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614f7a5784516001600160a01b031683529383019391830191600101614f55565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122000bd73b80e635a7abd0100a41dc4bf5e92a5e1b124cad4c429190db7e2bff05c64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106103dd5760003560e01c8063590ffdce116101fd578063aa22b17211610118578063dd62ed3e116100ab578063f6c25b6b1161007a578063f6c25b6b14610b9c578063f94aa1b414610bbc578063fb78680d14610c13578063fdb78c0e14610c33578063feadde9c14610c5257600080fd5b8063dd62ed3e14610b0e578063de3a3b6914610b54578063eafb5a3c14610b67578063ee5d9c2d14610b8757600080fd5b8063b7df8b36116100e7578063b7df8b3614610a84578063bfc2fc3514610a9e578063cf84770614610abe578063db34e89214610af857600080fd5b8063aa22b17214610a44578063ab558e4d14610a64578063b1b08f7114610689578063b3d514fb1461068957600080fd5b806377a202ec116101905780638a63bd9b1161015f5780638a63bd9b146109e55780638a8c523c146109fa57806395d89b4114610a0f578063a9059cbb14610a2457600080fd5b806377a202ec1461097357806378648edf1461098d57806380c581d1146109a2578063893d20e8146109c257600080fd5b80636ebd0078116101cc5780636ebd0078146108f357806370a0823114610908578063715018a61461093e57806375cb1bd11461095357600080fd5b8063590ffdce146108645780635a6f0918146108845780635c24b0741461089a5780635cce86cd146108ba57600080fd5b806328577751116102f85780633f3cf56c1161028b5780634bbb93eb1161025a5780634bbb93eb146107ac5780634e718e48146107cc5780634fb2e45d146107ec5780634fbee1931461080c57806350a8e0161461084557600080fd5b80633f3cf56c1461073c578063452ed4f11461075c57806346ea7ac81461077c5780634ada218b1461079257600080fd5b8063313ce567116102c7578063313ce567146106b557806332cde664146106dc57806333251a0b146106fc57806336fddb041461071c57600080fd5b8063285777511461065e5780632b112e49146106745780632b28fc7a146106895780632e8fa8211461069f57600080fd5b8063095ea7b31161037057806323b872dd1161033f57806323b872dd146105de578063247cb8b7146105fe578063260039571461061e5780632610eaca1461063e57600080fd5b8063095ea7b31461055b5780630dcbcf1c1461057b5780630fa604e4146105b457806318160ddd146105c957600080fd5b8063069d955f116103ac578063069d955f1461048257806306fdde03146104ea5780630758d9241461050c57806307dd79e01461053157600080fd5b80630281abdf146103e957806303fd2a451461041c5780630445b6671461044a578063044df7261461046057600080fd5b366103e457005b600080fd5b3480156103f557600080fd5b5061040961040436600461456e565b610c72565b6040519081526020015b60405180910390f35b34801561042857600080fd5b5061043261dead81565b6040516001600160a01b039091168152602001610413565b34801561045657600080fd5b5061040960195481565b34801561046c57600080fd5b5061048061047b366004614599565b610c9b565b005b34801561048e57600080fd5b506011546104bc9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b6040805161ffff95861681529385166020850152918416918301919091529091166060820152608001610413565b3480156104f657600080fd5b506104ff610d5e565b60405161041391906145f6565b34801561051857600080fd5b506013546104329061010090046001600160a01b031681565b34801561053d57600080fd5b5060135461054b9060ff1681565b6040519015158152602001610413565b34801561056757600080fd5b5061054b610576366004614629565b610df0565b34801561058757600080fd5b5061054b61059636600461456e565b6001600160a01b031660009081526005602052604090205460ff1690565b3480156105c057600080fd5b50610409610e06565b3480156105d557600080fd5b50610409610e2c565b3480156105ea57600080fd5b5061054b6105f9366004614655565b610e44565b34801561060a57600080fd5b506104806106193660046146ad565b610ebc565b34801561062a57600080fd5b506104806106393660046146d9565b610fdf565b34801561064a57600080fd5b506104806106593660046147d1565b6110e8565b34801561066a57600080fd5b50610409601c5481565b34801561068057600080fd5b506104096112ad565b34801561069557600080fd5b506104096107d081565b3480156106ab57600080fd5b50610409601a5481565b3480156106c157600080fd5b506106ca611314565b60405160ff9091168152602001610413565b3480156106e857600080fd5b506104806106f7366004614893565b61132f565b34801561070857600080fd5b5061048061071736600461456e565b6114e7565b34801561072857600080fd5b506104806107373660046148d6565b61159d565b34801561074857600080fd5b506104806107573660046146d9565b611615565b34801561076857600080fd5b50601454610432906001600160a01b031681565b34801561078857600080fd5b506104096109c481565b34801561079e57600080fd5b50601f5461054b9060ff1681565b3480156107b857600080fd5b506104096107c73660046148f4565b61172b565b3480156107d857600080fd5b506104806107e73660046148f4565b61175f565b3480156107f857600080fd5b5061048061080736600461456e565b611802565b34801561081857600080fd5b5061054b61082736600461456e565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561085157600080fd5b50601f5461054b90610100900460ff1681565b34801561087057600080fd5b5061048061087f3660046148d6565b611a21565b34801561089057600080fd5b5061040960205481565b3480156108a657600080fd5b506104806108b536600461456e565b611a99565b3480156108c657600080fd5b5061054b6108d536600461456e565b6001600160a01b031660009081526007602052604090205460ff1690565b3480156108ff57600080fd5b50610409611b78565b34801561091457600080fd5b5061040961092336600461456e565b6001600160a01b031660009081526020819052604090205490565b34801561094a57600080fd5b50610480611b99565b34801561095f57600080fd5b5061048061096e36600461490d565b611c55565b34801561097f57600080fd5b5060225461054b9060ff1681565b34801561099957600080fd5b50610480611d61565b3480156109ae57600080fd5b506104806109bd3660046148d6565b611dbd565b3480156109ce57600080fd5b5060245461010090046001600160a01b0316610432565b3480156109f157600080fd5b5061054b611f9b565b348015610a0657600080fd5b50610480612010565b348015610a1b57600080fd5b506104ff61224e565b348015610a3057600080fd5b5061054b610a3f366004614629565b61225d565b348015610a5057600080fd5b50610480610a5f366004614893565b612274565b348015610a7057600080fd5b50610480610a7f36600461456e565b6123c3565b348015610a9057600080fd5b50601b5461054b9060ff1681565b348015610aaa57600080fd5b50610480610ab9366004614599565b612556565b348015610aca57600080fd5b506012546104bc9061ffff808216916201000081048216916401000000008204811691600160301b90041684565b348015610b0457600080fd5b5061040960235481565b348015610b1a57600080fd5b50610409610b29366004614958565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b610480610b623660046149d2565b612602565b348015610b7357600080fd5b50610480610b8236600461456e565b612c70565b348015610b9357600080fd5b50610480613069565b348015610ba857600080fd5b50610480610bb7366004614a56565b613151565b348015610bc857600080fd5b50601554601654601754610be9926001600160a01b03908116928116911683565b604080516001600160a01b0394851681529284166020840152921691810191909152606001610413565b348015610c1f57600080fd5b50610480610c2e366004614a73565b6131b1565b348015610c3f57600080fd5b5060185461054b90610100900460ff1681565b348015610c5e57600080fd5b50610480610c6d3660046148d6565b613417565b6001600160a01b038116600090815260216020526040812054610c959042614abb565b92915050565b60245461010090046001600160a01b03163314610ced5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c83398151915260448201526064015b60405180910390fd5b601f5460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b505050505050565b6060600d8054610d6d90614ace565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9990614ace565b8015610de65780601f10610dbb57610100808354040283529160200191610de6565b820191906000526020600020905b815481529060010190602001808311610dc957829003601f168201915b5050505050905090565b6000610dfd33848461348f565b50600192915050565b600f54600090610e1a9060ff16600a614bec565b601e54610e279190614bfb565b905090565b6000601054600003610e3d57600080fd5b5060105490565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610ea9576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610ea3908490614abb565b90915550505b610eb4848484613588565b949350505050565b60245461010090046001600160a01b03163314610f095760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b620151806023541115610f5e5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f742065786365656420323420686f7572732e0000000000000000006044820152606401610ce4565b6101f48161ffff161115610fb45760405162461bcd60e51b815260206004820152601160248201527f43616e6e6f74206578636565642035252e0000000000000000000000000000006044820152606401610ce4565b6023919091556011805461ffff909216600160301b0267ffff00000000000019909216919091179055565b60245461010090046001600160a01b0316331461102c5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b606460105461103b9190614bfb565b818360105461104a9190614c1d565b6110549190614bfb565b10156110c85760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610ce4565b80826010546110d79190614c1d565b6110e19190614bfb565b601e555050565b60245461010090046001600160a01b031633146111355760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b80518251146111865760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610ce4565b60005b82518161ffff1610156112a857600f546111a79060ff16600a614bec565b828261ffff16815181106111bd576111bd614c34565b60200260200101516111cf9190614c1d565b33600090815260208190526040902054101561122d5760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610ce4565b61129533848361ffff168151811061124757611247614c34565b6020908102919091010151600f546112639060ff16600a614bec565b858561ffff168151811061127957611279614c34565b602002602001015161128b9190614c1d565b6000806001613a9f565b50806112a081614c4a565b915050611189565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf83546113079190614c6b565b601054610e279190614abb565b600060105460000361132557600080fd5b50600f5460ff1690565b60245461010090046001600160a01b0316331461137c5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60135460ff16156113cf5760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610ce4565b6107d08361ffff16111580156113eb57506107d08261ffff1611155b80156113fd57506107d08161ffff1611155b6114495760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610ce4565b6109c46114568385614c7e565b61ffff1611156114a85760405162461bcd60e51b815260206004820181905260248201527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e6044820152606401610ce4565b6011805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b60245461010090046001600160a01b031633146115345760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b15801561158257600080fd5b505af1158015611596573d6000803e3d6000fd5b5050505050565b60245461010090046001600160a01b031633146115ea5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b60245461010090046001600160a01b031633146116625760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6103e860105460056116749190614c1d565b61167e9190614bfb565b818360105461168d9190614c1d565b6116979190614bfb565b101561170b5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610ce4565b808260105461171a9190614c1d565b6117249190614bfb565b601d555050565b6014546001600160a01b031660009081526020819052604081205461271090611755908490614c1d565b610c959190614bfb565b60245461010090046001600160a01b031633146117ac5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60968111156117fd5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610ce4565b601c55565b60245461010090046001600160a01b0316331461184f5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b0381166118cb5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce4565b61deac196001600160a01b0382160161194c5760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610ce4565b6024546119689061010090046001600160a01b03166000611a21565b611973816001611a21565b60245461010090046001600160a01b031660009081526020819052604081205411156119c75760245461010090046001600160a01b03166000818152602081905260409020546119c59190839061128b565b505b602480546001600160a01b03838116610100818102610100600160a81b031985161790945560405193909204169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60245461010090046001600160a01b03163314611a6e5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b60245461010090046001600160a01b03163314611ae65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f5460ff1615611af657600080fd5b306001600160a01b03821603611b4e5760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610ce4565b601f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b600f54600090611b8c9060ff16600a614bec565b601d54610e279190614bfb565b60245461010090046001600160a01b03163314611be65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b602454611c029061010090046001600160a01b03166000611a21565b60248054610100600160a81b031981169091556040516101009091046001600160a01b03169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b60245461010090046001600160a01b03163314611ca25760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03831615801590611cc257506001600160a01b03821615155b8015611cd657506001600160a01b03811615155b611d225760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610ce4565b601580546001600160a01b039485166001600160a01b031991821617909155601680549385169382169390931790925560178054919093169116179055565b60245461010090046001600160a01b03163314611dae5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6013805460ff19166001179055565b60245461010090046001600160a01b03163314611e0a5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b80611e68576001600160a01b03828116600081815260016020526040808220805460ff19169055601f5490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610d28565b60025415611ecf576203f48060025442611e829190614abb565b11611ecf5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610ce4565b6001600160a01b03821660009081526001602052604090205460ff1615611f385760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610ce4565b6001600160a01b03828116600081815260016020819052604091829020805460ff19168217905542600255601f5491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610d28565b5050565b60245460009061010090046001600160a01b03163314611feb5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60135461200a90309061010090046001600160a01b031660001961348f565b50600190565b60245461010090046001600160a01b0316331461205d5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f5460ff16156120b05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610ce4565b601f54610100900460ff166121075760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610ce4565b601f546201000090046001600160a01b031661213757601f805462010000600160b01b0319163062010000021790555b601f54601454600f54604051631b04570d60e21b81526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b1580156121af57600080fd5b505af19250505080156121c0575060015b50601f8054600160ff1991821617909155600b805490911690556014546001600160a01b03166000908152602081905260409020546127109061220490600a614c1d565b61220e9190614bfb565b6019556014546001600160a01b03166000908152602081905260409020546127109061223b90601e614c1d565b6122459190614bfb565b601a5542602055565b6060600e8054610d6d90614ace565b600061226a338484613588565b5060019392505050565b60245461010090046001600160a01b031633146122c15760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6012805465ffffffff000019166201000061ffff8681169190910265ffff00000000191691909117640100000000858316021761ffff19169083161790558261230a8284614c7e565b6123149190614c7e565b6012805467ffff0000000000001916600160301b61ffff9384160217905560115460009161234b9162010000810482169116614c7e565b60125461ffff9182169250600160301b9004168110156123bd5760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610ce4565b50505050565b60245461010090046001600160a01b031633146124105760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b306001600160a01b038216036124685760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610ce4565b602480546040516370a0823160e01b815230600482015283926001600160a01b038085169363a9059cbb936101009091049091169184916370a082319101602060405180830381865afa1580156124c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e79190614ca0565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015612532573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a89190614cb9565b60245461010090046001600160a01b031633146125a35760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6018805461ff00191661010084151590810291909117909155601b805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b60245461010090046001600160a01b0316331461264f5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b60245460ff16156126865760405162461bcd60e51b81526020600482015260016024820152603160f81b6044820152606401610ce4565b8382146126b95760405162461bcd60e51b81526020600482015260016024820152601960f91b6044820152606401610ce4565b60004711806126c85750600034115b6127145760405162461bcd60e51b815260206004820152601760248201527f4e6f2066756e647320666f72206c69717569646974792e0000000000000000006044820152606401610ce4565b80601f60026101000a8154816001600160a01b0302191690836001600160a01b03160217905550601f60029054906101000a90046001600160a01b03166001600160a01b031663dbc4d8836040518163ffffffff1660e01b81526004016000604051808303816000875af19250505080156127b157506040513d6000823e601f3d908101601f191682016040526127ae9190810190614d3a565b60015b6127e15760405162461bcd60e51b81526020600482015260016024820152603360f81b6044820152606401610ce4565b600d6127ed8582614e06565b50600e6127fa8482614e06565b50600c829055600f805460ff191660ff831690811790915561281d90600a614bec565b600c5461282a9190614c1d565b60105550505050601360019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a89190614ec6565b6001600160a01b031663c9c65396601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292d9190614ec6565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af1158015612979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299d9190614ec6565b601480546001600160a01b0319166001600160a01b039290921691821790556000908152600160208190526040909120805460ff191690911790556010546103e8906129ea906005614c1d565b6129f49190614bfb565b601d556010546103e890612a09906005614c1d565b612a139190614bfb565b601e556024805460ff19166001178082556010546001600160a01b0361010092839004811660009081526020819052604080822084905594549451939094041692917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91612a849190815260200190565b60405180910390a3601354612aab90309061010090046001600160a01b031660001961348f565b602454601354612ad4916001600160a01b0361010091829004811692919091041660001961348f565b60005b84811015612b7557600f54600090612af39060ff16600a614bec565b858584818110612b0557612b05614c34565b90506020020135612b169190614c1d565b602454909150612b609061010090046001600160a01b0316888885818110612b4057612b40614c34565b9050602002016020810190612b55919061456e565b836000806001613a9f565b50508080612b6d90614ee3565b915050612ad7565b5060245461010090046001600160a01b0316600081815260208190526040902054612ba29190309061128b565b50601354306000818152602081905260409020546101009092046001600160a01b03169163f305d7199147916024805460405160e087901b6001600160e01b03191681526001600160a01b03948516600482015291820192909252600060448201819052606482015261010090910490911660848201524260a482015260c40160606040518083038185885af1158015612c40573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612c659190614efc565b505050611596612010565b60245461010090046001600160a01b03163314612cbd5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f54610100900460ff1615612d155760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610ce4565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7e9190614ec6565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612dcb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612def9190614ec6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015612e3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5e9190614ec6565b6014546001600160a01b039081166000908152600160205260409020805460ff191690559091508116612ff457816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ec9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eed9190614ec6565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5e9190614ec6565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612fab573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcf9190614ec6565b601480546001600160a01b0319166001600160a01b0392909216919091179055613010565b601480546001600160a01b0319166001600160a01b0383161790555b60138054610100600160a81b0319166101006001600160a01b03858116820292909217835560145482166000908152600160208190526040909120805460ff1916909117905591546112a892309291041660001961348f565b60245461010090046001600160a01b031633146130b65760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b601f54610100900460ff161561310e5760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610ce4565b6024546040516001600160a01b0361010090920491909116904780156108fc02916000818181858888f1935050505015801561314e573d6000803e3d6000fd5b50565b60245461010090046001600160a01b0316331461319e5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6022805460ff1916911515919091179055565b60245461010090046001600160a01b031633146131fe5760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b828460105461320d9190614c1d565b6132179190614bfb565b601955601054819061322a908490614c1d565b6132349190614bfb565b601a81905560195411156132945760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610ce4565b6014546001600160a01b0316600090815260208190526040902054612710906132be906096614c1d565b6132c89190614bfb565b601a5411156133255760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610ce4565b620f42406010546133369190614bfb565b601a54101561339e5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce4565b620f42406010546133af9190614bfb565b60195410156123bd5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610ce4565b60245461010090046001600160a01b031633146134645760405162461bcd60e51b81526020600482015260116024820152600080516020614f9c8339815191526044820152606401610ce4565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b0383166134db5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ce4565b6001600160a01b0382166135275760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610ce4565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166135ee5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ce4565b6001600160a01b0383166136505760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ce4565b600082116136b25760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610ce4565b6001600160a01b0384166000908152600160205260408120548190819060ff16156136e0576001925061370e565b6001600160a01b03861660009081526001602052604090205460ff161561370a576001915061370e565b5060015b6137188787613d53565b156139a557601f5460ff1661381957806137745760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610ce4565b6001600160a01b03871660009081526005602052604090205460ff161580156137b657506001600160a01b03861660009081526005602052604090205460ff16155b156138195760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610ce4565b82806138225750815b156138d1576001600160a01b03871660009081526007602052604090205460ff1615801561386957506001600160a01b03861660009081526007602052604090205460ff16155b156138d157601d548511156138d15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610ce4565b6013546001600160a01b0387811661010090920416148015906138f2575081155b156139a5576001600160a01b03861660009081526007602052604090205460ff166139a557601e548561393a886001600160a01b031660009081526020819052604090205490565b6139449190614c6b565b11156139a55760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610ce4565b8115613a865760185460ff16613a8657601854610100900460ff1680156139e557506001600160a01b0386166000908152600a602052604090205460ff16155b8015613a0a57506001600160a01b0387166000908152600a602052604090205460ff16155b15613a8657306000908152602081905260409020546019548110613a8457601a54601b5460ff1615613a6e57601c546014546001600160a01b031660009081526020819052604090205461271091613a6191614c1d565b613a6b9190614bfb565b90505b808210613a79578091505b613a8282613e79565b505b505b613a94878787868686613a9f565b979650505050505050565b6000613aab8787613d53565b15613b4557601f5460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613b2e575060408051601f3d908101601f19168201909252613b2b91810190614cb9565b60015b613b3757600080fd5b905080613b4357600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff1680613b8757506001600160a01b03871660009081526006602052604090205460ff165b15613b90575060005b6001600160a01b03881660009081526020819052604081208054889290613bb8908490614abb565b909155506000905081613bcb5786613bd8565b613bd8898988888b614264565b9050806000808a6001600160a01b03166001600160a01b031681526020019081526020016000206000828254613c0e9190614c6b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c5a91815260200190565b60405180910390a3601f54610100900460ff16613d4457613c7b8989614419565b601f54610100900460ff16158015613c985750613c988989613d53565b8015613cbd57506001600160a01b03891660009081526005602052604090205460ff16155b8015613ce257506001600160a01b03881660009081526005602052604090205460ff16155b8015613cec575083155b15613d445760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610ce4565b50600198975050505050505050565b6024546000906001600160a01b038481166101009092041614801590613d8c57506024546001600160a01b038381166101009092041614155b8015613da8575060245461010090046001600160a01b03163214155b8015613dcd57506001600160a01b03821660009081526004602052604090205460ff16155b8015613df257506001600160a01b03831660009081526004602052604090205460ff16155b8015613e0957506001600160a01b03821661dead14155b8015613e1d57506001600160a01b03821615155b8015613e3257506001600160a01b0383163014155b8015613e525750601f546001600160a01b03848116620100009092041614155b8015613e725750601f546001600160a01b03838116620100009092041614155b9392505050565b6018805460ff191660011790556040805160808101825260125461ffff8082168352620100008204811660208401526401000000008204811693830193909352600160301b900490911660608201819052600003613ed75750614257565b30600090815260036020908152604080832060135461010090046001600160a01b0316845290915290205460001914613f3a5730600090815260036020908152604080832060135461010090046001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613f6f57613f6f614c34565b60200260200101906001600160a01b031690816001600160a01b031681525050601360019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140069190614ec6565b8160018151811061401957614019614c34565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b81526101009091049091169063791ac94790614066908690600090869030904290600401614f2a565b600060405180830381600087803b15801561408057600080fd5b505af1925050508015614091575060015b61409c575050614257565b6000479050600080846060015161ffff16856020015161ffff16846140c19190614c1d565b6140cb9190614bfb565b90506000856060015161ffff16866040015161ffff16856140ec9190614c1d565b6140f69190614bfb565b905060006141048284614c6b565b61410e9086614abb565b875190915061ffff1615614179576015546040516001600160a01b039091169061d6d89083906000818181858888f193505050503d806000811461416e576040519150601f19603f3d011682016040523d82523d6000602084013e614173565b606091505b50909450505b602087015161ffff16156141e4576017546040516001600160a01b039091169061d6d89085906000818181858888f193505050503d80600081146141d9576040519150601f19603f3d011682016040523d82523d6000602084013e6141de565b606091505b50909450505b604087015161ffff161561424f576016546040516001600160a01b039091169061d6d89084906000818181858888f193505050503d8060008114614244576040519150601f19603f3d011682016040523d82523d6000602084013e614249565b606091505b50909450505b505050505050505b506018805460ff19169055565b600080841561429557506001600160a01b038516600090815260216020526040902042905560115461ffff16614336565b831561432557506011546022546201000090910461ffff169060ff1615614320576001600160a01b0387166000908152602160205260409020541580159061430057506023546001600160a01b0388166000908152602160205260409020546142fe9042614abb565b105b156143205760115461431d90600160301b900461ffff1682614c6b565b90505b614336565b50601154640100000000900461ffff165b806000036143475782915050614410565b601f546201000090046001600160a01b031630148015614371575046600114806143715750466038145b1561437b57506111945b600061271061438a8386614c1d565b6143949190614bfb565b905080156144015730600090815260208190526040812080548392906143bb908490614c6b565b909155505060405181815230906001600160a01b038a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b61440b8185614abb565b925050505b95945050505050565b601f54610100900460ff161561447d5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610ce4565b6144878282613d53565b1580156144a157506014546001600160a01b038281169116145b15611f97576001600160a01b038083166000908152600460209081526040808320805460ff1990811660019081179092556006909352922080549091169091179055601f805461ff00191661010017908190556201000090041661451957601f805462010000600160b01b0319163062010000021790555b6018805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020016125f6565b6001600160a01b038116811461314e57600080fd5b60006020828403121561458057600080fd5b8135613e7281614559565b801515811461314e57600080fd5b600080604083850312156145ac57600080fd5b82356145b78161458b565b915060208301356145c78161458b565b809150509250929050565b60005b838110156145ed5781810151838201526020016145d5565b50506000910152565b60208152600082518060208401526146158160408501602087016145d2565b601f01601f19169190910160400192915050565b6000806040838503121561463c57600080fd5b823561464781614559565b946020939093013593505050565b60008060006060848603121561466a57600080fd5b833561467581614559565b9250602084013561468581614559565b929592945050506040919091013590565b803561ffff811681146146a857600080fd5b919050565b600080604083850312156146c057600080fd5b823591506146d060208401614696565b90509250929050565b600080604083850312156146ec57600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561473a5761473a6146fb565b604052919050565b600067ffffffffffffffff82111561475c5761475c6146fb565b5060051b60200190565b600082601f83011261477757600080fd5b8135602061478c61478783614742565b614711565b82815260059290921b840181019181810190868411156147ab57600080fd5b8286015b848110156147c657803583529183019183016147af565b509695505050505050565b600080604083850312156147e457600080fd5b823567ffffffffffffffff808211156147fc57600080fd5b818501915085601f83011261481057600080fd5b8135602061482061478783614742565b82815260059290921b8401810191818101908984111561483f57600080fd5b948201945b8386101561486657853561485781614559565b82529482019490820190614844565b9650508601359250508082111561487c57600080fd5b5061488985828601614766565b9150509250929050565b6000806000606084860312156148a857600080fd5b6148b184614696565b92506148bf60208501614696565b91506148cd60408501614696565b90509250925092565b600080604083850312156148e957600080fd5b82356145b781614559565b60006020828403121561490657600080fd5b5035919050565b60008060006060848603121561492257600080fd5b833561492d81614559565b9250602084013561493d81614559565b9150604084013561494d81614559565b809150509250925092565b6000806040838503121561496b57600080fd5b823561497681614559565b915060208301356145c781614559565b60008083601f84011261499857600080fd5b50813567ffffffffffffffff8111156149b057600080fd5b6020830191508360208260051b85010111156149cb57600080fd5b9250929050565b6000806000806000606086880312156149ea57600080fd5b853567ffffffffffffffff80821115614a0257600080fd5b614a0e89838a01614986565b90975095506020880135915080821115614a2757600080fd5b50614a3488828901614986565b9094509250506040860135614a4881614559565b809150509295509295909350565b600060208284031215614a6857600080fd5b8135613e728161458b565b60008060008060808587031215614a8957600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610c9557610c95614aa5565b600181811c90821680614ae257607f821691505b602082108103614b0257634e487b7160e01b600052602260045260246000fd5b50919050565b600181815b80851115614b43578160001904821115614b2957614b29614aa5565b80851615614b3657918102915b93841c9390800290614b0d565b509250929050565b600082614b5a57506001610c95565b81614b6757506000610c95565b8160018114614b7d5760028114614b8757614ba3565b6001915050610c95565b60ff841115614b9857614b98614aa5565b50506001821b610c95565b5060208310610133831016604e8410600b8410161715614bc6575081810a610c95565b614bd08383614b08565b8060001904821115614be457614be4614aa5565b029392505050565b6000613e7260ff841683614b4b565b600082614c1857634e487b7160e01b600052601260045260246000fd5b500490565b8082028115828204841417610c9557610c95614aa5565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103614c6157614c61614aa5565b6001019392505050565b80820180821115610c9557610c95614aa5565b61ffff818116838216019080821115614c9957614c99614aa5565b5092915050565b600060208284031215614cb257600080fd5b5051919050565b600060208284031215614ccb57600080fd5b8151613e728161458b565b600082601f830112614ce757600080fd5b815167ffffffffffffffff811115614d0157614d016146fb565b614d14601f8201601f1916602001614711565b818152846020838601011115614d2957600080fd5b610eb48260208301602087016145d2565b60008060008060808587031215614d5057600080fd5b845167ffffffffffffffff80821115614d6857600080fd5b614d7488838901614cd6565b95506020870151915080821115614d8a57600080fd5b50614d9787828801614cd6565b93505060408501519150606085015160ff81168114614db557600080fd5b939692955090935050565b601f8211156112a857600081815260208120601f850160051c81016020861015614de75750805b601f850160051c820191505b81811015610d5657828155600101614df3565b815167ffffffffffffffff811115614e2057614e206146fb565b614e3481614e2e8454614ace565b84614dc0565b602080601f831160018114614e695760008415614e515750858301515b600019600386901b1c1916600185901b178555610d56565b600085815260208120601f198616915b82811015614e9857888601518255948401946001909101908401614e79565b5085821015614eb65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614ed857600080fd5b8151613e7281614559565b600060018201614ef557614ef5614aa5565b5060010190565b600080600060608486031215614f1157600080fd5b8351925060208401519150604084015190509250925092565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015614f7a5784516001600160a01b031683529383019391830191600101614f55565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122000bd73b80e635a7abd0100a41dc4bf5e92a5e1b124cad4c429190db7e2bff05c64736f6c63430008110033

Deployed Bytecode Sourcemap

4048:26057:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21400:141;;;;;;;;;;-1:-1:-1;21400:141:0;;;;;:::i;:::-;;:::i;:::-;;;571:25:1;;;559:2;544:18;21400:141:0;;;;;;;;5806:73;;;;;;;;;;;;5837:42;5806:73;;;;;-1:-1:-1;;;;;771:55:1;;;753:74;;741:2;726:18;5806:73:0;607:226:1;6377:28:0;;;;;;;;;;;;;;;;17012:153;;;;;;;;;;-1:-1:-1;17012:153:0;;;;;:::i;:::-;;:::i;:::-;;5166:133;;;;;;;;;;-1:-1:-1;5166:133:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5166:133:0;;;;;;;;;1575:6:1;1608:15;;;1590:34;;1660:15;;;1655:2;1640:18;;1633:43;1712:15;;;1692:18;;;1685:43;;;;1764:15;;;1759:2;1744:18;;1737:43;1552:3;1537:19;5166:133:0;1342:444:1;12794:80:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5745:26::-;;;;;;;;;;-1:-1:-1;5745:26:0;;;;;;;-1:-1:-1;;;;;5745:26:0;;;5712;;;;;;;;;;-1:-1:-1;5712:26:0;;;;;;;;;;;2860:14:1;;2853:22;2835:41;;2823:2;2808:18;5712:26:0;2695:187:1;13402:161:0;;;;;;;;;;-1:-1:-1;13402:161:0;;;;;:::i;:::-;;:::i;16441:140::-;;;;;;;;;;-1:-1:-1;16441:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;16539:34:0;16515:4;16539:34;;;:25;:34;;;;;;;;;16441:140;19447:114;;;;;;;;;;;;;:::i;12465:115::-;;;;;;;;;;;;;:::i;14072:306::-;;;;;;;;;;-1:-1:-1;14072:306:0;;;;;:::i;:::-;;:::i;21086:::-;;;;;;;;;;-1:-1:-1;21086:306:0;;;;;:::i;:::-;;:::i;19059:264::-;;;;;;;;;;-1:-1:-1;19059:264:0;;;;;:::i;:::-;;:::i;27495:447::-;;;;;;;;;;-1:-1:-1;27495:447:0;;;;;:::i;:::-;;:::i;6485:33::-;;;;;;;;;;;;;;;;16745:141;;;;;;;;;;;;;:::i;5456:42::-;;;;;;;;;;;;5494:4;5456:42;;6412:25;;;;;;;;;;;;;;;;12586:112;;;;;;;;;;;;;:::i;:::-;;;7001:4:1;6989:17;;;6971:36;;6959:2;6944:18;12586:112:0;6829:184:1;17363:544:0;;;;;;;;;;-1:-1:-1;17363:544:0;;;;;:::i;:::-;;:::i;16894:110::-;;;;;;;;;;-1:-1:-1;16894:110:0;;;;;:::i;:::-;;:::i;16016:140::-;;;;;;;;;;-1:-1:-1;16016:140:0;;;;;:::i;:::-;;:::i;18778:273::-;;;;;;;;;;-1:-1:-1;18778:273:0;;;;;:::i;:::-;;:::i;5778:21::-;;;;;;;;;;-1:-1:-1;5778:21:0;;;;-1:-1:-1;;;;;5778:21:0;;;5609:46;;;;;;;;;;;;5651:4;5609:46;;6605:34;;;;;;;;;;-1:-1:-1;6605:34:0;;;;;;;;19569:189;;;;;;;;;;-1:-1:-1;19569:189:0;;;;;:::i;:::-;;:::i;20473:217::-;;;;;;;;;;-1:-1:-1;20473:217:0;;;;;:::i;:::-;;:::i;11188:654::-;;;;;;;;;;-1:-1:-1;11188:654:0;;;;;:::i;:::-;;:::i;16164:127::-;;;;;;;;;;-1:-1:-1;16164:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;16255:28:0;16231:4;16255:28;;;:19;:28;;;;;;;;;16164:127;6646:36;;;;;;;;;;-1:-1:-1;6646:36:0;;;;;;;;;;;16299:134;;;;;;;;;;-1:-1:-1;16299:134:0;;;;;:::i;:::-;;:::i;6719:26::-;;;;;;;;;;;;;;;;15646:222;;;;;;;;;;-1:-1:-1;15646:222:0;;;;;:::i;:::-;;:::i;15876:132::-;;;;;;;;;;-1:-1:-1;15876:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;15970:30:0;15946:4;15970:30;;;:21;:30;;;;;;;;;15876:132;19331:108;;;;;;;;;;;;;:::i;13104:117::-;;;;;;;;;;-1:-1:-1;13104:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13197:16:0;13170:7;13197:16;;;;;;;;;;;;13104:117;11850:225;;;;;;;;;;;;;:::i;18359:411::-;;;;;;;;;;-1:-1:-1;18359:411:0;;;;;:::i;:::-;;:::i;6806:34::-;;;;;;;;;;-1:-1:-1;6806:34:0;;;;;;;;17173:182;;;;;;;;;;;;;:::i;15074:564::-;;;;;;;;;;-1:-1:-1;15074:564:0;;;;;:::i;:::-;;:::i;12880:79::-;;;;;;;;;;-1:-1:-1;12950:6:0;;;;;-1:-1:-1;;;;;12950:6:0;12880:79;;13889:175;;;;;;;;;;;;;:::i;26406:635::-;;;;;;;;;;;;;:::i;12704:84::-;;;;;;;;;;;;;:::i;13229:165::-;;;;;;;;;;-1:-1:-1;13229:165:0;;;;;:::i;:::-;;:::i;17915:436::-;;;;;;;;;;-1:-1:-1;17915:436:0;;;;;:::i;:::-;;:::i;27239:248::-;;;;;;;;;;-1:-1:-1;27239:248:0;;;;;:::i;:::-;;:::i;6444:34::-;;;;;;;;;;-1:-1:-1;6444:34:0;;;;;;;;20698:263;;;;;;;;;;-1:-1:-1;20698:263:0;;;;;:::i;:::-;;:::i;5308:139::-;;;;;;;;;;-1:-1:-1;5308:139:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5308:139:0;;;;;6847:42;;;;;;;;;;;;;;;;12965:133;;;;;;;;;;-1:-1:-1;12965:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13067:19:0;;;13049:7;13067:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;12965:133;8529:1897;;;;;;:::i;:::-;;:::i;14386:680::-;;;;;;;;;;-1:-1:-1;14386:680:0;;;;;:::i;:::-;;:::i;27049:182::-;;;;;;;;;;;;;:::i;20969:109::-;;;;;;;;;;-1:-1:-1;20969:109:0;;;;;:::i;:::-;;:::i;6030:270::-;;;;;;;;;;-1:-1:-1;6030:270:0;;;;;;;;-1:-1:-1;;;;;6030:270:0;;;;;;;;;;;;;;-1:-1:-1;;;;;10734:15:1;;;10716:34;;10786:15;;;10781:2;10766:18;;10759:43;10838:15;;10818:18;;;10811:43;;;;10643:2;10628:18;6030:270:0;10405:455:1;19766:699:0;;;;;;;;;;-1:-1:-1;19766:699:0;;;;;:::i;:::-;;:::i;6331:39::-;;;;;;;;;;-1:-1:-1;6331:39:0;;;;;;;;;;;16589:148;;;;;;;;;;-1:-1:-1;16589:148:0;;;;;:::i;:::-;;:::i;21400:141::-;-1:-1:-1;;;;;21516:17:0;;21471:7;21516:17;;;:8;:17;;;;;;21498:35;;:15;:35;:::i;:::-;21491:42;21400:141;-1:-1:-1;;21400:141:0:o;17012:153::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;;;;;;;;;17107:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;17107:50:0;;12053:14:1;;12046:22;17107:50:0::1;::::0;::::1;12028:41:1::0;12112:14;;12105:22;12085:18;;;12078:50;17107:11:0;;;::::1;-1:-1:-1::0;;;;;17107:11:0::1;::::0;:26:::1;::::0;12001:18:1;;17107:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17012:153:::0;;:::o;12794:80::-;12842:13;12866:5;12859:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12794:80;:::o;13402:161::-;13479:4;13496:37;13505:10;13517:7;13526:6;13496:8;:37::i;:::-;-1:-1:-1;13551:4:0;13402:161;;;;:::o;19447:114::-;19543:9;;19494:7;;19539:13;;19543:9;;19539:2;:13;:::i;:::-;19521:14;;:32;;;;:::i;:::-;19514:39;;19447:114;:::o;12465:115::-;12520:7;12535;;12546:1;12535:12;12531:31;;12551:8;;;12531:31;-1:-1:-1;12570:7:0;;;12465:115::o;14072:306::-;-1:-1:-1;;;;;14193:19:0;;14172:4;14193:19;;;:11;:19;;;;;;;;14213:10;14193:31;;;;;;;;-1:-1:-1;;14193:52:0;14189:126;;-1:-1:-1;;;;;14262:19:0;;;;;;:11;:19;;;;;;;;14282:10;14262:31;;;;;;;:41;;14297:6;;14262:19;:41;;14297:6;;14262:41;:::i;:::-;;;;-1:-1:-1;;14189:126:0;14334:36;14344:6;14352:9;14363:6;14334:9;:36::i;:::-;14327:43;14072:306;-1:-1:-1;;;;14072:306:0:o;21086:::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;21213:8:::1;21193:16;;:28;;21185:64;;;::::0;-1:-1:-1;;;21185:64:0;;14331:2:1;21185:64:0::1;::::0;::::1;14313:21:1::0;14370:2;14350:18;;;14343:30;14409:25;14389:18;;;14382:53;14452:18;;21185:64:0::1;14129:347:1::0;21185:64:0::1;21280:3;21268:8;:15;;;;21260:45;;;::::0;-1:-1:-1;;;21260:45:0;;14683:2:1;21260:45:0::1;::::0;::::1;14665:21:1::0;14722:2;14702:18;;;14695:30;14761:19;14741:18;;;14734:47;14798:18;;21260:45:0::1;14481:341:1::0;21260:45:0::1;21316:16;:28:::0;;;;21355:9:::1;:29:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;21355:29:0::1;-1:-1:-1::0;;21355:29:0;;::::1;::::0;;;::::1;::::0;;21086:306::o;19059:264::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;19201:3:::1;19191:7;;:13;;;;:::i;:::-;19179:7;19168;19158;;:17;;;;:::i;:::-;19157:29;;;;:::i;:::-;:48;;19149:109;;;::::0;-1:-1:-1;;;19149:109:0;;15202:2:1;19149:109:0::1;::::0;::::1;15184:21:1::0;15241:2;15221:18;;;15214:30;15280:34;15260:18;;;15253:62;15351:18;15331;;;15324:46;15387:19;;19149:109:0::1;15000:412:1::0;19149:109:0::1;19308:7;19297;19287;;:17;;;;:::i;:::-;19286:29;;;;:::i;:::-;19269:14;:46:::0;-1:-1:-1;;19059:264:0:o;27495:447::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;27630:7:::1;:14;27611:8;:15;:33;27603:67;;;::::0;-1:-1:-1;;;27603:67:0;;15619:2:1;27603:67:0::1;::::0;::::1;15601:21:1::0;15658:2;15638:18;;;15631:30;15697:23;15677:18;;;15670:51;15738:18;;27603:67:0::1;15417:345:1::0;27603:67:0::1;27686:8;27681:254;27704:8;:15;27700:1;:19;;;27681:254;;;27789:9;::::0;27785:13:::1;::::0;27789:9:::1;;27785:2;:13;:::i;:::-;27774:7;27782:1;27774:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27759:10;13170:7:::0;13197:16;;;;;;;;;;;27749:49:::1;;27741:80;;;::::0;-1:-1:-1;;;27741:80:0;;16101:2:1;27741:80:0::1;::::0;::::1;16083:21:1::0;16140:2;16120:18;;;16113:30;16179:20;16159:18;;;16152:48;16217:18;;27741:80:0::1;15899:342:1::0;27741:80:0::1;27836:87;27853:10;27865:8;27874:1;27865:11;;;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;27893:9:::1;::::0;27889:13:::1;::::0;27893:9:::1;;27889:2;:13;:::i;:::-;27878:7;27886:1;27878:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;27904:5;27911::::0;27918:4:::1;27836:16;:87::i;:::-;-1:-1:-1::0;27721:3:0;::::1;::::0;::::1;:::i;:::-;;;;27681:254;;;;27495:447:::0;;:::o;16745:141::-;16798:7;13197:16;;;;;;5837:42;13197:16;;;;16837:39;;13197:16;16837:39;:::i;:::-;16826:7;;:51;;;;:::i;12586:112::-;12638:5;12651:7;;12662:1;12651:12;12647:31;;12667:8;;;12647:31;-1:-1:-1;12686:9:0;;;;;12586:112::o;17363:544::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;17471:14:::1;::::0;::::1;;17470:15;17462:45;;;::::0;-1:-1:-1;;;17462:45:0;;16780:2:1;17462:45:0::1;::::0;::::1;16762:21:1::0;16819:2;16799:18;;;16792:30;16858:19;16838:18;;;16831:47;16895:18;;17462:45:0::1;16578:341:1::0;17462:45:0::1;5494:4;17526:6;:21;;;;:65;;;;;5544:4;17568:7;:23;;;;17526:65;:117;;;;;5598:4;17612:11;:31;;;;17526:117;17518:170;;;::::0;-1:-1:-1;;;17518:170:0;;17126:2:1;17518:170:0::1;::::0;::::1;17108:21:1::0;17165:2;17145:18;;;17138:30;17204:25;17184:18;;;17177:53;17247:18;;17518:170:0::1;16924:347:1::0;17518:170:0::1;5651:4;17707:16;17716:7:::0;17707:6;:16:::1;:::i;:::-;:35;;;;17699:80;;;::::0;-1:-1:-1;;;17699:80:0;;17651:2:1;17699:80:0::1;::::0;::::1;17633:21:1::0;;;17670:18;;;17663:30;17729:34;17709:18;;;17702:62;17781:18;;17699:80:0::1;17449:356:1::0;17699:80:0::1;17790:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;17826:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;17864:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;17363:544::o;16894:110::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;16963:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;16963:33:0;;-1:-1:-1;;;;;771:55:1;;;16963:33:0::1;::::0;::::1;753:74:1::0;16963:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;726:18:1;;16963:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16894:110:::0;:::o;16016:140::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;-1:-1:-1;;;;;16108:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;16108:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16016:140::o;18778:273::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;18923:4:::1;18909:7;;18919:1;18909:11;;;;:::i;:::-;:18;;;;:::i;:::-;18897:7;18886;18876;;:17;;;;:::i;:::-;18875:29;;;;:::i;:::-;:53;;18867:121;;;::::0;-1:-1:-1;;;18867:121:0;;18012:2:1;18867:121:0::1;::::0;::::1;17994:21:1::0;18051:2;18031:18;;;18024:30;18090:34;18070:18;;;18063:62;18161:25;18141:18;;;18134:53;18204:19;;18867:121:0::1;17810:419:1::0;18867:121:0::1;19036:7;19025;19015;;:17;;;;:::i;:::-;19014:29;;;;:::i;:::-;18999:12;:44:::0;-1:-1:-1;;18778:273:0:o;19569:189::-;19698:6;;-1:-1:-1;;;;;19698:6:0;19660:7;13197:16;;;;;;;;;;;5698:5;;19688:41;;19708:21;;19688:41;:::i;:::-;19687:62;;;;:::i;20473:217::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;20603:3:::1;20577:22;:29;;20569:64;;;::::0;-1:-1:-1;;;20569:64:0;;18436:2:1;20569:64:0::1;::::0;::::1;18418:21:1::0;18475:2;18455:18;;;18448:30;18514:24;18494:18;;;18487:52;18556:18;;20569:64:0::1;18234:346:1::0;20569:64:0::1;20644:13;:38:::0;20473:217::o;11188:654::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;-1:-1:-1;;;;;11267:22:0;::::1;11259:96;;;::::0;-1:-1:-1;;;11259:96:0;;18787:2:1;11259:96:0::1;::::0;::::1;18769:21:1::0;18826:2;18806:18;;;18799:30;18865:34;18845:18;;;18838:62;18936:31;18916:18;;;18909:59;18985:19;;11259:96:0::1;18585:425:1::0;11259:96:0::1;-1:-1:-1::0;;;;;;;11374:16:0;::::1;::::0;11366:90:::1;;;::::0;-1:-1:-1;;;11366:90:0;;18787:2:1;11366:90:0::1;::::0;::::1;18769:21:1::0;18826:2;18806:18;;;18799:30;18865:34;18845:18;;;18838:62;18936:31;18916:18;;;18909:59;18985:19;;11366:90:0::1;18585:425:1::0;11366:90:0::1;11487:6;::::0;11467:34:::1;::::0;11487:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11487:6:0::1;11495:5;11467:19;:34::i;:::-;11512:35;11532:8;11542:4;11512:19;:35::i;:::-;11582:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;11582:6:0::1;11592:1;13197:16:::0;;;;;;;;;;;11572:21:::1;11568:127;;;11627:6;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;11627:6:0::1;13170:7:::0;13197:16;;;;;;;;;;;11610:73:::1;::::0;11627:6;11635:8;;11645:17:::1;13104:117:::0;11610:73:::1;;11568:127;11734:6;::::0;;-1:-1:-1;;;;;11751:17:0;;::::1;11734:6;11751:17:::0;;::::1;-1:-1:-1::0;;;;;;11751:17:0;::::1;;::::0;;;11784:40:::1;::::0;11734:6;;;::::1;;::::0;;;11784:40:::1;::::0;11715:16:::1;::::0;11784:40:::1;11248:594;11188:654:::0;:::o;16299:134::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;-1:-1:-1;;;;;16387:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16387:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16299:134::o;15646:222::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;15730:14:::1;::::0;::::1;;15729:15;15721:24;;;::::0;::::1;;15787:4;-1:-1:-1::0;;;;;15764:28:0;::::1;::::0;15756:55:::1;;;::::0;-1:-1:-1;;;15756:55:0;;19217:2:1;15756:55:0::1;::::0;::::1;19199:21:1::0;19256:2;19236:18;;;19229:30;19295:16;19275:18;;;19268:44;19329:18;;15756:55:0::1;19015:338:1::0;15756:55:0::1;15822:11;:38:::0;;-1:-1:-1;;;;;15822:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;15822:38:0;;::::1;::::0;;;::::1;::::0;;15646:222::o;19331:108::-;19421:9;;19374:7;;19417:13;;19421:9;;19417:2;:13;:::i;:::-;19401:12;;:30;;;;:::i;11850:225::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;11929:6:::1;::::0;11909:34:::1;::::0;11929:6:::1;::::0;::::1;-1:-1:-1::0;;;;;11929:6:0::1;11937:5;11909:19;:34::i;:::-;11973:6;::::0;;-1:-1:-1;;;;;;11990:19:0;::::1;::::0;;;12025:42:::1;::::0;11973:6:::1;::::0;;::::1;-1:-1:-1::0;;;;;11973:6:0::1;::::0;-1:-1:-1;;11973:6:0;;12025:42:::1;::::0;-1:-1:-1;;12025:42:0::1;11898:177;11850:225::o:0;18359:411::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;-1:-1:-1;;;;;18498:23:0;::::1;::::0;;::::1;::::0;:48:::1;;-1:-1:-1::0;;;;;;18525:21:0;::::1;::::0;::::1;18498:48;:77;;;;-1:-1:-1::0;;;;;;18550:25:0;::::1;::::0;::::1;18498:77;18490:113;;;::::0;-1:-1:-1;;;18490:113:0;;19560:2:1;18490:113:0::1;::::0;::::1;19542:21:1::0;19599:2;19579:18;;;19572:30;19638:25;19618:18;;;19611:53;19681:18;;18490:113:0::1;19358:347:1::0;18490:113:0::1;18614:11;:42:::0;;-1:-1:-1;;;;;18614:42:0;;::::1;-1:-1:-1::0;;;;;;18614:42:0;;::::1;;::::0;;;18667:19;:38;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;18716:23;:46;;;;;::::1;::::0;::::1;;::::0;;18359:411::o;17173:182::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;17326:14:::1;:21:::0;;-1:-1:-1;;17326:21:0::1;17343:4;17326:21;::::0;;17173:182::o;15074:564::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;15156:7:::1;15151:480;;-1:-1:-1::0;;;;;15180:13:0;;::::1;15196:5;15180:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15180:21:0::1;::::0;;15216:11:::1;::::0;:34;;-1:-1:-1;;;15216:34:0;;::::1;::::0;::::1;19878:74:1::0;;;;19968:18;;;19961:50;;;;15216:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;19851:18:1;;15216:34:0::1;19710:307:1::0;15151:480:0::1;15287:17;::::0;:22;15283:135:::1;;15376:6;15356:17;;15338:15;:35;;;;:::i;:::-;:44;15330:72;;;::::0;-1:-1:-1;;;15330:72:0;;20224:2:1;15330:72:0::1;::::0;::::1;20206:21:1::0;20263:2;20243:18;;;20236:30;20302:17;20282:18;;;20275:45;20337:18;;15330:72:0::1;20022:339:1::0;15330:72:0::1;-1:-1:-1::0;;;;;15441:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;15440:14;15432:54;;;::::0;-1:-1:-1;;;15432:54:0;;20568:2:1;15432:54:0::1;::::0;::::1;20550:21:1::0;20607:2;20587:18;;;20580:30;20646:29;20626:18;;;20619:57;20693:18;;15432:54:0::1;20366:351:1::0;15432:54:0::1;-1:-1:-1::0;;;;;15501:13:0;;::::1;;::::0;;;15517:4:::1;15501:13;::::0;;;;;;;;:20;;-1:-1:-1;;15501:20:0::1;::::0;::::1;::::0;;15556:15:::1;15536:17;:35:::0;15586:11:::1;::::0;:33;;-1:-1:-1;;;15586:33:0;;::::1;::::0;::::1;19878:74:1::0;;;;19968:18;;;19961:50;15586:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;19851:18:1;;15586:33:0::1;19710:307:1::0;15151:480:0::1;15074:564:::0;;:::o;13889:175::-;11042:6;;13955:4;;11042:6;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;14004:9:::1;::::0;13972:62:::1;::::0;13989:4:::1;::::0;14004:9:::1;::::0;::::1;-1:-1:-1::0;;;;;14004:9:0::1;-1:-1:-1::0;;13972:8:0::1;:62::i;:::-;-1:-1:-1::0;14052:4:0::1;13889:175:::0;:::o;26406:635::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;26468:14:::1;::::0;::::1;;26467:15;26459:52;;;::::0;-1:-1:-1;;;26459:52:0;;20924:2:1;26459:52:0::1;::::0;::::1;20906:21:1::0;20963:2;20943:18;;;20936:30;21002:26;20982:18;;;20975:54;21046:18;;26459:52:0::1;20722:348:1::0;26459:52:0::1;26530:16;::::0;::::1;::::0;::::1;;;26522:53;;;::::0;-1:-1:-1;;;26522:53:0;;21277:2:1;26522:53:0::1;::::0;::::1;21259:21:1::0;21316:2;21296:18;;;21289:30;21355:26;21335:18;;;21328:54;21399:18;;26522:53:0::1;21075:348:1::0;26522:53:0::1;26598:11;::::0;;;::::1;-1:-1:-1::0;;;;;26598:11:0::1;26586:106;;26640:11;:40:::0;;-1:-1:-1;;;;;;26640:40:0::1;26674:4;26640:40:::0;::::1;;::::0;;26586:106:::1;26706:11;::::0;26728:6:::1;::::0;26783:9:::1;::::0;26706:87:::1;::::0;-1:-1:-1;;;26706:87:0;;-1:-1:-1;;;;;26728:6:0;;::::1;26706:87;::::0;::::1;21651:74:1::0;21773:10;26743:12:0::1;21761:23:1::0;21741:18;;;21734:51;21833:18;26765:15:0::1;21821:31:1::0;21801:18;;;21794:59;26783:9:0::1;::::0;;::::1;21869:18:1::0;;;21862:45;26706:11:0;;;::::1;;::::0;:21:::1;::::0;21623:19:1;;26706:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;26702:103:::0;26815:14:::1;:21:::0;;26832:4:::1;-1:-1:-1::0;;26815:21:0;;::::1;;::::0;;;26847:23:::1;:31:::0;;;;::::1;::::0;;-1:-1:-1;26916:6:0;-1:-1:-1;;;;;26916:6:0::1;-1:-1:-1::0;13197:16:0;;;;;;;;;;;26932:5:::1;::::0;26906:22:::1;::::0;26926:2:::1;26906:22;:::i;:::-;26905:32;;;;:::i;:::-;26889:13;:48:::0;26972:6:::1;::::0;-1:-1:-1;;;;;26972:6:0::1;13170:7:::0;13197:16;;;;;;;;;;;26988:5:::1;::::0;26962:22:::1;::::0;26982:2:::1;26962:22;:::i;:::-;26961:32;;;;:::i;:::-;26948:10;:45:::0;27018:15:::1;27004:11;:29:::0;26406:635::o;12704:84::-;12754:13;12778:7;12771:14;;;;;:::i;13229:165::-;13307:4;13324:40;13334:10;13346:9;13357:6;13324:9;:40::i;:::-;-1:-1:-1;13382:4:0;;13229:165;-1:-1:-1;;;13229:165:0:o;17915:436::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;18018:7:::1;:33:::0;;-1:-1:-1;;18062:25:0;18018:33;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;18062:25:0;;;;;;;;::::1;;;-1:-1:-1::0;;18098:29:0::1;::::0;;::::1;;::::0;;18018:33;18158:19:::1;18098:29:::0;18062:25;18158:19:::1;:::i;:::-;:33;;;;:::i;:::-;18138:7;:53:::0;;-1:-1:-1;;18138:53:0::1;-1:-1:-1::0;;;18138:53:0::1;::::0;;::::1;;;::::0;;18237:9:::1;:17:::0;-1:-1:-1;;18218:36:0::1;::::0;18237:17;;::::1;::::0;::::1;::::0;18218:16:::1;:36;:::i;:::-;18273:7;:17:::0;18202:52:::1;::::0;;::::1;::::0;-1:-1:-1;;;;18273:17:0;::::1;;:26:::0;-1:-1:-1;18273:26:0::1;18265:78;;;::::0;-1:-1:-1;;;18265:78:0;;22120:2:1;18265:78:0::1;::::0;::::1;22102:21:1::0;22159:2;22139:18;;;22132:30;22198:34;22178:18;;;22171:62;-1:-1:-1;;;22249:18:1;;;22242:37;22296:19;;18265:78:0::1;21918:403:1::0;18265:78:0::1;18007:344;17915:436:::0;;;:::o;27239:248::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;27338:4:::1;-1:-1:-1::0;;;;;27321:22:0;::::1;::::0;27313:62:::1;;;::::0;-1:-1:-1;;;27313:62:0;;22528:2:1;27313:62:0::1;::::0;::::1;22510:21:1::0;22567:2;22547:18;;;22540:30;22606:29;22586:18;;;22579:57;22653:18;;27313:62:0::1;22326:351:1::0;27313:62:0::1;27440:6;::::0;;27448:30:::1;::::0;-1:-1:-1;;;27448:30:0;;27472:4:::1;27448:30;::::0;::::1;753:74:1::0;27408:5:0;;-1:-1:-1;;;;;27425:14:0;;::::1;::::0;::::1;::::0;27440:6:::1;::::0;;::::1;::::0;;::::1;::::0;27425:14;;27448:15:::1;::::0;726:18:1;27448:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27425:54;::::0;-1:-1:-1;;;;;;27425:54:0::1;::::0;;;;;;-1:-1:-1;;;;;23063:55:1;;;27425:54:0::1;::::0;::::1;23045:74:1::0;23135:18;;;23128:34;23018:18;;27425:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;20698:263::-:0;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;20807:19:::1;:33:::0;;-1:-1:-1;;20807:33:0::1;;::::0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;20851:22:::1;:47:::0;;-1:-1:-1;;20851:47:0::1;::::0;::::1;;;::::0;;20914:39:::1;::::0;2835:41:1;;;20914:39:0::1;::::0;2823:2:1;2808:18;20914:39:0::1;;;;;;;;20698:263:::0;;:::o;8529:1897::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;8682:19:::1;::::0;::::1;;8681:20;8673:34;;;::::0;-1:-1:-1;;;8673:34:0;;23625:2:1;8673:34:0::1;::::0;::::1;23607:21:1::0;23664:1;23644:18;;;23637:29;-1:-1:-1;;;23682:18:1;;;23675:31;23723:18;;8673:34:0::1;23423:324:1::0;8673:34:0::1;8726:33:::0;;::::1;8718:47;;;::::0;-1:-1:-1;;;8718:47:0;;23954:2:1;8718:47:0::1;::::0;::::1;23936:21:1::0;23993:1;23973:18;;;23966:29;-1:-1:-1;;;24011:18:1;;;24004:31;24052:18;;8718:47:0::1;23752:324:1::0;8718:47:0::1;8808:1;8784:21;:25;:42;;;;8825:1;8813:9;:13;8784:42;8776:78;;;::::0;-1:-1:-1;;;8776:78:0;;24283:2:1;8776:78:0::1;::::0;::::1;24265:21:1::0;24322:2;24302:18;;;24295:30;24361:25;24341:18;;;24334:53;24404:18;;8776:78:0::1;24081:347:1::0;8776:78:0::1;8891:12;8865:11;;:39;;;;;-1:-1:-1::0;;;;;8865:39:0::1;;;;;-1:-1:-1::0;;;;;8865:39:0::1;;;;;;8919:11;;;;;;;;;-1:-1:-1::0;;;;;8919:11:0::1;-1:-1:-1::0;;;;;8919:27:0::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8919:29:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;;;8915:408;;9300:11;::::0;-1:-1:-1;;;9300:11:0;;25929:2:1;9300:11:0::1;::::0;::::1;25911:21:1::0;25968:1;25948:18;;;25941:29;-1:-1:-1;;;25986:18:1;;;25979:31;26027:18;;9300:11:0::1;25727:324:1::0;8915:408:0::1;9071:5;:16;9079:8:::0;9071:5;:16:::1;:::i;:::-;-1:-1:-1::0;9102:7:0::1;:20;9112:10:::0;9102:7;:20:::1;:::i;:::-;-1:-1:-1::0;9137:14:0::1;:35:::0;;;9187:9:::1;:24:::0;;-1:-1:-1;;9187:24:0::1;;::::0;::::1;::::0;;::::1;::::0;;;9253:13:::1;::::0;:2:::1;:13;:::i;:::-;9236:14;;:30;;;;:::i;:::-;9226:7;:40:::0;-1:-1:-1;;;;9353:9:0::1;;;;;;;;;-1:-1:-1::0;;;;;9353:9:0::1;-1:-1:-1::0;;;;;9353:17:0::1;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9342:42:0::1;;9385:9;;;;;;;;;-1:-1:-1::0;;;;;9385:9:0::1;-1:-1:-1::0;;;;;9385:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9342:75;::::0;-1:-1:-1;;;;;;9342:75:0::1;::::0;;;;;;-1:-1:-1;;;;;28769:15:1;;;9342:75:0::1;::::0;::::1;28751:34:1::0;9411:4:0::1;28801:18:1::0;;;28794:43;28663:18;;9342:75:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9333:6;:84:::0;;-1:-1:-1;;;;;;9333:84:0::1;-1:-1:-1::0;;;;;9333:84:0;;;::::1;::::0;;::::1;::::0;;-1:-1:-1;9428:15:0;;;-1:-1:-1;9428:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;9428:22:0::1;::::0;;::::1;::::0;;9477:7:::1;::::0;9492:4:::1;::::0;9477:11:::1;::::0;9487:1:::1;9477:11;:::i;:::-;9476:20;;;;:::i;:::-;9461:12;:35:::0;9525:7:::1;::::0;9540:4:::1;::::0;9525:11:::1;::::0;9535:1:::1;9525:11;:::i;:::-;9524:20;;;;:::i;:::-;9507:14;:37:::0;9555:19:::1;:26:::0;;-1:-1:-1;;9555:26:0::1;9577:4;9555:26;::::0;;;9615:7:::1;::::0;-1:-1:-1;;;;;9555:26:0::1;9605:6:::0;;;::::1;::::0;::::1;9555:19;9597:15:::0;;;::::1;::::0;;;;;;;:25;;;9659:6;;9638:37;;9659:6;;;::::1;;::::0;9555:19;9638:37:::1;::::0;::::1;::::0;571:25:1;;;559:2;544:18;;425:177;9638:37:0::1;;;;;;;;9720:9;::::0;9688:62:::1;::::0;9705:4:::1;::::0;9720:9:::1;::::0;::::1;-1:-1:-1::0;;;;;9720:9:0::1;-1:-1:-1::0;;9688:8:0::1;:62::i;:::-;9770:6;::::0;9786:9:::1;::::0;9761:55:::1;::::0;-1:-1:-1;;;;;9770:6:0::1;::::0;;;::::1;::::0;::::1;::::0;9786:9;;;::::1;;-1:-1:-1::0;;9761:8:0::1;:55::i;:::-;9831:9;9827:194;9846:19:::0;;::::1;9827:194;;;9920:9;::::0;9886:14:::1;::::0;9916:13:::1;::::0;9920:9:::1;;9916:2;:13;:::i;:::-;9903:7;;9911:1;9903:10;;;;;;;:::i;:::-;;;;;;;:26;;;;:::i;:::-;9961:6;::::0;9886:43;;-1:-1:-1;9944:65:0::1;::::0;9961:6:::1;::::0;::::1;-1:-1:-1::0;;;;;9961:6:0::1;9969:8:::0;;9978:1;9969:11;;::::1;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;9982:6;9990:5;9997::::0;10004:4:::1;9944:16;:65::i;:::-;;9871:150;9867:3;;;;;:::i;:::-;;;;9827:194;;;-1:-1:-1::0;10048:6:0::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;10048:6:0::1;13170:7:::0;13197:16;;;;;;;;;;;10031:78:::1;::::0;10048:6;10064:4:::1;::::0;10071:17:::1;13104:117:::0;10031:78:::1;-1:-1:-1::0;10122:9:0::1;::::0;10200:4:::1;13170:7:::0;13197:16;;;;;;;;;;;10122:9:::1;::::0;;::::1;-1:-1:-1::0;;;;;10122:9:0::1;::::0;:25:::1;::::0;10155:21:::1;::::0;10345:6:::1;::::0;;10122:270:::1;::::0;::::1;::::0;;;-1:-1:-1;;;;;;10122:270:0;;;-1:-1:-1;;;;;29370:15:1;;;10122:270:0::1;::::0;::::1;29352:34:1::0;29402:18;;;29395:34;;;;10259:1:0::1;29445:18:1::0;;;29438:34;;;29488:18;;;29481:34;10345:6:0::1;::::0;;::::1;::::0;;::::1;29531:19:1::0;;;29524:44;10366:15:0::1;29584:19:1::0;;;29577:35;29263:19;;10122:270:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10403:15;:13;:15::i;14386:680::-:0;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;14466:16:::1;::::0;::::1;::::0;::::1;;;14465:17;14457:60;;;::::0;-1:-1:-1;;;14457:60:0;;30136:2:1;14457:60:0::1;::::0;::::1;30118:21:1::0;30175:2;30155:18;;;30148:30;30214:32;30194:18;;;30187:60;30264:18;;14457:60:0::1;29934:354:1::0;14457:60:0::1;14528:20;14561:9;14528:43;;14582:16;14612:10;-1:-1:-1::0;;;;;14612:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14601:40:0::1;;14650:4;14657:10;-1:-1:-1::0;;;;;14657:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14601:74;::::0;-1:-1:-1;;;;;;14601:74:0::1;::::0;;;;;;-1:-1:-1;;;;;28769:15:1;;;14601:74:0::1;::::0;::::1;28751:34:1::0;28821:15;;28801:18;;;28794:43;28663:18;;14601:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14694:6;::::0;-1:-1:-1;;;;;14694:6:0;;::::1;14704:5;14686:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;14686:23:0::1;::::0;;14582:93;;-1:-1:-1;14724:22:0;::::1;14720:200;;14783:10;-1:-1:-1::0;;;;;14783:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14772:43:0::1;;14824:4;14831:10;-1:-1:-1::0;;;;;14831:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14772:77;::::0;-1:-1:-1;;;;;;14772:77:0::1;::::0;;;;;;-1:-1:-1;;;;;28769:15:1;;;14772:77:0::1;::::0;::::1;28751:34:1::0;28821:15;;28801:18;;;28794:43;28663:18;;14772:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14763:6;:86:::0;;-1:-1:-1;;;;;;14763:86:0::1;-1:-1:-1::0;;;;;14763:86:0;;;::::1;::::0;;;::::1;::::0;;14720:200:::1;;;14891:6;:17:::0;;-1:-1:-1;;;;;;14891:17:0::1;-1:-1:-1::0;;;;;14891:17:0;::::1;;::::0;;14720:200:::1;14930:9;:22:::0;;-1:-1:-1;;;;;;14930:22:0::1;;-1:-1:-1::0;;;;;14930:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;14971:6:::1;::::0;;::::1;-1:-1:-1::0;14963:15:0;;;-1:-1:-1;14963:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;14963:22:0::1;::::0;;::::1;::::0;;15028:9;;14996:62:::1;::::0;15013:4:::1;::::0;15028:9;::::1;;-1:-1:-1::0;;14996:8:0::1;:62::i;27049:182::-:0;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;27116:16:::1;::::0;::::1;::::0;::::1;;;27115:17;27107:58;;;::::0;-1:-1:-1;;;27107:58:0;;30495:2:1;27107:58:0::1;::::0;::::1;30477:21:1::0;30534:2;30514:18;;;30507:30;30573;30553:18;;;30546:58;30621:18;;27107:58:0::1;30293:352:1::0;27107:58:0::1;27184:6;::::0;27176:47:::1;::::0;-1:-1:-1;;;;;27184:6:0::1;::::0;;::::1;::::0;;;::::1;::::0;27201:21:::1;27176:47:::0;::::1;;;::::0;::::1;::::0;;;27201:21;27184:6;27176:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;27049:182::o:0;20969:109::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;21045:15:::1;:25:::0;;-1:-1:-1;;21045:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20969:109::o;19766:699::-;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;19966:16:::1;19946;19936:7;;:26;;;;:::i;:::-;19935:47;;;;:::i;:::-;19919:13;:63:::0;20007:7:::1;::::0;20034:13;;20007:23:::1;::::0;20017:13;;20007:23:::1;:::i;:::-;20006:41;;;;:::i;:::-;19993:10;:54:::0;;;20066:13:::1;::::0;:27:::1;;20058:73;;;::::0;-1:-1:-1;;;20058:73:0;;30852:2:1;20058:73:0::1;::::0;::::1;30834:21:1::0;30891:2;30871:18;;;30864:30;30930:34;30910:18;;;30903:62;-1:-1:-1;;;30981:18:1;;;30974:31;31022:19;;20058:73:0::1;30650:397:1::0;20058:73:0::1;20175:6;::::0;-1:-1:-1;;;;;20175:6:0::1;13170:7:::0;13197:16;;;;;;;;;;;5698:5:::1;::::0;20165:23:::1;::::0;20185:3:::1;20165:23;:::i;:::-;20164:44;;;;:::i;:::-;20150:10;;:58;;20142:106;;;::::0;-1:-1:-1;;;20142:106:0;;31254:2:1;20142:106:0::1;::::0;::::1;31236:21:1::0;31293:2;31273:18;;;31266:30;31332:34;31312:18;;;31305:62;-1:-1:-1;;;31383:18:1;;;31376:33;31426:19;;20142:106:0::1;31052:399:1::0;20142:106:0::1;20291:9;20281:7;;:19;;;;:::i;:::-;20267:10;;:33;;20259:92;;;::::0;-1:-1:-1;;;20259:92:0;;31658:2:1;20259:92:0::1;::::0;::::1;31640:21:1::0;31697:2;31677:18;;;31670:30;31736:34;31716:18;;;31709:62;-1:-1:-1;;;31787:18:1;;;31780:44;31841:19;;20259:92:0::1;31456:410:1::0;20259:92:0::1;20397:9;20387:7;;:19;;;;:::i;:::-;20370:13;;:36;;20362:95;;;::::0;-1:-1:-1;;;20362:95:0;;31658:2:1;20362:95:0::1;::::0;::::1;31640:21:1::0;31697:2;31677:18;;;31670:30;31736:34;31716:18;;;31709:62;-1:-1:-1;;;31787:18:1;;;31780:44;31841:19;;20362:95:0::1;31456:410:1::0;16589:148:0;11042:6;;;;;-1:-1:-1;;;;;11042:6:0;11052:10;11042:20;11034:50;;;;-1:-1:-1;;;11034:50:0;;11722:2:1;11034:50:0;;;11704:21:1;11761:2;11741:18;;;11734:30;-1:-1:-1;;;;;;;;;;;11780:18:1;;;11773:47;11837:18;;11034:50:0;11520:341:1;11034:50:0;-1:-1:-1;;;;;16685:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;16685:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16589:148::o;13571:310::-;-1:-1:-1;;;;;13666:20:0;;13658:52;;;;-1:-1:-1;;;13658:52:0;;32073:2:1;13658:52:0;;;32055:21:1;32112:2;32092:18;;;32085:30;-1:-1:-1;;;32131:18:1;;;32124:49;32190:18;;13658:52:0;31871:343:1;13658:52:0;-1:-1:-1;;;;;13729:21:0;;13721:53;;;;-1:-1:-1;;;13721:53:0;;32073:2:1;13721:53:0;;;32055:21:1;32112:2;32092:18;;;32085:30;-1:-1:-1;;;32131:18:1;;;32124:49;32190:18;;13721:53:0;31871:343:1;13721:53:0;-1:-1:-1;;;;;13787:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13840:33;;571:25:1;;;13840:33:0;;544:18:1;13840:33:0;;;;;;;13571:310;;;:::o;22003:2286::-;22082:4;-1:-1:-1;;;;;22107:18:0;;22099:68;;;;-1:-1:-1;;;22099:68:0;;32421:2:1;22099:68:0;;;32403:21:1;32460:2;32440:18;;;32433:30;32499:34;32479:18;;;32472:62;-1:-1:-1;;;32550:18:1;;;32543:35;32595:19;;22099:68:0;32219:401:1;22099:68:0;-1:-1:-1;;;;;22186:16:0;;22178:64;;;;-1:-1:-1;;;22178:64:0;;32827:2:1;22178:64:0;;;32809:21:1;32866:2;32846:18;;;32839:30;32905:34;32885:18;;;32878:62;-1:-1:-1;;;32956:18:1;;;32949:33;32999:19;;22178:64:0;32625:399:1;22178:64:0;22270:1;22261:6;:10;22253:64;;;;-1:-1:-1;;;22253:64:0;;33231:2:1;22253:64:0;;;33213:21:1;33270:2;33250:18;;;33243:30;33309:34;33289:18;;;33282:62;-1:-1:-1;;;33360:18:1;;;33353:39;33409:19;;22253:64:0;33029:405:1;22253:64:0;-1:-1:-1;;;;;22416:13:0;;22328:8;22416:13;;;:7;:13;;;;;;22328:8;;;;22416:13;;22412:162;;;22452:4;22446:10;;22412:162;;;-1:-1:-1;;;;;22478:11:0;;;;;;:7;:11;;;;;;;;22474:100;;;22513:4;22506:11;;22474:100;;;-1:-1:-1;22558:4:0;22474:100;22588:20;22599:4;22605:2;22588:10;:20::i;:::-;22584:874;;;22629:14;;;;22625:319;;22669:5;22664:265;;22699:34;;-1:-1:-1;;;22699:34:0;;33641:2:1;22699:34:0;;;33623:21:1;33680:2;33660:18;;;33653:30;33719:26;33699:18;;;33692:54;33763:18;;22699:34:0;33439:348:1;22664:265:0;-1:-1:-1;;;;;22764:31:0;;;;;;:25;:31;;;;;;;;22763:32;:66;;;;-1:-1:-1;;;;;;22800:29:0;;;;;;:25;:29;;;;;;;;22799:30;22763:66;22759:170;;;22854:55;;-1:-1:-1;;;22854:55:0;;33994:2:1;22854:55:0;;;33976:21:1;34033:2;34013:18;;;34006:30;34072:34;34052:18;;;34045:62;-1:-1:-1;;;34123:18:1;;;34116:43;34176:19;;22854:55:0;33792:409:1;22759:170:0;22962:3;:11;;;;22969:4;22962:11;22958:232;;;-1:-1:-1;;;;;22998:27:0;;;;;;:21;:27;;;;;;;;22997:28;:58;;;;-1:-1:-1;;;;;;23030:25:0;;;;;;:21;:25;;;;;;;;23029:26;22997:58;22993:182;;;23098:12;;23088:6;:22;;23080:75;;;;-1:-1:-1;;;23080:75:0;;34408:2:1;23080:75:0;;;34390:21:1;34447:2;34427:18;;;34420:30;34486:34;34466:18;;;34459:62;-1:-1:-1;;;34537:18:1;;;34530:38;34585:19;;23080:75:0;34206:404:1;23080:75:0;23222:9;;-1:-1:-1;;;;;23208:24:0;;;23222:9;;;;;23208:24;;;;:33;;;23237:4;23236:5;23208:33;23204:243;;;-1:-1:-1;;;;;23267:25:0;;;;;;:21;:25;;;;;;;;23262:170;;23351:14;;23341:6;23325:13;23335:2;-1:-1:-1;;;;;13197:16:0;13170:7;13197:16;;;;;;;;;;;;13104:117;23325:13;:22;;;;:::i;:::-;:40;;23317:95;;;;-1:-1:-1;;;23317:95:0;;34817:2:1;23317:95:0;;;34799:21:1;34856:2;34836:18;;;34829:30;34895:34;34875:18;;;34868:62;-1:-1:-1;;;34946:18:1;;;34939:40;34996:19;;23317:95:0;34615:406:1;23317:95:0;23474:4;23470:742;;;23500:6;;;;23495:706;;23531:19;;;;;;;:64;;;;-1:-1:-1;;;;;;23575:20:0;;;;;;:16;:20;;;;;;;;23574:21;23531:64;:111;;;;-1:-1:-1;;;;;;23620:22:0;;;;;;:16;:22;;;;;;;;23619:23;23531:111;23527:659;;;23734:4;23685:28;13197:16;;;;;;;;;;;23791:13;;23767:37;;23763:404;;23851:10;;23892:22;;;;23888:97;;;23949:13;;23939:6;;-1:-1:-1;;;;;23939:6:0;13170:7;13197:16;;;;;;;;;;;5698:5;;23929:33;;;:::i;:::-;23928:54;;;;:::i;:::-;23918:64;;23888:97;24039:7;24015:20;:31;24011:72;;24073:7;24050:30;;24011:72;24109:34;24122:20;24109:12;:34::i;:::-;23806:361;23763:404;23662:524;23527:659;24229:52;24246:4;24252:2;24256:6;24264:3;24269:4;24275:5;24229:16;:52::i;:::-;24222:59;22003:2286;-1:-1:-1;;;;;;;22003:2286:0:o;27950:1059::-;28069:4;28090:20;28101:4;28107:2;28090:10;:20::i;:::-;28086:228;;;28145:11;;:39;;-1:-1:-1;;;28145:39:0;;-1:-1:-1;;;;;35307:15:1;;;28145:39:0;;;35289:34:1;35359:15;;;35339:18;;;35332:43;35391:18;;;35384:34;;;28114:12:0;;28145:11;;;;;:21;;35201:18:1;;28145:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;28145:39:0;;;;;;;;-1:-1:-1;;28145:39:0;;;;;;;;;;;;:::i;:::-;;;28141:122;;28252:8;;;28141:122;28235:5;-1:-1:-1;28281:7:0;28277:26;;28292:8;;;28277:26;28112:202;28086:228;-1:-1:-1;;;;;28358:25:0;;28324:12;28358:25;;;:19;:25;;;;;;28339:4;;28358:25;;;:52;;-1:-1:-1;;;;;;28387:23:0;;;;;;:19;:23;;;;;;;;28358:52;28354:99;;;-1:-1:-1;28436:5:0;28354:99;-1:-1:-1;;;;;28463:13:0;;:7;:13;;;;;;;;;;:23;;28480:6;;28463:7;:23;;28480:6;;28463:23;:::i;:::-;;;;-1:-1:-1;28497:22:0;;-1:-1:-1;28523:7:0;28522:59;;28575:6;28522:59;;;28534:38;28544:4;28550:2;28554:3;28559:4;28565:6;28534:9;:38::i;:::-;28497:84;;28607:14;28592:7;:11;28600:2;-1:-1:-1;;;;;28592:11:0;-1:-1:-1;;;;;28592:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;28652:2;-1:-1:-1;;;;;28637:34:0;28646:4;-1:-1:-1;;;;;28637:34:0;;28656:14;28637:34;;;;571:25:1;;559:2;544:18;;425:177;28637:34:0;;;;;;;;28687:16;;;;;;;28682:298;;28720:28;28739:4;28745:2;28720:18;:28::i;:::-;28768:16;;;;;;;28767:17;:41;;;;;28788:20;28799:4;28805:2;28788:10;:20::i;:::-;28767:77;;;;-1:-1:-1;;;;;;28813:31:0;;;;;;:25;:31;;;;;;;;28812:32;28767:77;:111;;;;-1:-1:-1;;;;;;28849:29:0;;;;;;:25;:29;;;;;;;;28848:30;28767:111;:121;;;;;28883:5;28882:6;28767:121;28763:206;;;28909:44;;-1:-1:-1;;;28909:44:0;;35631:2:1;28909:44:0;;;35613:21:1;35670:2;35650:18;;;35643:30;35709:34;35689:18;;;35682:62;-1:-1:-1;;;35760:18:1;;;35753:32;35802:19;;28909:44:0;35429:398:1;28763:206:0;-1:-1:-1;28997:4:0;;27950:1059;-1:-1:-1;;;;;;;;27950:1059:0:o;21549:446::-;21650:6;;21618:4;;-1:-1:-1;;;;;21642:14:0;;;21650:6;;;;;21642:14;;;;:43;;-1:-1:-1;21679:6:0;;-1:-1:-1;;;;;21673:12:0;;;21679:6;;;;;21673:12;;21642:43;:79;;;;-1:-1:-1;21715:6:0;;;;;-1:-1:-1;;;;;21715:6:0;21702:9;:19;;21642:79;:118;;;;-1:-1:-1;;;;;;21739:21:0;;;;;;:17;:21;;;;;;;;21738:22;21642:118;:159;;;;-1:-1:-1;;;;;;21778:23:0;;;;;;:17;:23;;;;;;;;21777:24;21642:159;:186;;;;-1:-1:-1;;;;;;21818:10:0;;5837:42;21818:10;;21642:186;:219;;;;-1:-1:-1;;;;;;21845:16:0;;;;21642:219;:257;;;;-1:-1:-1;;;;;;21878:21:0;;21894:4;21878:21;;21642:257;:302;;;;-1:-1:-1;21932:11:0;;-1:-1:-1;;;;;21916:28:0;;;21932:11;;;;;21916:28;;21642:302;:345;;;;-1:-1:-1;21975:11:0;;-1:-1:-1;;;;;21961:26:0;;;21975:11;;;;;21961:26;;21642:345;21635:352;21549:446;-1:-1:-1;;;21549:446:0:o;24297:1530::-;7054:6;:13;;-1:-1:-1;;7054:13:0;7063:4;7054:13;;;24380:30:::1;::::0;;::::1;::::0;::::1;::::0;;24403:7:::1;24380:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;24380:30:0;::::1;::::0;;::::1;::::0;;;;;;7054:6;24425:21;24421:60:::1;;24463:7;;;24421:60;24517:4;24497:26;::::0;;;:11:::1;:26;::::0;;;;;;;24532:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24532:9:0::1;24497:46:::0;;;;;;;;-1:-1:-1;;24497:67:0::1;24493:166;;24601:4;24581:26;::::0;;;:11:::1;:26;::::0;;;;;;;24616:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;24616:9:0::1;24581:46:::0;;;;;;;-1:-1:-1;;24581:66:0;;24493:166:::1;24703:16;::::0;;24717:1:::1;24703:16:::0;;;;;::::1;::::0;;24679:21:::1;::::0;24703:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24703:16:0::1;24679:40;;24748:4;24730;24735:1;24730:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;24730:23:0::1;;;-1:-1:-1::0;;;;;24730:23:0::1;;;::::0;::::1;24774:9;;;;;;;;;-1:-1:-1::0;;;;;24774:9:0::1;-1:-1:-1::0;;;;;24774:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24764:4;24769:1;24764:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24764:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;24807:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;24807:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;24882:20;;24917:1:::1;::::0;24933:4;;24960::::1;::::0;24980:15:::1;::::0;24807:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24803:246;;25031:7;;;;24803:246;25061:18;25082:21;25061:42;;25114:12;25137:26:::0;25202:6:::1;:16;;;25166:52;;25180:6;:18;;;25167:31;;:10;:31;;;;:::i;:::-;25166:52;;;;:::i;:::-;25137:81;;25229:22;25286:6;:16;;;25254:48;;25268:6;:14;;;25255:27;;:10;:27;;;;:::i;:::-;25254:48;;;;:::i;:::-;25229:73:::0;-1:-1:-1;25313:24:0::1;25354:35;25229:73:::0;25354:18;:35:::1;:::i;:::-;25340:50;::::0;:10;:50:::1;:::i;:::-;25405:16:::0;;25313:77;;-1:-1:-1;25405:20:0::1;;::::0;25401:133:::1;;25455:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;25455:21:0;;::::1;::::0;25512:5:::1;::::0;25489:16;;25455:67:::1;::::0;;;25489:16;25455:21;25512:5;25455:67:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25442:80:0;;-1:-1:-1;;25401:133:0::1;25548:18;::::0;::::1;::::0;:22:::1;;::::0;25544:139:::1;;25600:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;25600:23:0;;::::1;::::0;25661:5:::1;::::0;25636:18;;25600:71:::1;::::0;;;25636:18;25600:23;25661:5;25600:71:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25587:84:0;;-1:-1:-1;;25544:139:0::1;25697:14;::::0;::::1;::::0;:18:::1;;::::0;25693:127:::1;;25745:19:::0;;:63:::1;::::0;-1:-1:-1;;;;;25745:19:0;;::::1;::::0;25798:5:::1;::::0;25777:14;;25745:63:::1;::::0;;;25777:14;25745:19;25798:5;25745:63:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25732:76:0;;-1:-1:-1;;25693:127:0::1;24369:1458;;;;;;;7078:1;-1:-1:-1::0;7090:6:0;:14;;-1:-1:-1;;7090:14:0;;;24297:1530::o;29017:1085::-;29117:7;29137:18;29170:3;29166:474;;;-1:-1:-1;;;;;;29190:12:0;;;;;;:8;:12;;;;;29205:15;29190:30;;29248:9;:16;;;29166:474;;;29286:4;29282:358;;;-1:-1:-1;29320:9:0;:17;29356:15;;29320:17;;;;;;;29356:15;;29352:210;;;-1:-1:-1;;;;;29396:14:0;;;;;;:8;:14;;;;;;:19;;;;:74;;-1:-1:-1;29454:16:0;;-1:-1:-1;;;;;29437:14:0;;;;;;:8;:14;;;;;;29419:32;;:15;:32;:::i;:::-;:51;29396:74;29392:155;;;29509:9;:18;29495:32;;-1:-1:-1;;;29509:18:0;;;;29495:32;;:::i;:::-;;;29392:155;29282:358;;;-1:-1:-1;29607:9:0;:21;;;;;;29282:358;29654:10;29668:1;29654:15;29650:39;;29680:6;29673:13;;;;;29650:39;29711:11;;;;;-1:-1:-1;;;;;29711:11:0;29735:4;29703:37;:110;;;;;29758:13;29775:1;29758:18;:54;;;;29793:13;29810:2;29793:19;29758:54;29699:138;;;-1:-1:-1;29830:4:0;29699:138;29847:17;5698:5;29867:19;29876:10;29867:6;:19;:::i;:::-;:38;;;;:::i;:::-;29847:58;-1:-1:-1;29920:13:0;;29916:141;;29966:4;29950:7;:22;;;;;;;;;;:35;;29976:9;;29950:7;:35;;29976:9;;29950:35;:::i;:::-;;;;-1:-1:-1;;30005:40:0;;571:25:1;;;30028:4:0;;-1:-1:-1;;;;;30005:40:0;;;;;559:2:1;544:18;30005:40:0;;;;;;;29916:141;30076:18;30085:9;30076:6;:18;:::i;:::-;30069:25;;;;29017:1085;;;;;;;;:::o;25835:563::-;25918:16;;;;;;;25917:17;25909:65;;;;-1:-1:-1;;;25909:65:0;;37275:2:1;25909:65:0;;;37257:21:1;37314:2;37294:18;;;37287:30;37353:34;37333:18;;;37326:62;-1:-1:-1;;;37404:18:1;;;37397:33;37447:19;;25909:65:0;37073:399:1;25909:65:0;25990:20;26001:4;26007:2;25990:10;:20::i;:::-;25989:21;:37;;;;-1:-1:-1;26020:6:0;;-1:-1:-1;;;;;26014:12:0;;;26020:6;;26014:12;25989:37;25985:406;;;-1:-1:-1;;;;;26043:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;26043:30:0;;;26069:4;26043:30;;;;;;26088:19;:25;;;;;:32;;;;;;;;;;26135:16;:23;;-1:-1:-1;;26135:23:0;26043:30;26135:23;;;;;26185:11;;;;26173:114;;26231:11;:40;;-1:-1:-1;;;;;;26231:40:0;26265:4;26231:40;;;;;26173:114;26301:19;:26;;-1:-1:-1;;26301:26:0;;;;;26347:32;;-1:-1:-1;2835:41:1;;26347:32:0;;2823:2:1;2808:18;26347:32:0;2695:187:1;14:154;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:247;232:6;285:2;273:9;264:7;260:23;256:32;253:52;;;301:1;298;291:12;253:52;340:9;327:23;359:31;384:5;359:31;:::i;838:118::-;924:5;917:13;910:21;903:5;900:32;890:60;;946:1;943;936:12;961:376;1023:6;1031;1084:2;1072:9;1063:7;1059:23;1055:32;1052:52;;;1100:1;1097;1090:12;1052:52;1139:9;1126:23;1158:28;1180:5;1158:28;:::i;:::-;1205:5;-1:-1:-1;1262:2:1;1247:18;;1234:32;1275:30;1234:32;1275:30;:::i;:::-;1324:7;1314:17;;;961:376;;;;;:::o;1791:250::-;1876:1;1886:113;1900:6;1897:1;1894:13;1886:113;;;1976:11;;;1970:18;1957:11;;;1950:39;1922:2;1915:10;1886:113;;;-1:-1:-1;;2033:1:1;2015:16;;2008:27;1791:250::o;2046:396::-;2195:2;2184:9;2177:21;2158:4;2227:6;2221:13;2270:6;2265:2;2254:9;2250:18;2243:34;2286:79;2358:6;2353:2;2342:9;2338:18;2333:2;2325:6;2321:15;2286:79;:::i;:::-;2426:2;2405:15;-1:-1:-1;;2401:29:1;2386:45;;;;2433:2;2382:54;;2046:396;-1:-1:-1;;2046:396:1:o;2887:315::-;2955:6;2963;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3071:9;3058:23;3090:31;3115:5;3090:31;:::i;:::-;3140:5;3192:2;3177:18;;;;3164:32;;-1:-1:-1;;;2887:315:1:o;3207:456::-;3284:6;3292;3300;3353:2;3341:9;3332:7;3328:23;3324:32;3321:52;;;3369:1;3366;3359:12;3321:52;3408:9;3395:23;3427:31;3452:5;3427:31;:::i;:::-;3477:5;-1:-1:-1;3534:2:1;3519:18;;3506:32;3547:33;3506:32;3547:33;:::i;:::-;3207:456;;3599:7;;-1:-1:-1;;;3653:2:1;3638:18;;;;3625:32;;3207:456::o;3668:159::-;3735:20;;3795:6;3784:18;;3774:29;;3764:57;;3817:1;3814;3807:12;3764:57;3668:159;;;:::o;3832:252::-;3899:6;3907;3960:2;3948:9;3939:7;3935:23;3931:32;3928:52;;;3976:1;3973;3966:12;3928:52;4012:9;3999:23;3989:33;;4041:37;4074:2;4063:9;4059:18;4041:37;:::i;:::-;4031:47;;3832:252;;;;;:::o;4089:248::-;4157:6;4165;4218:2;4206:9;4197:7;4193:23;4189:32;4186:52;;;4234:1;4231;4224:12;4186:52;-1:-1:-1;;4257:23:1;;;4327:2;4312:18;;;4299:32;;-1:-1:-1;4089:248:1:o;4342:127::-;4403:10;4398:3;4394:20;4391:1;4384:31;4434:4;4431:1;4424:15;4458:4;4455:1;4448:15;4474:275;4545:2;4539:9;4610:2;4591:13;;-1:-1:-1;;4587:27:1;4575:40;;4645:18;4630:34;;4666:22;;;4627:62;4624:88;;;4692:18;;:::i;:::-;4728:2;4721:22;4474:275;;-1:-1:-1;4474:275:1:o;4754:183::-;4814:4;4847:18;4839:6;4836:30;4833:56;;;4869:18;;:::i;:::-;-1:-1:-1;4914:1:1;4910:14;4926:4;4906:25;;4754:183::o;4942:662::-;4996:5;5049:3;5042:4;5034:6;5030:17;5026:27;5016:55;;5067:1;5064;5057:12;5016:55;5103:6;5090:20;5129:4;5153:60;5169:43;5209:2;5169:43;:::i;:::-;5153:60;:::i;:::-;5247:15;;;5333:1;5329:10;;;;5317:23;;5313:32;;;5278:12;;;;5357:15;;;5354:35;;;5385:1;5382;5375:12;5354:35;5421:2;5413:6;5409:15;5433:142;5449:6;5444:3;5441:15;5433:142;;;5515:17;;5503:30;;5553:12;;;;5466;;5433:142;;;-1:-1:-1;5593:5:1;4942:662;-1:-1:-1;;;;;;4942:662:1:o;5609:1215::-;5727:6;5735;5788:2;5776:9;5767:7;5763:23;5759:32;5756:52;;;5804:1;5801;5794:12;5756:52;5844:9;5831:23;5873:18;5914:2;5906:6;5903:14;5900:34;;;5930:1;5927;5920:12;5900:34;5968:6;5957:9;5953:22;5943:32;;6013:7;6006:4;6002:2;5998:13;5994:27;5984:55;;6035:1;6032;6025:12;5984:55;6071:2;6058:16;6093:4;6117:60;6133:43;6173:2;6133:43;:::i;6117:60::-;6211:15;;;6293:1;6289:10;;;;6281:19;;6277:28;;;6242:12;;;;6317:19;;;6314:39;;;6349:1;6346;6339:12;6314:39;6373:11;;;;6393:217;6409:6;6404:3;6401:15;6393:217;;;6489:3;6476:17;6506:31;6531:5;6506:31;:::i;:::-;6550:18;;6426:12;;;;6588;;;;6393:217;;;6629:5;-1:-1:-1;;6672:18:1;;6659:32;;-1:-1:-1;;6703:16:1;;;6700:36;;;6732:1;6729;6722:12;6700:36;;6755:63;6810:7;6799:8;6788:9;6784:24;6755:63;:::i;:::-;6745:73;;;5609:1215;;;;;:::o;7018:328::-;7092:6;7100;7108;7161:2;7149:9;7140:7;7136:23;7132:32;7129:52;;;7177:1;7174;7167:12;7129:52;7200:28;7218:9;7200:28;:::i;:::-;7190:38;;7247:37;7280:2;7269:9;7265:18;7247:37;:::i;:::-;7237:47;;7303:37;7336:2;7325:9;7321:18;7303:37;:::i;:::-;7293:47;;7018:328;;;;;:::o;7351:382::-;7416:6;7424;7477:2;7465:9;7456:7;7452:23;7448:32;7445:52;;;7493:1;7490;7483:12;7445:52;7532:9;7519:23;7551:31;7576:5;7551:31;:::i;7738:180::-;7797:6;7850:2;7838:9;7829:7;7825:23;7821:32;7818:52;;;7866:1;7863;7856:12;7818:52;-1:-1:-1;7889:23:1;;7738:180;-1:-1:-1;7738:180:1:o;7923:553::-;8024:6;8032;8040;8093:2;8081:9;8072:7;8068:23;8064:32;8061:52;;;8109:1;8106;8099:12;8061:52;8148:9;8135:23;8167:31;8192:5;8167:31;:::i;:::-;8217:5;-1:-1:-1;8274:2:1;8259:18;;8246:32;8287:33;8246:32;8287:33;:::i;:::-;8339:7;-1:-1:-1;8398:2:1;8383:18;;8370:32;8411:33;8370:32;8411:33;:::i;:::-;8463:7;8453:17;;;7923:553;;;;;:::o;8481:388::-;8549:6;8557;8610:2;8598:9;8589:7;8585:23;8581:32;8578:52;;;8626:1;8623;8616:12;8578:52;8665:9;8652:23;8684:31;8709:5;8684:31;:::i;:::-;8734:5;-1:-1:-1;8791:2:1;8776:18;;8763:32;8804:33;8763:32;8804:33;:::i;8874:367::-;8937:8;8947:6;9001:3;8994:4;8986:6;8982:17;8978:27;8968:55;;9019:1;9016;9009:12;8968:55;-1:-1:-1;9042:20:1;;9085:18;9074:30;;9071:50;;;9117:1;9114;9107:12;9071:50;9154:4;9146:6;9142:17;9130:29;;9214:3;9207:4;9197:6;9194:1;9190:14;9182:6;9178:27;9174:38;9171:47;9168:67;;;9231:1;9228;9221:12;9168:67;8874:367;;;;;:::o;9246:908::-;9377:6;9385;9393;9401;9409;9462:2;9450:9;9441:7;9437:23;9433:32;9430:52;;;9478:1;9475;9468:12;9430:52;9518:9;9505:23;9547:18;9588:2;9580:6;9577:14;9574:34;;;9604:1;9601;9594:12;9574:34;9643:70;9705:7;9696:6;9685:9;9681:22;9643:70;:::i;:::-;9732:8;;-1:-1:-1;9617:96:1;-1:-1:-1;9820:2:1;9805:18;;9792:32;;-1:-1:-1;9836:16:1;;;9833:36;;;9865:1;9862;9855:12;9833:36;;9904:72;9968:7;9957:8;9946:9;9942:24;9904:72;:::i;:::-;9995:8;;-1:-1:-1;9878:98:1;-1:-1:-1;;10080:2:1;10065:18;;10052:32;10093:31;10052:32;10093:31;:::i;:::-;10143:5;10133:15;;;9246:908;;;;;;;;:::o;10159:241::-;10215:6;10268:2;10256:9;10247:7;10243:23;10239:32;10236:52;;;10284:1;10281;10274:12;10236:52;10323:9;10310:23;10342:28;10364:5;10342:28;:::i;10865:385::-;10951:6;10959;10967;10975;11028:3;11016:9;11007:7;11003:23;10999:33;10996:53;;;11045:1;11042;11035:12;10996:53;-1:-1:-1;;11068:23:1;;;11138:2;11123:18;;11110:32;;-1:-1:-1;11189:2:1;11174:18;;11161:32;;11240:2;11225:18;11212:32;;-1:-1:-1;10865:385:1;-1:-1:-1;10865:385:1:o;11255:127::-;11316:10;11311:3;11307:20;11304:1;11297:31;11347:4;11344:1;11337:15;11371:4;11368:1;11361:15;11387:128;11454:9;;;11475:11;;;11472:37;;;11489:18;;:::i;12139:380::-;12218:1;12214:12;;;;12261;;;12282:61;;12336:4;12328:6;12324:17;12314:27;;12282:61;12389:2;12381:6;12378:14;12358:18;12355:38;12352:161;;12435:10;12430:3;12426:20;12423:1;12416:31;12470:4;12467:1;12460:15;12498:4;12495:1;12488:15;12352:161;;12139:380;;;:::o;12524:422::-;12613:1;12656:5;12613:1;12670:270;12691:7;12681:8;12678:21;12670:270;;;12750:4;12746:1;12742:6;12738:17;12732:4;12729:27;12726:53;;;12759:18;;:::i;:::-;12809:7;12799:8;12795:22;12792:55;;;12829:16;;;;12792:55;12908:22;;;;12868:15;;;;12670:270;;;12674:3;12524:422;;;;;:::o;12951:806::-;13000:5;13030:8;13020:80;;-1:-1:-1;13071:1:1;13085:5;;13020:80;13119:4;13109:76;;-1:-1:-1;13156:1:1;13170:5;;13109:76;13201:4;13219:1;13214:59;;;;13287:1;13282:130;;;;13194:218;;13214:59;13244:1;13235:10;;13258:5;;;13282:130;13319:3;13309:8;13306:17;13303:43;;;13326:18;;:::i;:::-;-1:-1:-1;;13382:1:1;13368:16;;13397:5;;13194:218;;13496:2;13486:8;13483:16;13477:3;13471:4;13468:13;13464:36;13458:2;13448:8;13445:16;13440:2;13434:4;13431:12;13427:35;13424:77;13421:159;;;-1:-1:-1;13533:19:1;;;13565:5;;13421:159;13612:34;13637:8;13631:4;13612:34;:::i;:::-;13682:6;13678:1;13674:6;13670:19;13661:7;13658:32;13655:58;;;13693:18;;:::i;:::-;13731:20;;12951:806;-1:-1:-1;;;12951:806:1:o;13762:140::-;13820:5;13849:47;13890:4;13880:8;13876:19;13870:4;13849:47;:::i;13907:217::-;13947:1;13973;13963:132;;14017:10;14012:3;14008:20;14005:1;13998:31;14052:4;14049:1;14042:15;14080:4;14077:1;14070:15;13963:132;-1:-1:-1;14109:9:1;;13907:217::o;14827:168::-;14900:9;;;14931;;14948:15;;;14942:22;;14928:37;14918:71;;14969:18;;:::i;15767:127::-;15828:10;15823:3;15819:20;15816:1;15809:31;15859:4;15856:1;15849:15;15883:4;15880:1;15873:15;16246:197;16284:3;16312:6;16353:2;16346:5;16342:14;16380:2;16371:7;16368:15;16365:41;;16386:18;;:::i;:::-;16435:1;16422:15;;16246:197;-1:-1:-1;;;16246:197:1:o;16448:125::-;16513:9;;;16534:10;;;16531:36;;;16547:18;;:::i;17276:168::-;17343:6;17369:10;;;17381;;;17365:27;;17404:11;;;17401:37;;;17418:18;;:::i;:::-;17401:37;17276:168;;;;:::o;22682:184::-;22752:6;22805:2;22793:9;22784:7;22780:23;22776:32;22773:52;;;22821:1;22818;22811:12;22773:52;-1:-1:-1;22844:16:1;;22682:184;-1:-1:-1;22682:184:1:o;23173:245::-;23240:6;23293:2;23281:9;23272:7;23268:23;23264:32;23261:52;;;23309:1;23306;23299:12;23261:52;23341:9;23335:16;23360:28;23382:5;23360:28;:::i;24433:510::-;24487:5;24540:3;24533:4;24525:6;24521:17;24517:27;24507:55;;24558:1;24555;24548:12;24507:55;24587:6;24581:13;24613:18;24609:2;24606:26;24603:52;;;24635:18;;:::i;:::-;24679:55;24722:2;24703:13;;-1:-1:-1;;24699:27:1;24728:4;24695:38;24679:55;:::i;:::-;24759:2;24750:7;24743:19;24805:3;24798:4;24793:2;24785:6;24781:15;24777:26;24774:35;24771:55;;;24822:1;24819;24812:12;24771:55;24835:77;24909:2;24902:4;24893:7;24889:18;24882:4;24874:6;24870:17;24835:77;:::i;24948:774::-;25063:6;25071;25079;25087;25140:3;25128:9;25119:7;25115:23;25111:33;25108:53;;;25157:1;25154;25147:12;25108:53;25190:9;25184:16;25219:18;25260:2;25252:6;25249:14;25246:34;;;25276:1;25273;25266:12;25246:34;25299:61;25352:7;25343:6;25332:9;25328:22;25299:61;:::i;:::-;25289:71;;25406:2;25395:9;25391:18;25385:25;25369:41;;25435:2;25425:8;25422:16;25419:36;;;25451:1;25448;25441:12;25419:36;;25474:63;25529:7;25518:8;25507:9;25503:24;25474:63;:::i;:::-;25464:73;;;25577:2;25566:9;25562:18;25556:25;25546:35;;25624:2;25613:9;25609:18;25603:25;25668:4;25661:5;25657:16;25650:5;25647:27;25637:55;;25688:1;25685;25678:12;25637:55;24948:774;;;;-1:-1:-1;24948:774:1;;-1:-1:-1;;24948:774:1:o;26182:545::-;26284:2;26279:3;26276:11;26273:448;;;26320:1;26345:5;26341:2;26334:17;26390:4;26386:2;26376:19;26460:2;26448:10;26444:19;26441:1;26437:27;26431:4;26427:38;26496:4;26484:10;26481:20;26478:47;;;-1:-1:-1;26519:4:1;26478:47;26574:2;26569:3;26565:12;26562:1;26558:20;26552:4;26548:31;26538:41;;26629:82;26647:2;26640:5;26637:13;26629:82;;;26692:17;;;26673:1;26662:13;26629:82;;26903:1352;27029:3;27023:10;27056:18;27048:6;27045:30;27042:56;;;27078:18;;:::i;:::-;27107:97;27197:6;27157:38;27189:4;27183:11;27157:38;:::i;:::-;27151:4;27107:97;:::i;:::-;27259:4;;27323:2;27312:14;;27340:1;27335:663;;;;28042:1;28059:6;28056:89;;;-1:-1:-1;28111:19:1;;;28105:26;28056:89;-1:-1:-1;;26860:1:1;26856:11;;;26852:24;26848:29;26838:40;26884:1;26880:11;;;26835:57;28158:81;;27305:944;;27335:663;26129:1;26122:14;;;26166:4;26153:18;;-1:-1:-1;;27371:20:1;;;27489:236;27503:7;27500:1;27497:14;27489:236;;;27592:19;;;27586:26;27571:42;;27684:27;;;;27652:1;27640:14;;;;27519:19;;27489:236;;;27493:3;27753:6;27744:7;27741:19;27738:201;;;27814:19;;;27808:26;-1:-1:-1;;27897:1:1;27893:14;;;27909:3;27889:24;27885:37;27881:42;27866:58;27851:74;;27738:201;-1:-1:-1;;;;;27985:1:1;27969:14;;;27965:22;27952:36;;-1:-1:-1;26903:1352:1:o;28260:251::-;28330:6;28383:2;28371:9;28362:7;28358:23;28354:32;28351:52;;;28399:1;28396;28389:12;28351:52;28431:9;28425:16;28450:31;28475:5;28450:31;:::i;28848:135::-;28887:3;28908:17;;;28905:43;;28928:18;;:::i;:::-;-1:-1:-1;28975:1:1;28964:13;;28848:135::o;29623:306::-;29711:6;29719;29727;29780:2;29768:9;29759:7;29755:23;29751:32;29748:52;;;29796:1;29793;29786:12;29748:52;29825:9;29819:16;29809:26;;29875:2;29864:9;29860:18;29854:25;29844:35;;29919:2;29908:9;29904:18;29898:25;29888:35;;29623:306;;;;;:::o;35832:1026::-;36094:4;36142:3;36131:9;36127:19;36173:6;36162:9;36155:25;36199:2;36237:6;36232:2;36221:9;36217:18;36210:34;36280:3;36275:2;36264:9;36260:18;36253:31;36304:6;36339;36333:13;36370:6;36362;36355:22;36408:3;36397:9;36393:19;36386:26;;36447:2;36439:6;36435:15;36421:29;;36468:1;36478:218;36492:6;36489:1;36486:13;36478:218;;;36557:13;;-1:-1:-1;;;;;36553:62:1;36541:75;;36671:15;;;;36636:12;;;;36514:1;36507:9;36478:218;;;-1:-1:-1;;;;;;;36752:55:1;;;;36747:2;36732:18;;36725:83;-1:-1:-1;;;36839:3:1;36824:19;36817:35;36713:3;35832:1026;-1:-1:-1;;;35832:1026:1:o

Swarm Source

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