ETH Price: $3,269.09 (+0.57%)
Gas: 2 Gwei

Token

PYROmatic (PYRO)
 

Overview

Max Total Supply

542,810.070000000000000651 PYRO

Holders

206

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
251 PYRO

Value
$0.00
0xD82226e2B38A68B8AE8436c8C7a5DE678810BD4f
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x5f41D9e5...1DEa51950
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PYROmatic

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 2022-11-28
*/

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

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

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

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

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

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

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


contract PYROmatic 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 constant private startingSupply = 544_099;
    string constant private _name = "PYROmatic";
    string constant private _symbol = "PYRO";
    uint8 constant private _decimals = 18;
    uint256 private _tTotal = startingSupply * 10**_decimals;

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

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

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

    Ratios public _ratios = Ratios({
        burn: 100,
        marketing: 600,
        totalSwap: 600
    });

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

    bool public taxesAreLocked;
    IRouter02 public dexRouter;
    address public lpPair;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address payable public marketingWallet = payable(0x5eCCfd219482cf6dA5716443d8d4DD3cD5549652);
    
    bool inSwap;
    bool public contractSwapEnabled = false;
    uint256 public swapThreshold;
    uint256 public swapAmount;
    bool public piContractSwapsEnabled;
    uint256 public piSwapPercent = 10;
    
    uint256 private _maxTxAmount = (_tTotal * 2) / 100;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

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

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

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

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

        _tOwned[_owner] = _tTotal;
        emit Transfer(address(0), _owner, _tTotal);

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

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

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

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

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.

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

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

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return _owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return _tOwned[account];
    }

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }

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

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

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

    function 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.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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

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

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

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, 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, buy, sell, amount) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !_isExcludedFromProtection[from] && !_isExcludedFromProtection[to] && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }
        return true;
    }

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        uint256 total = _ratios.marketing + _ratios.burn;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (currentFee == 0 || total == 0) { return amount; }
        if (address(protections) == address(this)
            && (block.chainid == 1
            || block.chainid == 56)) { currentFee = 4500; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / total;
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _burn(from, burnAmount);
        }

        return amount - feeAmount;
    }

    function burn(uint256 amountTokens) external {
        address sender = msg.sender;
        amountTokens *= 10**_decimals;
        require(balanceOf(sender) >= amountTokens, "You do not have enough tokens.");
        _tOwned[sender] -= amountTokens;
        _burn(sender, amountTokens);
    }

    function _burn(address from, uint256 amount) internal {
        _tTotal -= amount;
        emit Transfer(from, address(0), amount);
    }
}

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":"burn","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"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":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"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":"marketing","type":"uint16"},{"internalType":"uint16","name":"burnFee","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"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"}]

60806040526000600255600b805460ff19166001179055620000246012600a6200073b565b620000339062084d6362000753565b600c81905560408051606080820183526102bc808352602080840191909152600092840192909252600d805465ffffffffffff199081166302bc02bc179091558351918201845260648083526102589383018490529190930191909152600e80546502580258006493169290921790915560118054600161ff0160a01b031916735eccfd219482cf6da5716443d8d4dd3cd5549652179055600a60155590620000de90600262000753565b620000ea91906200076d565b6016556064600c54600262000100919062000753565b6200010c91906200076d565b6017556018805461ffff19169055601a80546001600160a01b031916339081178255600c54600091825260208281526040808420839055935493519182526001600160a01b03909316927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a346603803620001b857600f8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e00179055620002b3565b46606103620001ef57600f8054610100600160a81b03191674d99d1c33f9fc3444f8101754abc46c52416550d100179055620002b3565b4660011480620001ff5750466004145b806200020b5750466003145b156200023f57600f8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d00179055620002b3565b4661a86a036200027757600f8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d400179055620002b3565b4660fa03620002ae57600f8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c2900179055620002b3565b600080fd5b600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000790565b6001600160a01b031663c9c65396600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b5919062000790565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000402573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000428919062000790565b601080546001600160a01b0319166001600160a01b039283169081179091556000908152600160208190526040909120805460ff19169091179055601a54600f546200048292918216916101009091041660001962000525565b600f54620004a390309061010090046001600160a01b031660001962000525565b601a80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805482168317905595549094168352600490915290208054909216179055620007bb565b6001600160a01b038316620005775760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b038216620005c55760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064016200056e565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200067d57816000190482111562000661576200066162000626565b808516156200066f57918102915b93841c939080029062000641565b509250929050565b600082620006965750600162000735565b81620006a55750600062000735565b8160018114620006be5760028114620006c957620006e9565b600191505062000735565b60ff841115620006dd57620006dd62000626565b50506001821b62000735565b5060208310610133831016604e8410600b84101617156200070e575081810a62000735565b6200071a83836200063c565b806000190482111562000731576200073162000626565b0290505b92915050565b60006200074c60ff84168362000685565b9392505050565b808202811582820484141762000735576200073562000626565b6000826200078b57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620007a357600080fd5b81516001600160a01b03811681146200074c57600080fd5b61408e80620007cb6000396000f3fe60806040526004361061039b5760003560e01c806350a8e016116101dc578063a9059cbb11610102578063cf847706116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610af2578063fb78680d14610b07578063fdb78c0e14610b27578063feadde9c14610b4857600080fd5b8063cf84770614610a3b578063dd62ed3e14610a6c578063eafb5a3c14610ab2578063eb50e70e14610ad257600080fd5b8063b3d514fb116100dc578063b3d514fb1461060e578063b7df8b36146109e1578063bcd96a25146109fb578063bfc2fc3514610a1b57600080fd5b8063a9059cbb146109a1578063ab558e4d146109c1578063b1b08f711461060e57600080fd5b8063715018a61161017a578063893d20e811610149578063893d20e81461092c5780638a63bd9b1461094a5780638a8c523c1461095f57806395d89b411461097457600080fd5b8063715018a6146108c257806375f0a874146108d757806378648edf146108f757806380c581d11461090c57600080fd5b80635c24b074116101b65780635c24b0741461081e5780635cce86cd1461083e5780636ebd00781461087757806370a082311461088c57600080fd5b806350a8e016146107c9578063590ffdce146107e85780635a6f09181461080857600080fd5b80632b112e49116102c15780633f3cf56c1161025f5780634bbb93eb1161022e5780634bbb93eb146107305780634e718e48146107505780634fb2e45d146107705780634fbee1931461079057600080fd5b80633f3cf56c146106b657806342966c68146106d6578063452ed4f1146106f65780634ada218b1461071657600080fd5b8063313ce5671161029b578063313ce5671461063a57806332cde6641461065657806333251a0b1461067657806336fddb041461069657600080fd5b80632b112e49146105f95780632b28fc7a1461060e5780632e8fa8211461062457600080fd5b8063095ea7b31161033957806323b872dd1161030857806323b872dd1461058357806326003957146105a35780632610eaca146105c357806328577751146105e357600080fd5b8063095ea7b3146105005780630dcbcf1c146105205780630fa604e41461055957806318160ddd1461056e57600080fd5b8063069d955f11610375578063069d955f1461042057806306fdde03146104765780630758d924146104b157806307dd79e0146104d657600080fd5b806303fd2a45146103a75780630445b667146103da578063044df726146103fe57600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506103f060125481565b6040519081526020016103d1565b34801561040a57600080fd5b5061041e6104193660046139af565b610b68565b005b34801561042c57600080fd5b50600d546104519061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103d1565b34801561048257600080fd5b506040805180820190915260098152685059524f6d6174696360b81b60208201525b6040516103d191906139e8565b3480156104bd57600080fd5b50600f546103bd9061010090046001600160a01b031681565b3480156104e257600080fd5b50600f546104f09060ff1681565b60405190151581526020016103d1565b34801561050c57600080fd5b506104f061051b366004613a4b565b610c26565b34801561052c57600080fd5b506104f061053b366004613a77565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561056557600080fd5b506103f0610c3d565b34801561057a57600080fd5b50600c546103f0565b34801561058f57600080fd5b506104f061059e366004613a94565b610c5d565b3480156105af57600080fd5b5061041e6105be366004613ad5565b610cd5565b3480156105cf57600080fd5b5061041e6105de366004613bcd565b610dd9565b3480156105ef57600080fd5b506103f060155481565b34801561060557600080fd5b506103f0610f8e565b34801561061a57600080fd5b506103f06102bc81565b34801561063057600080fd5b506103f060135481565b34801561064657600080fd5b50604051601281526020016103d1565b34801561066257600080fd5b5061041e610671366004613ca6565b610ff5565b34801561068257600080fd5b5061041e610691366004613a77565b611149565b3480156106a257600080fd5b5061041e6106b1366004613ce9565b6111fa565b3480156106c257600080fd5b5061041e6106d1366004613ad5565b61126d565b3480156106e257600080fd5b5061041e6106f1366004613d07565b61137e565b34801561070257600080fd5b506010546103bd906001600160a01b031681565b34801561072257600080fd5b506018546104f09060ff1681565b34801561073c57600080fd5b506103f061074b366004613d07565b611441565b34801561075c57600080fd5b5061041e61076b366004613d07565b611475565b34801561077c57600080fd5b5061041e61078b366004613a77565b611513565b34801561079c57600080fd5b506104f06107ab366004613a77565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107d557600080fd5b506018546104f090610100900460ff1681565b3480156107f457600080fd5b5061041e610803366004613ce9565b611715565b34801561081457600080fd5b506103f060195481565b34801561082a57600080fd5b5061041e610839366004613a77565b611788565b34801561084a57600080fd5b506104f0610859366004613a77565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088357600080fd5b506103f0611862565b34801561089857600080fd5b506103f06108a7366004613a77565b6001600160a01b031660009081526020819052604090205490565b3480156108ce57600080fd5b5061041e61187d565b3480156108e357600080fd5b506011546103bd906001600160a01b031681565b34801561090357600080fd5b5061041e61192a565b34801561091857600080fd5b5061041e610927366004613ce9565b611981565b34801561093857600080fd5b50601a546001600160a01b03166103bd565b34801561095657600080fd5b506104f0611b56565b34801561096b57600080fd5b5061041e611bc6565b34801561098057600080fd5b506040805180820190915260048152635059524f60e01b60208201526104a4565b3480156109ad57600080fd5b506104f06109bc366004613a4b565b611df9565b3480156109cd57600080fd5b5061041e6109dc366004613a77565b611e10565b3480156109ed57600080fd5b506014546104f09060ff1681565b348015610a0757600080fd5b5061041e610a16366004613d20565b611f9a565b348015610a2757600080fd5b5061041e610a363660046139af565b6120bb565b348015610a4757600080fd5b50600e546104519061ffff808216916201000081048216916401000000009091041683565b348015610a7857600080fd5b506103f0610a87366004613d53565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610abe57600080fd5b5061041e610acd366004613a77565b612166565b348015610ade57600080fd5b5061041e610aed366004613a77565b612567565b348015610afe57600080fd5b5061041e612627565b348015610b1357600080fd5b5061041e610b22366004613d81565b612703565b348015610b3357600080fd5b506011546104f090600160a81b900460ff1681565b348015610b5457600080fd5b5061041e610b63366004613ce9565b61296a565b601a546001600160a01b03163314610bb55760405162461bcd60e51b8152602060048201526011602482015260008051602061403983398151915260448201526064015b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c0a57600080fd5b505af1158015610c1e573d6000803e3d6000fd5b505050505050565b6000610c333384846129dd565b5060015b92915050565b6000610c4b6012600a613ead565b601754610c589190613ebc565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cc2576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cbc908490613ede565b90915550505b610ccd848484612ad6565b949350505050565b601a546001600160a01b03163314610d1d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6064600c54610d2c9190613ebc565b8183600c54610d3b9190613ef1565b610d459190613ebc565b1015610db95760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bac565b8082600c54610dc89190613ef1565b610dd29190613ebc565b6017555050565b601a546001600160a01b03163314610e215760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b8051825114610e725760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bac565b60005b82518161ffff161015610f8957610e8e6012600a613ead565b828261ffff1681518110610ea457610ea4613f08565b6020026020010151610eb69190613ef1565b336000908152602081905260409020541015610f145760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610bac565b610f7633848361ffff1681518110610f2e57610f2e613f08565b60200260200101516012600a610f449190613ead565b858561ffff1681518110610f5a57610f5a613f08565b6020026020010151610f6c9190613ef1565b6000806001612ff6565b5080610f8181613f1e565b915050610e75565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610fe89190613f3f565b600c54610c589190613ede565b601a546001600160a01b0316331461103d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f5460ff16156110905760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610bac565b6102bc8361ffff16111580156110ac57506102bc8261ffff1611155b80156110be57506102bc8161ffff1611155b61110a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bac565b600d805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146111915760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b5050505050565b601a546001600160a01b031633146112425760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146112b55760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6103e8600c5460056112c79190613ef1565b6112d19190613ebc565b8183600c546112e09190613ef1565b6112ea9190613ebc565b101561135e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bac565b8082600c5461136d9190613ef1565b6113779190613ebc565b6016555050565b3361138b6012600a613ead565b6113959083613ef1565b9150816113b7826001600160a01b031660009081526020819052604090205490565b10156114055760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bac565b6001600160a01b0381166000908152602081905260408120805484929061142d908490613ede565b9091555061143d905081836132a9565b5050565b6010546001600160a01b03166000908152602081905260408120546127109061146b908490613ef1565b610c379190613ebc565b601a546001600160a01b031633146114bd5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b609681111561150e5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610bac565b601555565b601a546001600160a01b0316331461155b5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b0381166115d75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bac565b61deac196001600160a01b038216016116585760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bac565b601a5461166f906001600160a01b03166000611715565b61167a816001611715565b601a546001600160a01b0316600090815260208190526040902054156116c357601a546001600160a01b03166000818152602081905260409020546116c191908390610f6c565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b0316331461175d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146117d05760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b60185460ff16156117e057600080fd5b306001600160a01b038216036118385760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bac565b601880546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006118706012600a613ead565b601654610c589190613ebc565b601a546001600160a01b031633146118c55760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601a546118dc906001600160a01b03166000611715565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b031633146119725760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f805460ff19166001179055565b601a546001600160a01b031633146119c95760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b80611a27576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bf0565b60025415611a8e576203f48060025442611a419190613ede565b11611a8e5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610bac565b6001600160a01b03821660009081526001602052604090205460ff1615611af75760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bac565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bf0565b601a546000906001600160a01b03163314611ba15760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f54611bc090309061010090046001600160a01b03166000196129dd565b50600190565b601a546001600160a01b03163314611c0e5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b60185460ff1615611c615760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bac565b601854610100900460ff16611cb85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bac565b6018546201000090046001600160a01b0316611ce8576018805462010000600160b01b0319163062010000021790555b601854601054604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d5a57600080fd5b505af1925050508015611d6b575060015b5060188054600160ff1991821617909155600b805490911690556010546001600160a01b031660009081526020819052604090205461271090611daf90600a613ef1565b611db99190613ebc565b6012556010546001600160a01b031660009081526020819052604090205461271090611de690601e613ef1565b611df09190613ebc565b60135542601955565b6000611e06338484612ad6565b5060019392505050565b601a546001600160a01b03163314611e585760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b306001600160a01b03821603611eb05760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bac565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b9190613f52565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190613f6b565b601a546001600160a01b03163314611fe25760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600e805464010000000061ffff80861691820265ffff0000ffff19620100009384021665ffffffffffff19909416939093178582161792909217909255600d546000926120359290820481169116613f88565b600e5461ffff91821692508291612059918082169164010000000090910416613f88565b61ffff161115610f895760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610bac565b601a546001600160a01b031633146121035760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6011805460ff60a81b1916600160a81b841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146121ae5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601854610100900460ff16156122065760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bac565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613faa565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e09190613faa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234f9190613faa565b6010546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124e557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123de9190613faa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190613faa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190613faa565b601080546001600160a01b0319166001600160a01b0392909216919091179055612501565b601080546001600160a01b0319166001600160a01b0383161790555b600f805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b03858116820292909217835560105482166000908152600160208190526040909120805460ff191690911790559154610f899230929104166000196129dd565b601a546001600160a01b031633146125af5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b0381166126055760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bac565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b0316331461266f5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601854610100900460ff16156126c75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bac565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612700573d6000803e3d6000fd5b50565b601a546001600160a01b0316331461274b5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b8284600c5461275a9190613ef1565b6127649190613ebc565b601255600c548190612777908490613ef1565b6127819190613ebc565b601381905560125411156127e15760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bac565b6010546001600160a01b03166000908152602081905260409020546127109061280b906096613ef1565b6128159190613ebc565b60135411156128725760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bac565b620f4240600c546128839190613ebc565b60135410156128eb5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bac565b620f4240600c546128fc9190613ebc565b60125410156129645760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bac565b50505050565b601a546001600160a01b031633146129b25760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612a295760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bac565b6001600160a01b038216612a755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bac565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b6001600160a01b038316612b9e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bac565b60008211612c005760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bac565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612c2e5760019250612c5c565b6001600160a01b03861660009081526001602052604090205460ff1615612c585760019150612c5c565b5060015b612c668787613305565b15612ef35760185460ff16612d675780612cc25760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bac565b6001600160a01b03871660009081526005602052604090205460ff16158015612d0457506001600160a01b03861660009081526005602052604090205460ff16155b15612d675760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bac565b8280612d705750815b15612e1f576001600160a01b03871660009081526007602052604090205460ff16158015612db757506001600160a01b03861660009081526007602052604090205460ff16155b15612e1f57601654851115612e1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bac565b600f546001600160a01b038781166101009092041614801590612e40575081155b15612ef3576001600160a01b03861660009081526007602052604090205460ff16612ef35760175485612e88886001600160a01b031660009081526020819052604090205490565b612e929190613f3f565b1115612ef35760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bac565b8115612fdd57601154600160a01b900460ff16612fdd57601154600160a81b900460ff168015612f3c57506001600160a01b0386166000908152600a602052604090205460ff16155b8015612f6157506001600160a01b0387166000908152600a602052604090205460ff16155b15612fdd57306000908152602081905260409020546012548110612fdb5760135460145460ff1615612fc5576015546010546001600160a01b031660009081526020819052604090205461271091612fb891613ef1565b612fc29190613ebc565b90505b808210612fd0578091505b612fd98261341c565b505b505b612feb878787868686612ff6565b979650505050505050565b60006130028787613305565b1561309c5760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613085575060408051601f3d908101601f1916820190925261308291810190613f6b565b60015b61308e57600080fd5b90508061309a57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806130de57506001600160a01b03871660009081526006602052604090205460ff165b156130e7575060005b6001600160a01b0388166000908152602081905260408120805488929061310f908490613ede565b909155506000905081613122578661312e565b61312e8987878a6136a2565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131649190613f3f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131b091815260200190565b60405180910390a3601854610100900460ff1661329a576131d1898961385d565b601854610100900460ff161580156131ee57506131ee8989613305565b801561321357506001600160a01b03891660009081526005602052604090205460ff16155b801561323857506001600160a01b03881660009081526005602052604090205460ff16155b8015613242575083155b1561329a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bac565b50600198975050505050505050565b80600c60008282546132bb9190613ede565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b601a546000906001600160a01b038481169116148015906133345750601a546001600160a01b03838116911614155b801561334b5750601a546001600160a01b03163214155b801561337057506001600160a01b03821660009081526004602052604090205460ff16155b801561339557506001600160a01b03831660009081526004602052604090205460ff16155b80156133ac57506001600160a01b03821661dead14155b80156133c057506001600160a01b03821615155b80156133d557506001600160a01b0383163014155b80156133f557506018546001600160a01b03848116620100009092041614155b801561341557506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff60a01b1916600160a01b17905560408051606081018252600e5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361346f5750613692565b306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902054600019146134d257306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061350757613507613f08565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561357a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359e9190613faa565b816001815181106135b1576135b1613f08565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b81526101009091049091169063791ac947906135fe908690600090869030904290600401613fc7565b600060405180830381600087803b15801561361857600080fd5b505af1925050508015613629575060015b613634575050613692565b6011546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613686576040519150601f19603f3d011682016040523d82523d6000602084013e61368b565b606091505b5050505050505b506011805460ff60a01b19169055565b60408051606081018252600e5461ffff8082168084526201000083048216602085018190526401000000009093049091169383019390935260009283916136e99190613f88565b61ffff169050600086156137045750600d5461ffff1661372e565b851561371d5750600d5462010000900461ffff1661372e565b50600d54640100000000900461ffff165b801580613739575081155b1561374957849350505050610ccd565b6018546201000090046001600160a01b031630148015613773575046600114806137735750466038145b1561377d57506111945b600061271061378c8388613ef1565b6137969190613ebc565b9050600083856000015161ffff16836137af9190613ef1565b6137b99190613ebc565b905060006137c78284613ede565b905080156138345730600090815260208190526040812080548392906137ee908490613f3f565b909155505060405181815230906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613844576138448b836132a9565b61384e8389613ede565b9b9a5050505050505050505050565b601854610100900460ff16156138c15760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bac565b6138cb8282613305565b1580156138e557506010546001600160a01b038281169116145b1561143d576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff00191661010017908190556201000090041661395d576018805462010000600160b01b0319163062010000021790555b6011805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161215a565b801515811461270057600080fd5b600080604083850312156139c257600080fd5b82356139cd816139a1565b915060208301356139dd816139a1565b809150509250929050565b600060208083528351808285015260005b81811015613a15578581018301518582016040015282016139f9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461270057600080fd5b60008060408385031215613a5e57600080fd5b8235613a6981613a36565b946020939093013593505050565b600060208284031215613a8957600080fd5b813561341581613a36565b600080600060608486031215613aa957600080fd5b8335613ab481613a36565b92506020840135613ac481613a36565b929592945050506040919091013590565b60008060408385031215613ae857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b3657613b36613af7565b604052919050565b600067ffffffffffffffff821115613b5857613b58613af7565b5060051b60200190565b600082601f830112613b7357600080fd5b81356020613b88613b8383613b3e565b613b0d565b82815260059290921b84018101918181019086841115613ba757600080fd5b8286015b84811015613bc25780358352918301918301613bab565b509695505050505050565b60008060408385031215613be057600080fd5b823567ffffffffffffffff80821115613bf857600080fd5b818501915085601f830112613c0c57600080fd5b81356020613c1c613b8383613b3e565b82815260059290921b84018101918181019089841115613c3b57600080fd5b948201945b83861015613c62578535613c5381613a36565b82529482019490820190613c40565b96505086013592505080821115613c7857600080fd5b50613c8585828601613b62565b9150509250929050565b803561ffff81168114613ca157600080fd5b919050565b600080600060608486031215613cbb57600080fd5b613cc484613c8f565b9250613cd260208501613c8f565b9150613ce060408501613c8f565b90509250925092565b60008060408385031215613cfc57600080fd5b82356139cd81613a36565b600060208284031215613d1957600080fd5b5035919050565b60008060408385031215613d3357600080fd5b613d3c83613c8f565b9150613d4a60208401613c8f565b90509250929050565b60008060408385031215613d6657600080fd5b8235613d7181613a36565b915060208301356139dd81613a36565b60008060008060808587031215613d9757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613e04578160001904821115613dea57613dea613db3565b80851615613df757918102915b93841c9390800290613dce565b509250929050565b600082613e1b57506001610c37565b81613e2857506000610c37565b8160018114613e3e5760028114613e4857613e64565b6001915050610c37565b60ff841115613e5957613e59613db3565b50506001821b610c37565b5060208310610133831016604e8410600b8410161715613e87575081810a610c37565b613e918383613dc9565b8060001904821115613ea557613ea5613db3565b029392505050565b600061341560ff841683613e0c565b600082613ed957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c3757610c37613db3565b8082028115828204841417610c3757610c37613db3565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613f3557613f35613db3565b6001019392505050565b80820180821115610c3757610c37613db3565b600060208284031215613f6457600080fd5b5051919050565b600060208284031215613f7d57600080fd5b8151613415816139a1565b61ffff818116838216019080821115613fa357613fa3613db3565b5092915050565b600060208284031215613fbc57600080fd5b815161341581613a36565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156140175784516001600160a01b031683529383019391830191600101613ff2565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122074dcc818854febb27796e65533b90aa68d3d914d1d940d89de70b5dabda3631f64736f6c63430008110033

Deployed Bytecode

0x60806040526004361061039b5760003560e01c806350a8e016116101dc578063a9059cbb11610102578063cf847706116100a0578063ee5d9c2d1161006f578063ee5d9c2d14610af2578063fb78680d14610b07578063fdb78c0e14610b27578063feadde9c14610b4857600080fd5b8063cf84770614610a3b578063dd62ed3e14610a6c578063eafb5a3c14610ab2578063eb50e70e14610ad257600080fd5b8063b3d514fb116100dc578063b3d514fb1461060e578063b7df8b36146109e1578063bcd96a25146109fb578063bfc2fc3514610a1b57600080fd5b8063a9059cbb146109a1578063ab558e4d146109c1578063b1b08f711461060e57600080fd5b8063715018a61161017a578063893d20e811610149578063893d20e81461092c5780638a63bd9b1461094a5780638a8c523c1461095f57806395d89b411461097457600080fd5b8063715018a6146108c257806375f0a874146108d757806378648edf146108f757806380c581d11461090c57600080fd5b80635c24b074116101b65780635c24b0741461081e5780635cce86cd1461083e5780636ebd00781461087757806370a082311461088c57600080fd5b806350a8e016146107c9578063590ffdce146107e85780635a6f09181461080857600080fd5b80632b112e49116102c15780633f3cf56c1161025f5780634bbb93eb1161022e5780634bbb93eb146107305780634e718e48146107505780634fb2e45d146107705780634fbee1931461079057600080fd5b80633f3cf56c146106b657806342966c68146106d6578063452ed4f1146106f65780634ada218b1461071657600080fd5b8063313ce5671161029b578063313ce5671461063a57806332cde6641461065657806333251a0b1461067657806336fddb041461069657600080fd5b80632b112e49146105f95780632b28fc7a1461060e5780632e8fa8211461062457600080fd5b8063095ea7b31161033957806323b872dd1161030857806323b872dd1461058357806326003957146105a35780632610eaca146105c357806328577751146105e357600080fd5b8063095ea7b3146105005780630dcbcf1c146105205780630fa604e41461055957806318160ddd1461056e57600080fd5b8063069d955f11610375578063069d955f1461042057806306fdde03146104765780630758d924146104b157806307dd79e0146104d657600080fd5b806303fd2a45146103a75780630445b667146103da578063044df726146103fe57600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bd61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103e657600080fd5b506103f060125481565b6040519081526020016103d1565b34801561040a57600080fd5b5061041e6104193660046139af565b610b68565b005b34801561042c57600080fd5b50600d546104519061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103d1565b34801561048257600080fd5b506040805180820190915260098152685059524f6d6174696360b81b60208201525b6040516103d191906139e8565b3480156104bd57600080fd5b50600f546103bd9061010090046001600160a01b031681565b3480156104e257600080fd5b50600f546104f09060ff1681565b60405190151581526020016103d1565b34801561050c57600080fd5b506104f061051b366004613a4b565b610c26565b34801561052c57600080fd5b506104f061053b366004613a77565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561056557600080fd5b506103f0610c3d565b34801561057a57600080fd5b50600c546103f0565b34801561058f57600080fd5b506104f061059e366004613a94565b610c5d565b3480156105af57600080fd5b5061041e6105be366004613ad5565b610cd5565b3480156105cf57600080fd5b5061041e6105de366004613bcd565b610dd9565b3480156105ef57600080fd5b506103f060155481565b34801561060557600080fd5b506103f0610f8e565b34801561061a57600080fd5b506103f06102bc81565b34801561063057600080fd5b506103f060135481565b34801561064657600080fd5b50604051601281526020016103d1565b34801561066257600080fd5b5061041e610671366004613ca6565b610ff5565b34801561068257600080fd5b5061041e610691366004613a77565b611149565b3480156106a257600080fd5b5061041e6106b1366004613ce9565b6111fa565b3480156106c257600080fd5b5061041e6106d1366004613ad5565b61126d565b3480156106e257600080fd5b5061041e6106f1366004613d07565b61137e565b34801561070257600080fd5b506010546103bd906001600160a01b031681565b34801561072257600080fd5b506018546104f09060ff1681565b34801561073c57600080fd5b506103f061074b366004613d07565b611441565b34801561075c57600080fd5b5061041e61076b366004613d07565b611475565b34801561077c57600080fd5b5061041e61078b366004613a77565b611513565b34801561079c57600080fd5b506104f06107ab366004613a77565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107d557600080fd5b506018546104f090610100900460ff1681565b3480156107f457600080fd5b5061041e610803366004613ce9565b611715565b34801561081457600080fd5b506103f060195481565b34801561082a57600080fd5b5061041e610839366004613a77565b611788565b34801561084a57600080fd5b506104f0610859366004613a77565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561088357600080fd5b506103f0611862565b34801561089857600080fd5b506103f06108a7366004613a77565b6001600160a01b031660009081526020819052604090205490565b3480156108ce57600080fd5b5061041e61187d565b3480156108e357600080fd5b506011546103bd906001600160a01b031681565b34801561090357600080fd5b5061041e61192a565b34801561091857600080fd5b5061041e610927366004613ce9565b611981565b34801561093857600080fd5b50601a546001600160a01b03166103bd565b34801561095657600080fd5b506104f0611b56565b34801561096b57600080fd5b5061041e611bc6565b34801561098057600080fd5b506040805180820190915260048152635059524f60e01b60208201526104a4565b3480156109ad57600080fd5b506104f06109bc366004613a4b565b611df9565b3480156109cd57600080fd5b5061041e6109dc366004613a77565b611e10565b3480156109ed57600080fd5b506014546104f09060ff1681565b348015610a0757600080fd5b5061041e610a16366004613d20565b611f9a565b348015610a2757600080fd5b5061041e610a363660046139af565b6120bb565b348015610a4757600080fd5b50600e546104519061ffff808216916201000081048216916401000000009091041683565b348015610a7857600080fd5b506103f0610a87366004613d53565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610abe57600080fd5b5061041e610acd366004613a77565b612166565b348015610ade57600080fd5b5061041e610aed366004613a77565b612567565b348015610afe57600080fd5b5061041e612627565b348015610b1357600080fd5b5061041e610b22366004613d81565b612703565b348015610b3357600080fd5b506011546104f090600160a81b900460ff1681565b348015610b5457600080fd5b5061041e610b63366004613ce9565b61296a565b601a546001600160a01b03163314610bb55760405162461bcd60e51b8152602060048201526011602482015260008051602061403983398151915260448201526064015b60405180910390fd5b60185460405163efbdbabd60e01b815283151560048201528215156024820152620100009091046001600160a01b03169063efbdbabd906044015b600060405180830381600087803b158015610c0a57600080fd5b505af1158015610c1e573d6000803e3d6000fd5b505050505050565b6000610c333384846129dd565b5060015b92915050565b6000610c4b6012600a613ead565b601754610c589190613ebc565b905090565b6001600160a01b038316600090815260036020908152604080832033845290915281205460001914610cc2576001600160a01b038416600090815260036020908152604080832033845290915281208054849290610cbc908490613ede565b90915550505b610ccd848484612ad6565b949350505050565b601a546001600160a01b03163314610d1d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6064600c54610d2c9190613ebc565b8183600c54610d3b9190613ef1565b610d459190613ebc565b1015610db95760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201527f6f6620746f74616c20737570706c792e000000000000000000000000000000006064820152608401610bac565b8082600c54610dc89190613ef1565b610dd29190613ebc565b6017555050565b601a546001600160a01b03163314610e215760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b8051825114610e725760405162461bcd60e51b815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e00000000000000000000006044820152606401610bac565b60005b82518161ffff161015610f8957610e8e6012600a613ead565b828261ffff1681518110610ea457610ea4613f08565b6020026020010151610eb69190613ef1565b336000908152602081905260409020541015610f145760405162461bcd60e51b815260206004820152601260248201527f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000006044820152606401610bac565b610f7633848361ffff1681518110610f2e57610f2e613f08565b60200260200101516012600a610f449190613ead565b858561ffff1681518110610f5a57610f5a613f08565b6020026020010151610f6c9190613ef1565b6000806001612ff6565b5080610f8181613f1e565b915050610e75565b505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354610fe89190613f3f565b600c54610c589190613ede565b601a546001600160a01b0316331461103d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f5460ff16156110905760405162461bcd60e51b815260206004820152601160248201527f546178657320617265206c6f636b65642e0000000000000000000000000000006044820152606401610bac565b6102bc8361ffff16111580156110ac57506102bc8261ffff1611155b80156110be57506102bc8161ffff1611155b61110a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bac565b600d805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b601a546001600160a01b031633146111915760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6018546040516333251a0b60e01b81526001600160a01b03838116600483015262010000909204909116906333251a0b90602401600060405180830381600087803b1580156111df57600080fd5b505af11580156111f3573d6000803e3d6000fd5b5050505050565b601a546001600160a01b031633146112425760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146112b55760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6103e8600c5460056112c79190613ef1565b6112d19190613ebc565b8183600c546112e09190613ef1565b6112ea9190613ebc565b101561135e5760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bac565b8082600c5461136d9190613ef1565b6113779190613ebc565b6016555050565b3361138b6012600a613ead565b6113959083613ef1565b9150816113b7826001600160a01b031660009081526020819052604090205490565b10156114055760405162461bcd60e51b815260206004820152601e60248201527f596f7520646f206e6f74206861766520656e6f75676820746f6b656e732e00006044820152606401610bac565b6001600160a01b0381166000908152602081905260408120805484929061142d908490613ede565b9091555061143d905081836132a9565b5050565b6010546001600160a01b03166000908152602081905260408120546127109061146b908490613ef1565b610c379190613ebc565b601a546001600160a01b031633146114bd5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b609681111561150e5760405162461bcd60e51b815260206004820152601660248201527f43616e6e6f74207365742061626f766520312e35252e000000000000000000006044820152606401610bac565b601555565b601a546001600160a01b0316331461155b5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b0381166115d75760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bac565b61deac196001600160a01b038216016116585760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bac565b601a5461166f906001600160a01b03166000611715565b61167a816001611715565b601a546001600160a01b0316600090815260208190526040902054156116c357601a546001600160a01b03166000818152602081905260409020546116c191908390610f6c565b505b601a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b601a546001600160a01b0316331461175d5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b601a546001600160a01b031633146117d05760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b60185460ff16156117e057600080fd5b306001600160a01b038216036118385760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bac565b601880546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b60006118706012600a613ead565b601654610c589190613ebc565b601a546001600160a01b031633146118c55760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601a546118dc906001600160a01b03166000611715565b601a80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601a546001600160a01b031633146119725760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f805460ff19166001179055565b601a546001600160a01b031633146119c95760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b80611a27576001600160a01b03828116600081815260016020526040808220805460ff1916905560185490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d190604401610bf0565b60025415611a8e576203f48060025442611a419190613ede565b11611a8e5760405162461bcd60e51b815260206004820152600f60248201527f332044617920636f6f6c646f776e2e00000000000000000000000000000000006044820152606401610bac565b6001600160a01b03821660009081526001602052604090205460ff1615611af75760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610bac565b6001600160a01b03828116600081815260016020819052604091829020805460ff1916821790554260025560185491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401610bf0565b601a546000906001600160a01b03163314611ba15760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600f54611bc090309061010090046001600160a01b03166000196129dd565b50600190565b601a546001600160a01b03163314611c0e5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b60185460ff1615611c615760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bac565b601854610100900460ff16611cb85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bac565b6018546201000090046001600160a01b0316611ce8576018805462010000600160b01b0319163062010000021790555b601854601054604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611d5a57600080fd5b505af1925050508015611d6b575060015b5060188054600160ff1991821617909155600b805490911690556010546001600160a01b031660009081526020819052604090205461271090611daf90600a613ef1565b611db99190613ebc565b6012556010546001600160a01b031660009081526020819052604090205461271090611de690601e613ef1565b611df09190613ebc565b60135542601955565b6000611e06338484612ad6565b5060019392505050565b601a546001600160a01b03163314611e585760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b306001600160a01b03821603611eb05760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610bac565b601a546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611f07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2b9190613f52565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611f76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f899190613f6b565b601a546001600160a01b03163314611fe25760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b600e805464010000000061ffff80861691820265ffff0000ffff19620100009384021665ffffffffffff19909416939093178582161792909217909255600d546000926120359290820481169116613f88565b600e5461ffff91821692508291612059918082169164010000000090910416613f88565b61ffff161115610f895760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60448201526636103332b2b99760c91b6064820152608401610bac565b601a546001600160a01b031633146121035760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6011805460ff60a81b1916600160a81b841515908102919091179091556014805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b601a546001600160a01b031633146121ae5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601854610100900460ff16156122065760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610bac565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061226f9190613faa565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e09190613faa565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa15801561232b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061234f9190613faa565b6010546001600160a01b039081166000908152600160205260409020805460ff1916905590915081166124e557816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123de9190613faa565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190613faa565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561249c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124c09190613faa565b601080546001600160a01b0319166001600160a01b0392909216919091179055612501565b601080546001600160a01b0319166001600160a01b0383161790555b600f805474ffffffffffffffffffffffffffffffffffffffff0019166101006001600160a01b03858116820292909217835560105482166000908152600160208190526040909120805460ff191690911790559154610f899230929104166000196129dd565b601a546001600160a01b031633146125af5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b0381166126055760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610bac565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b601a546001600160a01b0316331461266f5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b601854610100900460ff16156126c75760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bac565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612700573d6000803e3d6000fd5b50565b601a546001600160a01b0316331461274b5760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b8284600c5461275a9190613ef1565b6127649190613ebc565b601255600c548190612777908490613ef1565b6127819190613ebc565b601381905560125411156127e15760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610bac565b6010546001600160a01b03166000908152602081905260409020546127109061280b906096613ef1565b6128159190613ebc565b60135411156128725760405162461bcd60e51b815260206004820152602360248201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060448201526228249760e91b6064820152608401610bac565b620f4240600c546128839190613ebc565b60135410156128eb5760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bac565b620f4240600c546128fc9190613ebc565b60125410156129645760405162461bcd60e51b815260206004820152602e60248201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660448201526d103a37ba30b61039bab838363c9760911b6064820152608401610bac565b50505050565b601a546001600160a01b031633146129b25760405162461bcd60e51b815260206004820152601160248201526000805160206140398339815191526044820152606401610bac565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6001600160a01b038316612a295760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bac565b6001600160a01b038216612a755760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610bac565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612b3c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b6001600160a01b038316612b9e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bac565b60008211612c005760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bac565b6001600160a01b0384166000908152600160205260408120548190819060ff1615612c2e5760019250612c5c565b6001600160a01b03861660009081526001602052604090205460ff1615612c585760019150612c5c565b5060015b612c668787613305565b15612ef35760185460ff16612d675780612cc25760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bac565b6001600160a01b03871660009081526005602052604090205460ff16158015612d0457506001600160a01b03861660009081526005602052604090205460ff16155b15612d675760405162461bcd60e51b815260206004820152602d60248201527f546f6b656e732063616e6e6f74206265206d6f76656420756e74696c2074726160448201526c3234b7339034b9903634bb329760991b6064820152608401610bac565b8280612d705750815b15612e1f576001600160a01b03871660009081526007602052604090205460ff16158015612db757506001600160a01b03861660009081526007602052604090205460ff16155b15612e1f57601654851115612e1f5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bac565b600f546001600160a01b038781166101009092041614801590612e40575081155b15612ef3576001600160a01b03861660009081526007602052604090205460ff16612ef35760175485612e88886001600160a01b031660009081526020819052604090205490565b612e929190613f3f565b1115612ef35760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610bac565b8115612fdd57601154600160a01b900460ff16612fdd57601154600160a81b900460ff168015612f3c57506001600160a01b0386166000908152600a602052604090205460ff16155b8015612f6157506001600160a01b0387166000908152600a602052604090205460ff16155b15612fdd57306000908152602081905260409020546012548110612fdb5760135460145460ff1615612fc5576015546010546001600160a01b031660009081526020819052604090205461271091612fb891613ef1565b612fc29190613ebc565b90505b808210612fd0578091505b612fd98261341c565b505b505b612feb878787868686612ff6565b979650505050505050565b60006130028787613305565b1561309c5760185460405163ecd07a5360e01b81526001600160a01b038981166004830152888116602483015260448201889052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613085575060408051601f3d908101601f1916820190925261308291810190613f6b565b60015b61308e57600080fd5b90508061309a57600080fd5b505b6001600160a01b03871660009081526006602052604090205460019060ff16806130de57506001600160a01b03871660009081526006602052604090205460ff165b156130e7575060005b6001600160a01b0388166000908152602081905260408120805488929061310f908490613ede565b909155506000905081613122578661312e565b61312e8987878a6136a2565b9050806000808a6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546131649190613f3f565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516131b091815260200190565b60405180910390a3601854610100900460ff1661329a576131d1898961385d565b601854610100900460ff161580156131ee57506131ee8989613305565b801561321357506001600160a01b03891660009081526005602052604090205460ff16155b801561323857506001600160a01b03881660009081526005602052604090205460ff16155b8015613242575083155b1561329a5760405162461bcd60e51b815260206004820152602260248201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604482015261371760f11b6064820152608401610bac565b50600198975050505050505050565b80600c60008282546132bb9190613ede565b90915550506040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b601a546000906001600160a01b038481169116148015906133345750601a546001600160a01b03838116911614155b801561334b5750601a546001600160a01b03163214155b801561337057506001600160a01b03821660009081526004602052604090205460ff16155b801561339557506001600160a01b03831660009081526004602052604090205460ff16155b80156133ac57506001600160a01b03821661dead14155b80156133c057506001600160a01b03821615155b80156133d557506001600160a01b0383163014155b80156133f557506018546001600160a01b03848116620100009092041614155b801561341557506018546001600160a01b03838116620100009092041614155b9392505050565b6011805460ff60a01b1916600160a01b17905560408051606081018252600e5461ffff808216835262010000820481166020840152640100000000909104169181018290529060000361346f5750613692565b306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902054600019146134d257306000908152600360209081526040808320600f5461010090046001600160a01b03168452909152902060001990555b604080516002808252606082018352600092602083019080368337019050509050308160008151811061350757613507613f08565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561357a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061359e9190613faa565b816001815181106135b1576135b1613f08565b6001600160a01b039283166020918202929092010152600f5460405163791ac94760e01b81526101009091049091169063791ac947906135fe908690600090869030904290600401613fc7565b600060405180830381600087803b15801561361857600080fd5b505af1925050508015613629575060015b613634575050613692565b6011546040516000916001600160a01b03169061d6d890479084818181858888f193505050503d8060008114613686576040519150601f19603f3d011682016040523d82523d6000602084013e61368b565b606091505b5050505050505b506011805460ff60a01b19169055565b60408051606081018252600e5461ffff8082168084526201000083048216602085018190526401000000009093049091169383019390935260009283916136e99190613f88565b61ffff169050600086156137045750600d5461ffff1661372e565b851561371d5750600d5462010000900461ffff1661372e565b50600d54640100000000900461ffff165b801580613739575081155b1561374957849350505050610ccd565b6018546201000090046001600160a01b031630148015613773575046600114806137735750466038145b1561377d57506111945b600061271061378c8388613ef1565b6137969190613ebc565b9050600083856000015161ffff16836137af9190613ef1565b6137b99190613ebc565b905060006137c78284613ede565b905080156138345730600090815260208190526040812080548392906137ee908490613f3f565b909155505060405181815230906001600160a01b038d16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b8115613844576138448b836132a9565b61384e8389613ede565b9b9a5050505050505050505050565b601854610100900460ff16156138c15760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610bac565b6138cb8282613305565b1580156138e557506010546001600160a01b038281169116145b1561143d576001600160a01b038083166000908152600460209081526040808320805460ff19908116600190811790925560069093529220805490911690911790556018805461ff00191661010017908190556201000090041661395d576018805462010000600160b01b0319163062010000021790555b6011805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200161215a565b801515811461270057600080fd5b600080604083850312156139c257600080fd5b82356139cd816139a1565b915060208301356139dd816139a1565b809150509250929050565b600060208083528351808285015260005b81811015613a15578581018301518582016040015282016139f9565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461270057600080fd5b60008060408385031215613a5e57600080fd5b8235613a6981613a36565b946020939093013593505050565b600060208284031215613a8957600080fd5b813561341581613a36565b600080600060608486031215613aa957600080fd5b8335613ab481613a36565b92506020840135613ac481613a36565b929592945050506040919091013590565b60008060408385031215613ae857600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613b3657613b36613af7565b604052919050565b600067ffffffffffffffff821115613b5857613b58613af7565b5060051b60200190565b600082601f830112613b7357600080fd5b81356020613b88613b8383613b3e565b613b0d565b82815260059290921b84018101918181019086841115613ba757600080fd5b8286015b84811015613bc25780358352918301918301613bab565b509695505050505050565b60008060408385031215613be057600080fd5b823567ffffffffffffffff80821115613bf857600080fd5b818501915085601f830112613c0c57600080fd5b81356020613c1c613b8383613b3e565b82815260059290921b84018101918181019089841115613c3b57600080fd5b948201945b83861015613c62578535613c5381613a36565b82529482019490820190613c40565b96505086013592505080821115613c7857600080fd5b50613c8585828601613b62565b9150509250929050565b803561ffff81168114613ca157600080fd5b919050565b600080600060608486031215613cbb57600080fd5b613cc484613c8f565b9250613cd260208501613c8f565b9150613ce060408501613c8f565b90509250925092565b60008060408385031215613cfc57600080fd5b82356139cd81613a36565b600060208284031215613d1957600080fd5b5035919050565b60008060408385031215613d3357600080fd5b613d3c83613c8f565b9150613d4a60208401613c8f565b90509250929050565b60008060408385031215613d6657600080fd5b8235613d7181613a36565b915060208301356139dd81613a36565b60008060008060808587031215613d9757600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115613e04578160001904821115613dea57613dea613db3565b80851615613df757918102915b93841c9390800290613dce565b509250929050565b600082613e1b57506001610c37565b81613e2857506000610c37565b8160018114613e3e5760028114613e4857613e64565b6001915050610c37565b60ff841115613e5957613e59613db3565b50506001821b610c37565b5060208310610133831016604e8410600b8410161715613e87575081810a610c37565b613e918383613dc9565b8060001904821115613ea557613ea5613db3565b029392505050565b600061341560ff841683613e0c565b600082613ed957634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c3757610c37613db3565b8082028115828204841417610c3757610c37613db3565b634e487b7160e01b600052603260045260246000fd5b600061ffff808316818103613f3557613f35613db3565b6001019392505050565b80820180821115610c3757610c37613db3565b600060208284031215613f6457600080fd5b5051919050565b600060208284031215613f7d57600080fd5b8151613415816139a1565b61ffff818116838216019080821115613fa357613fa3613db3565b5092915050565b600060208284031215613fbc57600080fd5b815161341581613a36565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156140175784516001600160a01b031683529383019391830191600101613ff2565b50506001600160a01b0396909616606085015250505060800152939250505056fe43616c6c6572203d2f3d206f776e65722e000000000000000000000000000000a264697066735822122074dcc818854febb27796e65533b90aa68d3d914d1d940d89de70b5dabda3631f64736f6c63430008110033

Deployed Bytecode Sourcemap

3953:22461:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5648:73;;;;;;;;;;;;5679:42;5648:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;5648:73:0;;;;;;;;5897:28;;;;;;;;;;;;;;;;;;;391:25:1;;;379:2;364:18;5897:28:0;245:177:1;14479:153:0;;;;;;;;;;-1:-1:-1;14479:153:0;;;;;:::i;:::-;;:::i;:::-;;5120:107;;;;;;;;;;-1:-1:-1;5120:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;1137:6:1;1170:15;;;1152:34;;1222:15;;;1217:2;1202:18;;1195:43;1274:15;;1254:18;;;1247:43;;;;1115:2;1100:18;5120:107:0;931:365:1;10261:80:0;;;;;;;;;;-1:-1:-1;10333:5:0;;;;;;;;;;;;-1:-1:-1;;;10333:5:0;;;;10261:80;;;;;;;:::i;5587:26::-;;;;;;;;;;-1:-1:-1;5587:26:0;;;;;;;-1:-1:-1;;;;;5587:26:0;;;5554;;;;;;;;;;-1:-1:-1;5554:26:0;;;;;;;;;;;2267:14:1;;2260:22;2242:41;;2230:2;2215:18;5554:26:0;2102:187:1;10869:161:0;;;;;;;;;;-1:-1:-1;10869:161:0;;;;;:::i;:::-;;:::i;13908:140::-;;;;;;;;;;-1:-1:-1;13908:140:0;;;;;:::i;:::-;-1:-1:-1;;;;;14006:34:0;13982:4;14006:34;;;:25;:34;;;;;;;;;13908:140;16527:114;;;;;;;;;;;;;:::i;9996:83::-;;;;;;;;;;-1:-1:-1;10069:7:0;;9996:83;;11539:306;;;;;;;;;;-1:-1:-1;11539:306:0;;;;;:::i;:::-;;:::i;16139:264::-;;;;;;;;;;-1:-1:-1;16139:264:0;;;;;:::i;:::-;;:::i;23331:447::-;;;;;;;;;;-1:-1:-1;23331:447:0;;;;;:::i;:::-;;:::i;6005:33::-;;;;;;;;;;;;;;;;14212:141;;;;;;;;;;;;;:::i;5354:41::-;;;;;;;;;;;;5392:3;5354:41;;5932:25;;;;;;;;;;;;;;;;10085:80;;;;;;;;;;-1:-1:-1;10085:80:0;;4834:2;6368:36:1;;6356:2;6341:18;10085:80:0;6226:184:1;14830:453:0;;;;;;;;;;-1:-1:-1;14830:453:0;;;;;:::i;:::-;;:::i;14361:110::-;;;;;;;;;;-1:-1:-1;14361:110:0;;;;;:::i;:::-;;:::i;13483:140::-;;;;;;;;;;-1:-1:-1;13483:140:0;;;;;:::i;:::-;;:::i;15858:273::-;;;;;;;;;;-1:-1:-1;15858:273:0;;;;;:::i;:::-;;:::i;25965:298::-;;;;;;;;;;-1:-1:-1;25965:298:0;;;;;:::i;:::-;;:::i;5620:21::-;;;;;;;;;;-1:-1:-1;5620:21:0;;;;-1:-1:-1;;;;;5620:21:0;;;6169:34;;;;;;;;;;-1:-1:-1;6169:34:0;;;;;;;;16649:189;;;;;;;;;;-1:-1:-1;16649:189:0;;;;;:::i;:::-;;:::i;17553:217::-;;;;;;;;;;-1:-1:-1;17553:217:0;;;;;:::i;:::-;;:::i;8754:654::-;;;;;;;;;;-1:-1:-1;8754:654:0;;;;;:::i;:::-;;:::i;13631:127::-;;;;;;;;;;-1:-1:-1;13631:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13722:28:0;13698:4;13722:28;;;:19;:28;;;;;;;;;13631:127;6210:36;;;;;;;;;;-1:-1:-1;6210:36:0;;;;;;;;;;;13766:134;;;;;;;;;;-1:-1:-1;13766:134:0;;;;;:::i;:::-;;:::i;6283:26::-;;;;;;;;;;;;;;;;13113:222;;;;;;;;;;-1:-1:-1;13113:222:0;;;;;:::i;:::-;;:::i;13343:132::-;;;;;;;;;;-1:-1:-1;13343:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;13437:30:0;13413:4;13437:30;;;:21;:30;;;;;;;;;13343:132;16411:108;;;;;;;;;;;;;:::i;10571:117::-;;;;;;;;;;-1:-1:-1;10571:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;10664:16:0;10637:7;10664:16;;;;;;;;;;;;10571:117;9416:225;;;;;;;;;;;;;:::i;5728:92::-;;;;;;;;;;-1:-1:-1;5728:92:0;;;;-1:-1:-1;;;;;5728:92:0;;;14640:182;;;;;;;;;;;;;:::i;12541:564::-;;;;;;;;;;-1:-1:-1;12541:564:0;;;;;:::i;:::-;;:::i;10347:79::-;;;;;;;;;;-1:-1:-1;10417:6:0;;-1:-1:-1;;;;;10417:6:0;10347:79;;11356:175;;;;;;;;;;;;;:::i;22242:635::-;;;;;;;;;;;;;:::i;10171:84::-;;;;;;;;;;-1:-1:-1;10245:7:0;;;;;;;;;;;;-1:-1:-1;;;10245:7:0;;;;10171:84;;10696:165;;;;;;;;;;-1:-1:-1;10696:165:0;;;;;:::i;:::-;;:::i;23075:248::-;;;;;;;;;;-1:-1:-1;23075:248:0;;;;;:::i;:::-;;:::i;5964:34::-;;;;;;;;;;-1:-1:-1;5964:34:0;;;;;;;;15291:360;;;;;;;;;;-1:-1:-1;15291:360:0;;;;;:::i;:::-;;:::i;17778:263::-;;;;;;;;;;-1:-1:-1;17778:263:0;;;;;:::i;:::-;;:::i;5236:109::-;;;;;;;;;;-1:-1:-1;5236:109:0;;;;;;;;;;;;;;;;;;;;;;10432:133;;;;;;;;;;-1:-1:-1;10432:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;10534:19:0;;;10516:7;10534:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10432:133;11853:680;;;;;;;;;;-1:-1:-1;11853:680:0;;;;;:::i;:::-;;:::i;15659:191::-;;;;;;;;;;-1:-1:-1;15659:191:0;;;;;:::i;:::-;;:::i;22885:182::-;;;;;;;;;;;;;:::i;16846:699::-;;;;;;;;;;-1:-1:-1;16846:699:0;;;;;:::i;:::-;;:::i;5851:39::-;;;;;;;;;;-1:-1:-1;5851:39:0;;;;-1:-1:-1;;;5851:39:0;;;;;;14056:148;;;;;;;;;;-1:-1:-1;14056:148:0;;;;;:::i;:::-;;:::i;14479:153::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;;;;;;;;;14574:11:::1;::::0;:50:::1;::::0;-1:-1:-1;;;14574:50:0;;9568:14:1;;9561:22;14574:50:0::1;::::0;::::1;9543:41:1::0;9627:14;;9620:22;9600:18;;;9593:50;14574:11:0;;;::::1;-1:-1:-1::0;;;;;14574:11:0::1;::::0;:26:::1;::::0;9516:18:1;;14574:50:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14479:153:::0;;:::o;10869:161::-;10946:4;10963:37;10972:10;10984:7;10993:6;10963:8;:37::i;:::-;-1:-1:-1;11018:4:0;10869:161;;;;;:::o;16527:114::-;16574:7;16619:13;4834:2;16619;:13;:::i;:::-;16601:14;;:32;;;;:::i;:::-;16594:39;;16527:114;:::o;11539:306::-;-1:-1:-1;;;;;11660:19:0;;11639:4;11660:19;;;:11;:19;;;;;;;;11680:10;11660:31;;;;;;;;-1:-1:-1;;11660:52:0;11656:126;;-1:-1:-1;;;;;11729:19:0;;;;;;:11;:19;;;;;;;;11749:10;11729:31;;;;;;;:41;;11764:6;;11729:19;:41;;11764:6;;11729:41;:::i;:::-;;;;-1:-1:-1;;11656:126:0;11801:36;11811:6;11819:9;11830:6;11801:9;:36::i;:::-;11794:43;11539:306;-1:-1:-1;;;;11539:306:0:o;16139:264::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;16281:3:::1;16271:7;;:13;;;;:::i;:::-;16259:7;16248;16238;;:17;;;;:::i;:::-;16237:29;;;;:::i;:::-;:48;;16229:109;;;::::0;-1:-1:-1;;;16229:109:0;;11899:2:1;16229:109:0::1;::::0;::::1;11881:21:1::0;11938:2;11918:18;;;11911:30;11977:34;11957:18;;;11950:62;12048:18;12028;;;12021:46;12084:19;;16229:109:0::1;11697:412:1::0;16229:109:0::1;16388:7;16377;16367;;:17;;;;:::i;:::-;16366:29;;;;:::i;:::-;16349:14;:46:::0;-1:-1:-1;;16139:264:0:o;23331:447::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;23466:7:::1;:14;23447:8;:15;:33;23439:67;;;::::0;-1:-1:-1;;;23439:67:0;;12316:2:1;23439:67:0::1;::::0;::::1;12298:21:1::0;12355:2;12335:18;;;12328:30;12394:23;12374:18;;;12367:51;12435:18;;23439:67:0::1;12114:345:1::0;23439:67:0::1;23522:8;23517:254;23540:8;:15;23536:1;:19;;;23517:254;;;23621:13;4834:2;23621;:13;:::i;:::-;23610:7;23618:1;23610:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23595:10;10637:7:::0;10664:16;;;;;;;;;;;23585:49:::1;;23577:80;;;::::0;-1:-1:-1;;;23577:80:0;;12798:2:1;23577:80:0::1;::::0;::::1;12780:21:1::0;12837:2;12817:18;;;12810:30;12876:20;12856:18;;;12849:48;12914:18;;23577:80:0::1;12596:342:1::0;23577:80:0::1;23672:87;23689:10;23701:8;23710:1;23701:11;;;;;;;;;;:::i;:::-;;;;;;;4834:2;23725;:13;;;;:::i;:::-;23714:7;23722:1;23714:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;23740:5;23747::::0;23754:4:::1;23672:16;:87::i;:::-;-1:-1:-1::0;23557:3:0;::::1;::::0;::::1;:::i;:::-;;;;23517:254;;;;23331:447:::0;;:::o;14212:141::-;14265:7;10664:16;;;;;;5679:42;10664:16;;;;14304:39;;10664:16;14304:39;:::i;:::-;14293:7;;:51;;;;:::i;14830:453::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;14938:14:::1;::::0;::::1;;14937:15;14929:45;;;::::0;-1:-1:-1;;;14929:45:0;;13477:2:1;14929:45:0::1;::::0;::::1;13459:21:1::0;13516:2;13496:18;;;13489:30;13555:19;13535:18;;;13528:47;13592:18;;14929:45:0::1;13275:341:1::0;14929:45:0::1;5392:3;14993:6;:21;;;;:65;;;;;5441:3;15035:7;:23;;;;14993:65;:117;;;;;5494:3;15079:11;:31;;;;14993:117;14985:170;;;::::0;-1:-1:-1;;;14985:170:0;;13823:2:1;14985:170:0::1;::::0;::::1;13805:21:1::0;13862:2;13842:18;;;13835:30;13901:25;13881:18;;;13874:53;13944:18;;14985:170:0::1;13621:347:1::0;14985:170:0::1;15166:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;15202:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;15240:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;14830:453::o;14361:110::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;14430:11:::1;::::0;:33:::1;::::0;-1:-1:-1;;;14430:33:0;;-1:-1:-1;;;;;178:55:1;;;14430:33:0::1;::::0;::::1;160:74:1::0;14430:11:0;;;::::1;::::0;;::::1;::::0;:24:::1;::::0;133:18:1;;14430:33:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14361:110:::0;:::o;13483:140::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;-1:-1:-1;;;;;13575:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13575:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13483:140::o;15858:273::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;16003:4:::1;15989:7;;15999:1;15989:11;;;;:::i;:::-;:18;;;;:::i;:::-;15977:7;15966;15956;;:17;;;;:::i;:::-;15955:29;;;;:::i;:::-;:53;;15947:121;;;::::0;-1:-1:-1;;;15947:121:0;;14175:2:1;15947:121:0::1;::::0;::::1;14157:21:1::0;14214:2;14194:18;;;14187:30;14253:34;14233:18;;;14226:62;14324:25;14304:18;;;14297:53;14367:19;;15947:121:0::1;13973:419:1::0;15947:121:0::1;16116:7;16105;16095;;:17;;;;:::i;:::-;16094:29;;;;:::i;:::-;16079:12;:44:::0;-1:-1:-1;;15858:273:0:o;25965:298::-;26038:10;26075:13;4834:2;26075;:13;:::i;:::-;26059:29;;;;:::i;:::-;;;26128:12;26107:17;26117:6;-1:-1:-1;;;;;10664:16:0;10637:7;10664:16;;;;;;;;;;;;10571:117;26107:17;:33;;26099:76;;;;-1:-1:-1;;;26099:76:0;;14599:2:1;26099:76:0;;;14581:21:1;14638:2;14618:18;;;14611:30;14677:32;14657:18;;;14650:60;14727:18;;26099:76:0;14397:354:1;26099:76:0;-1:-1:-1;;;;;26186:15:0;;:7;:15;;;;;;;;;;:31;;26205:12;;26186:7;:31;;26205:12;;26186:31;:::i;:::-;;;;-1:-1:-1;26228:27:0;;-1:-1:-1;26234:6:0;26242:12;26228:5;:27::i;:::-;26010:253;25965:298;:::o;16649:189::-;16778:6;;-1:-1:-1;;;;;16778:6:0;16740:7;10664:16;;;;;;;;;;;5540:5;;16768:41;;16788:21;;16768:41;:::i;:::-;16767:62;;;;:::i;17553:217::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;17683:3:::1;17657:22;:29;;17649:64;;;::::0;-1:-1:-1;;;17649:64:0;;14958:2:1;17649:64:0::1;::::0;::::1;14940:21:1::0;14997:2;14977:18;;;14970:30;15036:24;15016:18;;;15009:52;15078:18;;17649:64:0::1;14756:346:1::0;17649:64:0::1;17724:13;:38:::0;17553:217::o;8754:654::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;-1:-1:-1;;;;;8833:22:0;::::1;8825:96;;;::::0;-1:-1:-1;;;8825:96:0;;15309:2:1;8825:96:0::1;::::0;::::1;15291:21:1::0;15348:2;15328:18;;;15321:30;15387:34;15367:18;;;15360:62;15458:31;15438:18;;;15431:59;15507:19;;8825:96:0::1;15107:425:1::0;8825:96:0::1;-1:-1:-1::0;;;;;;;8940:16:0;::::1;::::0;8932:90:::1;;;::::0;-1:-1:-1;;;8932:90:0;;15309:2:1;8932:90:0::1;::::0;::::1;15291:21:1::0;15348:2;15328:18;;;15321:30;15387:34;15367:18;;;15360:62;15458:31;15438:18;;;15431:59;15507:19;;8932:90:0::1;15107:425:1::0;8932:90:0::1;9053:6;::::0;9033:34:::1;::::0;-1:-1:-1;;;;;9053:6:0::1;;9033:19;:34::i;:::-;9078:35;9098:8;9108:4;9078:19;:35::i;:::-;9148:6;::::0;-1:-1:-1;;;;;9148:6:0::1;9158:1;10664:16:::0;;;;;;;;;;;9138:21;9134:127:::1;;9193:6;::::0;-1:-1:-1;;;;;9193:6:0::1;10637:7:::0;10664:16;;;;;;;;;;;9176:73:::1;::::0;9193:6;9201:8;;9211:17:::1;10571:117:::0;9176:73:::1;;9134:127;9300:6;::::0;;-1:-1:-1;;;;;9317:17:0;;::::1;-1:-1:-1::0;;;;;;9317:17:0;::::1;::::0;::::1;::::0;;;9350:40:::1;::::0;9300:6;::::1;::::0;9317:17;9300:6;;9350:40:::1;::::0;9281:16:::1;::::0;9350:40:::1;8814:594;8754:654:::0;:::o;13766:134::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;-1:-1:-1;;;;;13854:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13854:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13766:134::o;13113:222::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;13197:14:::1;::::0;::::1;;13196:15;13188:24;;;::::0;::::1;;13254:4;-1:-1:-1::0;;;;;13231:28:0;::::1;::::0;13223:55:::1;;;::::0;-1:-1:-1;;;13223:55:0;;15739:2:1;13223:55:0::1;::::0;::::1;15721:21:1::0;15778:2;15758:18;;;15751:30;15817:16;15797:18;;;15790:44;15851:18;;13223:55:0::1;15537:338:1::0;13223:55:0::1;13289:11;:38:::0;;-1:-1:-1;;;;;13289:38:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;13289:38:0;;::::1;::::0;;;::::1;::::0;;13113:222::o;16411:108::-;16454:7;16497:13;4834:2;16497;:13;:::i;:::-;16481:12;;:30;;;;:::i;9416:225::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;9495:6:::1;::::0;9475:34:::1;::::0;-1:-1:-1;;;;;9495:6:0::1;;9475:19;:34::i;:::-;9539:6;::::0;;-1:-1:-1;;;;;;9556:19:0;::::1;::::0;;;9591:42:::1;::::0;-1:-1:-1;;;;;9539:6:0;;::::1;::::0;9520:16:::1;::::0;9539:6;;9591:42:::1;::::0;9520:16;;9591:42:::1;9464:177;9416:225::o:0;14640:182::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;14793:14:::1;:21:::0;;-1:-1:-1;;14793:21:0::1;14810:4;14793:21;::::0;;14640:182::o;12541:564::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;12623:7:::1;12618:480;;-1:-1:-1::0;;;;;12647:13:0;;::::1;12663:5;12647:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;12647:21:0::1;::::0;;12683:11:::1;::::0;:34;;-1:-1:-1;;;12683:34:0;;::::1;::::0;::::1;16048:74:1::0;;;;16138:18;;;16131:50;;;;12683:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16021:18:1;;12683:34:0::1;15880:307:1::0;12618:480:0::1;12754:17;::::0;:22;12750:135:::1;;12843:6;12823:17;;12805:15;:35;;;;:::i;:::-;:44;12797:72;;;::::0;-1:-1:-1;;;12797:72:0;;16394:2:1;12797:72:0::1;::::0;::::1;16376:21:1::0;16433:2;16413:18;;;16406:30;16472:17;16452:18;;;16445:45;16507:18;;12797:72:0::1;16192:339:1::0;12797:72:0::1;-1:-1:-1::0;;;;;12908:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12907:14;12899:54;;;::::0;-1:-1:-1;;;12899:54:0;;16738:2:1;12899:54:0::1;::::0;::::1;16720:21:1::0;16777:2;16757:18;;;16750:30;16816:29;16796:18;;;16789:57;16863:18;;12899:54:0::1;16536:351:1::0;12899:54:0::1;-1:-1:-1::0;;;;;12968:13:0;;::::1;;::::0;;;12984:4:::1;12968:13;::::0;;;;;;;;:20;;-1:-1:-1;;12968:20:0::1;::::0;::::1;::::0;;13023:15:::1;13003:17;:35:::0;13053:11:::1;::::0;:33;;-1:-1:-1;;;13053:33:0;;::::1;::::0;::::1;16048:74:1::0;;;;16138:18;;;16131:50;13053:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;16021:18:1;;13053:33:0::1;15880:307:1::0;11356:175:0;8608:6;;11422:4;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;11471:9:::1;::::0;11439:62:::1;::::0;11456:4:::1;::::0;11471:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11471:9:0::1;-1:-1:-1::0;;11439:8:0::1;:62::i;:::-;-1:-1:-1::0;11519:4:0::1;11356:175:::0;:::o;22242:635::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;22304:14:::1;::::0;::::1;;22303:15;22295:52;;;::::0;-1:-1:-1;;;22295:52:0;;17094:2:1;22295:52:0::1;::::0;::::1;17076:21:1::0;17133:2;17113:18;;;17106:30;17172:26;17152:18;;;17145:54;17216:18;;22295:52:0::1;16892:348:1::0;22295:52:0::1;22366:16;::::0;::::1;::::0;::::1;;;22358:53;;;::::0;-1:-1:-1;;;22358:53:0;;17447:2:1;22358:53:0::1;::::0;::::1;17429:21:1::0;17486:2;17466:18;;;17459:30;17525:26;17505:18;;;17498:54;17569:18;;22358:53:0::1;17245:348:1::0;22358:53:0::1;22434:11;::::0;;;::::1;-1:-1:-1::0;;;;;22434:11:0::1;22422:106;;22476:11;:40:::0;;-1:-1:-1;;;;;;22476:40:0::1;22510:4;22476:40:::0;::::1;;::::0;;22422:106:::1;22542:11;::::0;22564:6:::1;::::0;22542:87:::1;::::0;-1:-1:-1;;;22542:87:0;;-1:-1:-1;;;;;22564:6:0;;::::1;22542:87;::::0;::::1;17821:74:1::0;17943:10;22579:12:0::1;17931:23:1::0;17911:18;;;17904:51;18003:18;22601:15:0::1;17991:31:1::0;17971:18;;;17964:59;4834:2:0::1;18039:18:1::0;;;18032:45;22542:11:0;;;::::1;;::::0;:21:::1;::::0;17793:19:1;;22542:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;22538:103:::0;22651:14:::1;:21:::0;;22668:4:::1;-1:-1:-1::0;;22651:21:0;;::::1;;::::0;;;22683:23:::1;:31:::0;;;;::::1;::::0;;22752:6:::1;::::0;-1:-1:-1;;;;;22752:6:0::1;-1:-1:-1::0;10664:16:0;;;;;;;;;;;22768:5:::1;::::0;22742:22:::1;::::0;22762:2:::1;22742:22;:::i;:::-;22741:32;;;;:::i;:::-;22725:13;:48:::0;22808:6:::1;::::0;-1:-1:-1;;;;;22808:6:0::1;10637:7:::0;10664:16;;;;;;;;;;;22824:5:::1;::::0;22798:22:::1;::::0;22818:2:::1;22798:22;:::i;:::-;22797:32;;;;:::i;:::-;22784:10;:45:::0;22854:15:::1;22840:11;:29:::0;22242:635::o;10696:165::-;10774:4;10791:40;10801:10;10813:9;10824:6;10791:9;:40::i;:::-;-1:-1:-1;10849:4:0;;10696:165;-1:-1:-1;;;10696:165:0:o;23075:248::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;23174:4:::1;-1:-1:-1::0;;;;;23157:22:0;::::1;::::0;23149:62:::1;;;::::0;-1:-1:-1;;;23149:62:0;;18290:2:1;23149:62:0::1;::::0;::::1;18272:21:1::0;18329:2;18309:18;;;18302:30;18368:29;18348:18;;;18341:57;18415:18;;23149:62:0::1;18088:351:1::0;23149:62:0::1;23276:6;::::0;23284:30:::1;::::0;-1:-1:-1;;;23284:30:0;;23308:4:::1;23284:30;::::0;::::1;160:74:1::0;23244:5:0;;-1:-1:-1;;;;;23261:14:0;;::::1;::::0;::::1;::::0;23276:6;;;::::1;::::0;23261:14;;23284:15:::1;::::0;133:18:1;;23284:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23261:54;::::0;-1:-1:-1;;;;;;23261:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18825:55:1;;;23261:54:0::1;::::0;::::1;18807:74:1::0;18897:18;;;18890:34;18780:18;;23261:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15291:360::-:0;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;15374:7:::1;:29:::0;;15447;15374::::1;::::0;;::::1;15447::::0;;::::1;-1:-1:-1::0;;15374:29:0;;;::::1;15447::::0;-1:-1:-1;;15447:29:0;;;;;;;15414:22;;::::1;15447:29:::0;;;;::::1;::::0;;;15522:9:::1;:17:::0;15374::::1;::::0;15503:36:::1;::::0;15522:17;;::::1;::::0;::::1;::::0;15503:16:::1;:36;:::i;:::-;15578:7;:12:::0;15487:52:::1;::::0;;::::1;::::0;-1:-1:-1;15487:52:0;;15558:32:::1;::::0;15578:12;;::::1;::::0;15558:17;;;::::1;;:32;:::i;:::-;:41;;;;15550:93;;;::::0;-1:-1:-1;;;15550:93:0;;19560:2:1;15550:93:0::1;::::0;::::1;19542:21:1::0;19599:2;19579:18;;;19572:30;19638:34;19618:18;;;19611:62;-1:-1:-1;;;19689:18:1;;;19682:37;19736:19;;15550:93:0::1;19358:403:1::0;17778:263:0;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;17887:19:::1;:33:::0;;-1:-1:-1;;;;17887:33:0::1;-1:-1:-1::0;;;17887:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;17931:22:::1;:47:::0;;-1:-1:-1;;17931:47:0::1;::::0;::::1;;;::::0;;17994:39:::1;::::0;2242:41:1;;;17994:39:0::1;::::0;2230:2:1;2215:18;17994:39:0::1;;;;;;;;17778:263:::0;;:::o;11853:680::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;11933:16:::1;::::0;::::1;::::0;::::1;;;11932:17;11924:60;;;::::0;-1:-1:-1;;;11924:60:0;;19968:2:1;11924:60:0::1;::::0;::::1;19950:21:1::0;20007:2;19987:18;;;19980:30;20046:32;20026:18;;;20019:60;20096:18;;11924:60:0::1;19766:354:1::0;11924:60:0::1;11995:20;12028:9;11995:43;;12049:16;12079:10;-1:-1:-1::0;;;;;12079:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12068:40:0::1;;12117:4;12124:10;-1:-1:-1::0;;;;;12124:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12068:74;::::0;-1:-1:-1;;;;;;12068:74:0::1;::::0;;;;;;-1:-1:-1;;;;;20634:15:1;;;12068:74:0::1;::::0;::::1;20616:34:1::0;20686:15;;20666:18;;;20659:43;20528:18;;12068:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12161:6;::::0;-1:-1:-1;;;;;12161:6:0;;::::1;12171:5;12153:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;12153:23:0::1;::::0;;12049:93;;-1:-1:-1;12191:22:0;::::1;12187:200;;12250:10;-1:-1:-1::0;;;;;12250:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;12239:43:0::1;;12291:4;12298:10;-1:-1:-1::0;;;;;12298:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12239:77;::::0;-1:-1:-1;;;;;;12239:77:0::1;::::0;;;;;;-1:-1:-1;;;;;20634:15:1;;;12239:77:0::1;::::0;::::1;20616:34:1::0;20686:15;;20666:18;;;20659:43;20528:18;;12239:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12230:6;:86:::0;;-1:-1:-1;;;;;;12230:86:0::1;-1:-1:-1::0;;;;;12230:86:0;;;::::1;::::0;;;::::1;::::0;;12187:200:::1;;;12358:6;:17:::0;;-1:-1:-1;;;;;;12358:17:0::1;-1:-1:-1::0;;;;;12358:17:0;::::1;;::::0;;12187:200:::1;12397:9;:22:::0;;-1:-1:-1;;12397:22:0::1;;-1:-1:-1::0;;;;;12397:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12438:6:::1;::::0;;::::1;-1:-1:-1::0;12430:15:0;;;-1:-1:-1;12430:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12430:22:0::1;::::0;;::::1;::::0;;12495:9;;12463:62:::1;::::0;12480:4:::1;::::0;12495:9;::::1;;-1:-1:-1::0;;12463:8:0::1;:62::i;15659:191::-:0;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;-1:-1:-1;;;;;15744:23:0;::::1;15736:59;;;::::0;-1:-1:-1;;;15736:59:0;;20915:2:1;15736:59:0::1;::::0;::::1;20897:21:1::0;20954:2;20934:18;;;20927:30;20993:25;20973:18;;;20966:53;21036:18;;15736:59:0::1;20713:347:1::0;15736:59:0::1;15806:15;:36:::0;;-1:-1:-1;;;;;;15806:36:0::1;-1:-1:-1::0;;;;;15806:36:0;;;::::1;::::0;;;::::1;::::0;;15659:191::o;22885:182::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;22952:16:::1;::::0;::::1;::::0;::::1;;;22951:17;22943:58;;;::::0;-1:-1:-1;;;22943:58:0;;21267:2:1;22943:58:0::1;::::0;::::1;21249:21:1::0;21306:2;21286:18;;;21279:30;21345;21325:18;;;21318:58;21393:18;;22943:58:0::1;21065:352:1::0;22943:58:0::1;23020:6;::::0;23012:47:::1;::::0;-1:-1:-1;;;;;23020:6:0;;::::1;::::0;23037:21:::1;23012:47:::0;::::1;;;::::0;23020:6:::1;23012:47:::0;23020:6;23012:47;23037:21;23020:6;23012:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;22885:182::o:0;16846:699::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;17046:16:::1;17026;17016:7;;:26;;;;:::i;:::-;17015:47;;;;:::i;:::-;16999:13;:63:::0;17087:7:::1;::::0;17114:13;;17087:23:::1;::::0;17097:13;;17087:23:::1;:::i;:::-;17086:41;;;;:::i;:::-;17073:10;:54:::0;;;17146:13:::1;::::0;:27:::1;;17138:73;;;::::0;-1:-1:-1;;;17138:73:0;;21624:2:1;17138:73:0::1;::::0;::::1;21606:21:1::0;21663:2;21643:18;;;21636:30;21702:34;21682:18;;;21675:62;-1:-1:-1;;;21753:18:1;;;21746:31;21794:19;;17138:73:0::1;21422:397:1::0;17138:73:0::1;17255:6;::::0;-1:-1:-1;;;;;17255:6:0::1;10637:7:::0;10664:16;;;;;;;;;;;5540:5:::1;::::0;17245:23:::1;::::0;17265:3:::1;17245:23;:::i;:::-;17244:44;;;;:::i;:::-;17230:10;;:58;;17222:106;;;::::0;-1:-1:-1;;;17222:106:0;;22026:2:1;17222:106:0::1;::::0;::::1;22008:21:1::0;22065:2;22045:18;;;22038:30;22104:34;22084:18;;;22077:62;-1:-1:-1;;;22155:18:1;;;22148:33;22198:19;;17222:106:0::1;21824:399:1::0;17222:106:0::1;17371:9;17361:7;;:19;;;;:::i;:::-;17347:10;;:33;;17339:92;;;::::0;-1:-1:-1;;;17339:92:0;;22430:2:1;17339:92:0::1;::::0;::::1;22412:21:1::0;22469:2;22449:18;;;22442:30;22508:34;22488:18;;;22481:62;-1:-1:-1;;;22559:18:1;;;22552:44;22613:19;;17339:92:0::1;22228:410:1::0;17339:92:0::1;17477:9;17467:7;;:19;;;;:::i;:::-;17450:13;;:36;;17442:95;;;::::0;-1:-1:-1;;;17442:95:0;;22430:2:1;17442:95:0::1;::::0;::::1;22412:21:1::0;22469:2;22449:18;;;22442:30;22508:34;22488:18;;;22481:62;-1:-1:-1;;;22559:18:1;;;22552:44;22613:19;;17442:95:0::1;22228:410:1::0;17442:95:0::1;16846:699:::0;;;;:::o;14056:148::-;8608:6;;-1:-1:-1;;;;;8608:6:0;8618:10;8608:20;8600:50;;;;-1:-1:-1;;;8600:50:0;;9237:2:1;8600:50:0;;;9219:21:1;9276:2;9256:18;;;9249:30;-1:-1:-1;;;;;;;;;;;9295:18:1;;;9288:47;9352:18;;8600:50:0;9035:341:1;8600:50:0;-1:-1:-1;;;;;14152:34:0;;;::::1;;::::0;;;:25:::1;:34;::::0;;;;:44;;-1:-1:-1;;14152:44:0::1;::::0;::::1;;::::0;;;::::1;::::0;;14056:148::o;11038:310::-;-1:-1:-1;;;;;11133:20:0;;11125:52;;;;-1:-1:-1;;;11125:52:0;;22845:2:1;11125:52:0;;;22827:21:1;22884:2;22864:18;;;22857:30;-1:-1:-1;;;22903:18:1;;;22896:49;22962:18;;11125:52:0;22643:343:1;11125:52:0;-1:-1:-1;;;;;11196:21:0;;11188:53;;;;-1:-1:-1;;;11188:53:0;;22845:2:1;11188:53:0;;;22827:21:1;22884:2;22864:18;;;22857:30;-1:-1:-1;;;22903:18:1;;;22896:49;22962:18;;11188:53:0;22643:343:1;11188:53:0;-1:-1:-1;;;;;11254:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11307:33;;391:25:1;;;11307:33:0;;364:18:1;11307:33:0;;;;;;;11038:310;;;:::o;18503:2286::-;18582:4;-1:-1:-1;;;;;18607:18:0;;18599:68;;;;-1:-1:-1;;;18599:68:0;;23193:2:1;18599:68:0;;;23175:21:1;23232:2;23212:18;;;23205:30;23271:34;23251:18;;;23244:62;-1:-1:-1;;;23322:18:1;;;23315:35;23367:19;;18599:68:0;22991:401:1;18599:68:0;-1:-1:-1;;;;;18686:16:0;;18678:64;;;;-1:-1:-1;;;18678:64:0;;23599:2:1;18678:64:0;;;23581:21:1;23638:2;23618:18;;;23611:30;23677:34;23657:18;;;23650:62;-1:-1:-1;;;23728:18:1;;;23721:33;23771:19;;18678:64:0;23397:399:1;18678:64:0;18770:1;18761:6;:10;18753:64;;;;-1:-1:-1;;;18753:64:0;;24003:2:1;18753:64:0;;;23985:21:1;24042:2;24022:18;;;24015:30;24081:34;24061:18;;;24054:62;-1:-1:-1;;;24132:18:1;;;24125:39;24181:19;;18753:64:0;23801:405:1;18753:64:0;-1:-1:-1;;;;;18916:13:0;;18828:8;18916:13;;;:7;:13;;;;;;18828:8;;;;18916:13;;18912:162;;;18952:4;18946:10;;18912:162;;;-1:-1:-1;;;;;18978:11:0;;;;;;:7;:11;;;;;;;;18974:100;;;19013:4;19006:11;;18974:100;;;-1:-1:-1;19058:4:0;18974:100;19088:20;19099:4;19105:2;19088:10;:20::i;:::-;19084:874;;;19129:14;;;;19125:319;;19169:5;19164:265;;19199:34;;-1:-1:-1;;;19199:34:0;;24413:2:1;19199:34:0;;;24395:21:1;24452:2;24432:18;;;24425:30;24491:26;24471:18;;;24464:54;24535:18;;19199:34:0;24211:348:1;19164:265:0;-1:-1:-1;;;;;19264:31:0;;;;;;:25;:31;;;;;;;;19263:32;:66;;;;-1:-1:-1;;;;;;19300:29:0;;;;;;:25;:29;;;;;;;;19299:30;19263:66;19259:170;;;19354:55;;-1:-1:-1;;;19354:55:0;;24766:2:1;19354:55:0;;;24748:21:1;24805:2;24785:18;;;24778:30;24844:34;24824:18;;;24817:62;-1:-1:-1;;;24895:18:1;;;24888:43;24948:19;;19354:55:0;24564:409:1;19259:170:0;19462:3;:11;;;;19469:4;19462:11;19458:232;;;-1:-1:-1;;;;;19498:27:0;;;;;;:21;:27;;;;;;;;19497:28;:58;;;;-1:-1:-1;;;;;;19530:25:0;;;;;;:21;:25;;;;;;;;19529:26;19497:58;19493:182;;;19598:12;;19588:6;:22;;19580:75;;;;-1:-1:-1;;;19580:75:0;;25180:2:1;19580:75:0;;;25162:21:1;25219:2;25199:18;;;25192:30;25258:34;25238:18;;;25231:62;-1:-1:-1;;;25309:18:1;;;25302:38;25357:19;;19580:75:0;24978:404:1;19580:75:0;19722:9;;-1:-1:-1;;;;;19708:24:0;;;19722:9;;;;;19708:24;;;;:33;;;19737:4;19736:5;19708:33;19704:243;;;-1:-1:-1;;;;;19767:25:0;;;;;;:21;:25;;;;;;;;19762:170;;19851:14;;19841:6;19825:13;19835:2;-1:-1:-1;;;;;10664:16:0;10637:7;10664:16;;;;;;;;;;;;10571:117;19825:13;:22;;;;:::i;:::-;:40;;19817:95;;;;-1:-1:-1;;;19817:95:0;;25589:2:1;19817:95:0;;;25571:21:1;25628:2;25608:18;;;25601:30;25667:34;25647:18;;;25640:62;-1:-1:-1;;;25718:18:1;;;25711:40;25768:19;;19817:95:0;25387:406:1;19817:95:0;19974:4;19970:742;;;20000:6;;-1:-1:-1;;;20000:6:0;;;;19995:706;;20031:19;;-1:-1:-1;;;20031:19:0;;;;:64;;;;-1:-1:-1;;;;;;20075:20:0;;;;;;:16;:20;;;;;;;;20074:21;20031:64;:111;;;;-1:-1:-1;;;;;;20120:22:0;;;;;;:16;:22;;;;;;;;20119:23;20031:111;20027:659;;;20234:4;20185:28;10664:16;;;;;;;;;;;20291:13;;20267:37;;20263:404;;20351:10;;20392:22;;;;20388:97;;;20449:13;;20439:6;;-1:-1:-1;;;;;20439:6:0;10637:7;10664:16;;;;;;;;;;;5540:5;;20429:33;;;:::i;:::-;20428:54;;;;:::i;:::-;20418:64;;20388:97;20539:7;20515:20;:31;20511:72;;20573:7;20550:30;;20511:72;20609:34;20622:20;20609:12;:34::i;:::-;20306:361;20263:404;20162:524;20027:659;20729:52;20746:4;20752:2;20756:6;20764:3;20769:4;20775:5;20729:16;:52::i;:::-;20722:59;18503:2286;-1:-1:-1;;;;;;;18503:2286:0:o;23786:1055::-;23905:4;23926:20;23937:4;23943:2;23926:10;:20::i;:::-;23922:228;;;23981:11;;:39;;-1:-1:-1;;;23981:39:0;;-1:-1:-1;;;;;26079:15:1;;;23981:39:0;;;26061:34:1;26131:15;;;26111:18;;;26104:43;26163:18;;;26156:34;;;23950:12:0;;23981:11;;;;;:21;;25973:18:1;;23981:39:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;23981:39:0;;;;;;;;-1:-1:-1;;23981:39:0;;;;;;;;;;;;:::i;:::-;;;23977:122;;24088:8;;;23977:122;24071:5;-1:-1:-1;24117:7:0;24113:26;;24128:8;;;24113:26;23948:202;23922:228;-1:-1:-1;;;;;24194:25:0;;24160:12;24194:25;;;:19;:25;;;;;;24175:4;;24194:25;;;:52;;-1:-1:-1;;;;;;24223:23:0;;;;;;:19;:23;;;;;;;;24194:52;24190:99;;;-1:-1:-1;24272:5:0;24190:99;-1:-1:-1;;;;;24299:13:0;;:7;:13;;;;;;;;;;:23;;24316:6;;24299:7;:23;;24316:6;;24299:23;:::i;:::-;;;;-1:-1:-1;24333:22:0;;-1:-1:-1;24359:7:0;24358:55;;24407:6;24358:55;;;24370:34;24380:4;24386:3;24391:4;24397:6;24370:9;:34::i;:::-;24333:80;;24439:14;24424:7;:11;24432:2;-1:-1:-1;;;;;24424:11:0;-1:-1:-1;;;;;24424:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;24484:2;-1:-1:-1;;;;;24469:34:0;24478:4;-1:-1:-1;;;;;24469:34:0;;24488:14;24469:34;;;;391:25:1;;379:2;364:18;;245:177;24469:34:0;;;;;;;;24519:16;;;;;;;24514:298;;24552:28;24571:4;24577:2;24552:18;:28::i;:::-;24600:16;;;;;;;24599:17;:41;;;;;24620:20;24631:4;24637:2;24620:10;:20::i;:::-;24599:77;;;;-1:-1:-1;;;;;;24645:31:0;;;;;;:25;:31;;;;;;;;24644:32;24599:77;:111;;;;-1:-1:-1;;;;;;24681:29:0;;;;;;:25;:29;;;;;;;;24680:30;24599:111;:121;;;;;24715:5;24714:6;24599:121;24595:206;;;24741:44;;-1:-1:-1;;;24741:44:0;;26403:2:1;24741:44:0;;;26385:21:1;26442:2;26422:18;;;26415:30;26481:34;26461:18;;;26454:62;-1:-1:-1;;;26532:18:1;;;26525:32;26574:19;;24741:44:0;26201:398:1;24595:206:0;-1:-1:-1;24829:4:0;;23786:1055;-1:-1:-1;;;;;;;;23786:1055:0:o;26271:140::-;26347:6;26336:7;;:17;;;;;;;:::i;:::-;;;;-1:-1:-1;;26369:34:0;;391:25:1;;;26392:1:0;;-1:-1:-1;;;;;26369:34:0;;;;;379:2:1;364:18;26369:34:0;;;;;;;26271:140;;:::o;18049:446::-;18150:6;;18118:4;;-1:-1:-1;;;;;18142:14:0;;;18150:6;;18142:14;;;;:43;;-1:-1:-1;18179:6:0;;-1:-1:-1;;;;;18173:12:0;;;18179:6;;18173:12;;18142:43;:79;;;;-1:-1:-1;18215:6:0;;-1:-1:-1;;;;;18215:6:0;18202:9;:19;;18142:79;:118;;;;-1:-1:-1;;;;;;18239:21:0;;;;;;:17;:21;;;;;;;;18238:22;18142:118;:159;;;;-1:-1:-1;;;;;;18278:23:0;;;;;;:17;:23;;;;;;;;18277:24;18142:159;:186;;;;-1:-1:-1;;;;;;18318:10:0;;5679:42;18318:10;;18142:186;:219;;;;-1:-1:-1;;;;;;18345:16:0;;;;18142:219;:257;;;;-1:-1:-1;;;;;;18378:21:0;;18394:4;18378:21;;18142:257;:302;;;;-1:-1:-1;18432:11:0;;-1:-1:-1;;;;;18416:28:0;;;18432:11;;;;;18416:28;;18142:302;:345;;;;-1:-1:-1;18475:11:0;;-1:-1:-1;;;;;18461:26:0;;;18475:11;;;;;18461:26;;18142:345;18135:352;18049:446;-1:-1:-1;;;18049:446:0:o;20797:866::-;6474:6;:13;;-1:-1:-1;;;;6474:13:0;-1:-1:-1;;;6474:13:0;;;20880:30:::1;::::0;;::::1;::::0;::::1;::::0;;20903:7:::1;20880:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;;;;::::1;;::::0;;;;;;;6474:13;20925:21;20921:60:::1;;20963:7;;;20921:60;21017:4;20997:26;::::0;;;:11:::1;:26;::::0;;;;;;;21032:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21032:9:0::1;20997:46:::0;;;;;;;;-1:-1:-1;;20997:67:0::1;20993:166;;21101:4;21081:26;::::0;;;:11:::1;:26;::::0;;;;;;;21116:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;21116:9:0::1;21081:46:::0;;;;;;;-1:-1:-1;;21081:66:0;;20993:166:::1;21195:16;::::0;;21209:1:::1;21195:16:::0;;;;;::::1;::::0;;21171:21:::1;::::0;21195:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21195:16:0::1;21171:40;;21240:4;21222;21227:1;21222:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21222:23:0::1;;;-1:-1:-1::0;;;;;21222:23:0::1;;;::::0;::::1;21266:9;;;;;;;;;-1:-1:-1::0;;;;;21266:9:0::1;-1:-1:-1::0;;;;;21266:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21256:4;21261:1;21256:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21256:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21299:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;21299:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;21374:20;;21409:1:::1;::::0;21425:4;;21452::::1;::::0;21472:15:::1;::::0;21299:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;21295:246;;21523:7;;;;21295:246;21589:15;::::0;:66:::1;::::0;21553:12:::1;::::0;-1:-1:-1;;;;;21589:15:0::1;::::0;21645:5:::1;::::0;21617:21:::1;::::0;21553:12;21589:66;21553:12;21589:66;21617:21;21589:15;21645:5;21589:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;6498:1:0::1;-1:-1:-1::0;6510:6:0;:14;;-1:-1:-1;;;;6510:14:0;;;20797:866::o;24849:1108::-;24957:30;;;;;;;;24980:7;24957:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24937:7;;;;25014:32;;24957:30;25014:32;:::i;:::-;24998:48;;;;25057:18;25090:3;25086:205;;;-1:-1:-1;25123:9:0;:16;;;25086:205;;;25161:4;25157:134;;;-1:-1:-1;25195:9:0;:17;;;;;;25157:134;;;-1:-1:-1;25258:9:0;:21;;;;;;25157:134;25305:15;;;:29;;-1:-1:-1;25324:10:0;;25305:29;25301:53;;;25345:6;25338:13;;;;;;;25301:53;25376:11;;;;;-1:-1:-1;;;;;25376:11:0;25400:4;25368:37;:110;;;;;25423:13;25440:1;25423:18;:54;;;;25458:13;25475:2;25458:19;25423:54;25364:138;;;-1:-1:-1;25495:4:0;25364:138;25512:17;5540:5;25532:19;25541:10;25532:6;:19;:::i;:::-;:38;;;;:::i;:::-;25512:58;;25581:18;25630:5;25615:6;:11;;;25603:23;;:9;:23;;;;:::i;:::-;25602:33;;;;:::i;:::-;25581:54;-1:-1:-1;25646:15:0;25664:22;25581:54;25664:9;:22;:::i;:::-;25646:40;-1:-1:-1;25701:11:0;;25697:135;;25745:4;25729:7;:22;;;;;;;;;;:33;;25755:7;;25729;:33;;25755:7;;25729:33;:::i;:::-;;;;-1:-1:-1;;25782:38:0;;391:25:1;;;25805:4:0;;-1:-1:-1;;;;;25782:38:0;;;;;379:2:1;364:18;25782:38:0;;;;;;;25697:135;25846:14;;25842:70;;25877:23;25883:4;25889:10;25877:5;:23::i;:::-;25931:18;25940:9;25931:6;:18;:::i;:::-;25924:25;24849:1108;-1:-1:-1;;;;;;;;;;;24849:1108:0:o;21671:563::-;21754:16;;;;;;;21753:17;21745:65;;;;-1:-1:-1;;;21745:65:0;;28047:2:1;21745:65:0;;;28029:21:1;28086:2;28066:18;;;28059:30;28125:34;28105:18;;;28098:62;-1:-1:-1;;;28176:18:1;;;28169:33;28219:19;;21745:65:0;27845:399:1;21745:65:0;21826:20;21837:4;21843:2;21826:10;:20::i;:::-;21825:21;:37;;;;-1:-1:-1;21856:6:0;;-1:-1:-1;;;;;21850:12:0;;;21856:6;;21850:12;21825:37;21821:406;;;-1:-1:-1;;;;;21879:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;21879:30:0;;;21905:4;21879:30;;;;;;21924:19;:25;;;;;:32;;;;;;;;;;21971:16;:23;;-1:-1:-1;;21971:23:0;21879:30;21971:23;;;;;22021:11;;;;22009:114;;22067:11;:40;;-1:-1:-1;;;;;;22067:40:0;22101:4;22067:40;;;;;22009:114;22137:19;:26;;-1:-1:-1;;;;22137:26:0;-1:-1:-1;;;22137:26:0;;;22183:32;;-1:-1:-1;2242:41:1;;22183:32:0;;2230:2:1;2215:18;22183:32:0;2102:187:1;427:118;513:5;506:13;499:21;492:5;489:32;479:60;;535:1;532;525:12;550:376;612:6;620;673:2;661:9;652:7;648:23;644:32;641:52;;;689:1;686;679:12;641:52;728:9;715:23;747:28;769:5;747:28;:::i;:::-;794:5;-1:-1:-1;851:2:1;836:18;;823:32;864:30;823:32;864:30;:::i;:::-;913:7;903:17;;;550:376;;;;;:::o;1301:548::-;1413:4;1442:2;1471;1460:9;1453:21;1503:6;1497:13;1546:6;1541:2;1530:9;1526:18;1519:34;1571:1;1581:140;1595:6;1592:1;1589:13;1581:140;;;1690:14;;;1686:23;;1680:30;1656:17;;;1675:2;1652:26;1645:66;1610:10;;1581:140;;;1585:3;1770:1;1765:2;1756:6;1745:9;1741:22;1737:31;1730:42;1840:2;1833;1829:7;1824:2;1816:6;1812:15;1808:29;1797:9;1793:45;1789:54;1781:62;;;;1301:548;;;;:::o;2294:154::-;-1:-1:-1;;;;;2373:5:1;2369:54;2362:5;2359:65;2349:93;;2438:1;2435;2428:12;2453:315;2521:6;2529;2582:2;2570:9;2561:7;2557:23;2553:32;2550:52;;;2598:1;2595;2588:12;2550:52;2637:9;2624:23;2656:31;2681:5;2656:31;:::i;:::-;2706:5;2758:2;2743:18;;;;2730:32;;-1:-1:-1;;;2453:315:1:o;2773:247::-;2832:6;2885:2;2873:9;2864:7;2860:23;2856:32;2853:52;;;2901:1;2898;2891:12;2853:52;2940:9;2927:23;2959:31;2984:5;2959:31;:::i;3025:456::-;3102:6;3110;3118;3171:2;3159:9;3150:7;3146:23;3142:32;3139:52;;;3187:1;3184;3177:12;3139:52;3226:9;3213:23;3245:31;3270:5;3245:31;:::i;:::-;3295:5;-1:-1:-1;3352:2:1;3337:18;;3324:32;3365:33;3324:32;3365:33;:::i;:::-;3025:456;;3417:7;;-1:-1:-1;;;3471:2:1;3456:18;;;;3443:32;;3025:456::o;3486:248::-;3554:6;3562;3615:2;3603:9;3594:7;3590:23;3586:32;3583:52;;;3631:1;3628;3621:12;3583:52;-1:-1:-1;;3654:23:1;;;3724:2;3709:18;;;3696:32;;-1:-1:-1;3486:248:1:o;3739:127::-;3800:10;3795:3;3791:20;3788:1;3781:31;3831:4;3828:1;3821:15;3855:4;3852:1;3845:15;3871:275;3942:2;3936:9;4007:2;3988:13;;-1:-1:-1;;3984:27:1;3972:40;;4042:18;4027:34;;4063:22;;;4024:62;4021:88;;;4089:18;;:::i;:::-;4125:2;4118:22;3871:275;;-1:-1:-1;3871:275:1:o;4151:183::-;4211:4;4244:18;4236:6;4233:30;4230:56;;;4266:18;;:::i;:::-;-1:-1:-1;4311:1:1;4307:14;4323:4;4303:25;;4151:183::o;4339:662::-;4393:5;4446:3;4439:4;4431:6;4427:17;4423:27;4413:55;;4464:1;4461;4454:12;4413:55;4500:6;4487:20;4526:4;4550:60;4566:43;4606:2;4566:43;:::i;:::-;4550:60;:::i;:::-;4644:15;;;4730:1;4726:10;;;;4714:23;;4710:32;;;4675:12;;;;4754:15;;;4751:35;;;4782:1;4779;4772:12;4751:35;4818:2;4810:6;4806:15;4830:142;4846:6;4841:3;4838:15;4830:142;;;4912:17;;4900:30;;4950:12;;;;4863;;4830:142;;;-1:-1:-1;4990:5:1;4339:662;-1:-1:-1;;;;;;4339:662:1:o;5006:1215::-;5124:6;5132;5185:2;5173:9;5164:7;5160:23;5156:32;5153:52;;;5201:1;5198;5191:12;5153:52;5241:9;5228:23;5270:18;5311:2;5303:6;5300:14;5297:34;;;5327:1;5324;5317:12;5297:34;5365:6;5354:9;5350:22;5340:32;;5410:7;5403:4;5399:2;5395:13;5391:27;5381:55;;5432:1;5429;5422:12;5381:55;5468:2;5455:16;5490:4;5514:60;5530:43;5570:2;5530:43;:::i;5514:60::-;5608:15;;;5690:1;5686:10;;;;5678:19;;5674:28;;;5639:12;;;;5714:19;;;5711:39;;;5746:1;5743;5736:12;5711:39;5770:11;;;;5790:217;5806:6;5801:3;5798:15;5790:217;;;5886:3;5873:17;5903:31;5928:5;5903:31;:::i;:::-;5947:18;;5823:12;;;;5985;;;;5790:217;;;6026:5;-1:-1:-1;;6069:18:1;;6056:32;;-1:-1:-1;;6100:16:1;;;6097:36;;;6129:1;6126;6119:12;6097:36;;6152:63;6207:7;6196:8;6185:9;6181:24;6152:63;:::i;:::-;6142:73;;;5006:1215;;;;;:::o;6415:159::-;6482:20;;6542:6;6531:18;;6521:29;;6511:57;;6564:1;6561;6554:12;6511:57;6415:159;;;:::o;6579:328::-;6653:6;6661;6669;6722:2;6710:9;6701:7;6697:23;6693:32;6690:52;;;6738:1;6735;6728:12;6690:52;6761:28;6779:9;6761:28;:::i;:::-;6751:38;;6808:37;6841:2;6830:9;6826:18;6808:37;:::i;:::-;6798:47;;6864:37;6897:2;6886:9;6882:18;6864:37;:::i;:::-;6854:47;;6579:328;;;;;:::o;6912:382::-;6977:6;6985;7038:2;7026:9;7017:7;7013:23;7009:32;7006:52;;;7054:1;7051;7044:12;7006:52;7093:9;7080:23;7112:31;7137:5;7112:31;:::i;7299:180::-;7358:6;7411:2;7399:9;7390:7;7386:23;7382:32;7379:52;;;7427:1;7424;7417:12;7379:52;-1:-1:-1;7450:23:1;;7299:180;-1:-1:-1;7299:180:1:o;7731:256::-;7797:6;7805;7858:2;7846:9;7837:7;7833:23;7829:32;7826:52;;;7874:1;7871;7864:12;7826:52;7897:28;7915:9;7897:28;:::i;:::-;7887:38;;7944:37;7977:2;7966:9;7962:18;7944:37;:::i;:::-;7934:47;;7731:256;;;;;:::o;7992:388::-;8060:6;8068;8121:2;8109:9;8100:7;8096:23;8092:32;8089:52;;;8137:1;8134;8127:12;8089:52;8176:9;8163:23;8195:31;8220:5;8195:31;:::i;:::-;8245:5;-1:-1:-1;8302:2:1;8287:18;;8274:32;8315:33;8274:32;8315:33;:::i;8645:385::-;8731:6;8739;8747;8755;8808:3;8796:9;8787:7;8783:23;8779:33;8776:53;;;8825:1;8822;8815:12;8776:53;-1:-1:-1;;8848:23:1;;;8918:2;8903:18;;8890:32;;-1:-1:-1;8969:2:1;8954:18;;8941:32;;9020:2;9005:18;8992:32;;-1:-1:-1;8645:385:1;-1:-1:-1;8645:385:1:o;9654:127::-;9715:10;9710:3;9706:20;9703:1;9696:31;9746:4;9743:1;9736:15;9770:4;9767:1;9760:15;9786:422;9875:1;9918:5;9875:1;9932:270;9953:7;9943:8;9940:21;9932:270;;;10012:4;10008:1;10004:6;10000:17;9994:4;9991:27;9988:53;;;10021:18;;:::i;:::-;10071:7;10061:8;10057:22;10054:55;;;10091:16;;;;10054:55;10170:22;;;;10130:15;;;;9932:270;;;9936:3;9786:422;;;;;:::o;10213:806::-;10262:5;10292:8;10282:80;;-1:-1:-1;10333:1:1;10347:5;;10282:80;10381:4;10371:76;;-1:-1:-1;10418:1:1;10432:5;;10371:76;10463:4;10481:1;10476:59;;;;10549:1;10544:130;;;;10456:218;;10476:59;10506:1;10497:10;;10520:5;;;10544:130;10581:3;10571:8;10568:17;10565:43;;;10588:18;;:::i;:::-;-1:-1:-1;;10644:1:1;10630:16;;10659:5;;10456:218;;10758:2;10748:8;10745:16;10739:3;10733:4;10730:13;10726:36;10720:2;10710:8;10707:16;10702:2;10696:4;10693:12;10689:35;10686:77;10683:159;;;-1:-1:-1;10795:19:1;;;10827:5;;10683:159;10874:34;10899:8;10893:4;10874:34;:::i;:::-;10944:6;10940:1;10936:6;10932:19;10923:7;10920:32;10917:58;;;10955:18;;:::i;:::-;10993:20;;10213:806;-1:-1:-1;;;10213:806:1:o;11024:140::-;11082:5;11111:47;11152:4;11142:8;11138:19;11132:4;11111:47;:::i;11169:217::-;11209:1;11235;11225:132;;11279:10;11274:3;11270:20;11267:1;11260:31;11314:4;11311:1;11304:15;11342:4;11339:1;11332:15;11225:132;-1:-1:-1;11371:9:1;;11169:217::o;11391:128::-;11458:9;;;11479:11;;;11476:37;;;11493:18;;:::i;11524:168::-;11597:9;;;11628;;11645:15;;;11639:22;;11625:37;11615:71;;11666:18;;:::i;12464:127::-;12525:10;12520:3;12516:20;12513:1;12506:31;12556:4;12553:1;12546:15;12580:4;12577:1;12570:15;12943:197;12981:3;13009:6;13050:2;13043:5;13039:14;13077:2;13068:7;13065:15;13062:41;;13083:18;;:::i;:::-;13132:1;13119:15;;12943:197;-1:-1:-1;;;12943:197:1:o;13145:125::-;13210:9;;;13231:10;;;13228:36;;;13244:18;;:::i;18444:184::-;18514:6;18567:2;18555:9;18546:7;18542:23;18538:32;18535:52;;;18583:1;18580;18573:12;18535:52;-1:-1:-1;18606:16:1;;18444:184;-1:-1:-1;18444:184:1:o;18935:245::-;19002:6;19055:2;19043:9;19034:7;19030:23;19026:32;19023:52;;;19071:1;19068;19061:12;19023:52;19103:9;19097:16;19122:28;19144:5;19122:28;:::i;19185:168::-;19252:6;19278:10;;;19290;;;19274:27;;19313:11;;;19310:37;;;19327:18;;:::i;:::-;19310:37;19185:168;;;;:::o;20125:251::-;20195:6;20248:2;20236:9;20227:7;20223:23;20219:32;20216:52;;;20264:1;20261;20254:12;20216:52;20296:9;20290:16;20315:31;20340:5;20315:31;:::i;26604:1026::-;26866:4;26914:3;26903:9;26899:19;26945:6;26934:9;26927:25;26971:2;27009:6;27004:2;26993:9;26989:18;26982:34;27052:3;27047:2;27036:9;27032:18;27025:31;27076:6;27111;27105:13;27142:6;27134;27127:22;27180:3;27169:9;27165:19;27158:26;;27219:2;27211:6;27207:15;27193:29;;27240:1;27250:218;27264:6;27261:1;27258:13;27250:218;;;27329:13;;-1:-1:-1;;;;;27325:62:1;27313:75;;27443:15;;;;27408:12;;;;27286:1;27279:9;27250:218;;;-1:-1:-1;;;;;;;27524:55:1;;;;27519:2;27504:18;;27497:83;-1:-1:-1;;;27611:3:1;27596:19;27589:35;27485:3;26604:1026;-1:-1:-1;;;26604:1026:1:o

Swarm Source

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