ETH Price: $3,394.53 (-1.46%)
Gas: 4 Gwei

Token

Safe Rocket (SAFER)
 

Overview

Max Total Supply

965,783.335589824 SAFER

Holders

90

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
2,412.496307784 SAFER

Value
$0.00
0x3CE8a982F0B9E50bC6eaA23463391039c30C6F1a
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
SafeRocket

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-27
*/

/*
https://t.me/SafeRocketERC

saferocket.space

https://twitter.com/saferocketerc?s=21&t=DwSLADjPMtqjTUUyo2C5Ng
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.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);
}

contract SafeRocket is IERC20 {
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    mapping (address => bool) private bots;

   
    uint256 constant private startingSupply = 1_000_000;
    string constant private _name = "Safe Rocket";
    string constant private _symbol = "SAFER";
    uint8 constant private _decimals = 9;

    uint256 private _tTotal = startingSupply * 10**_decimals;

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

    struct Ratios {
        uint16 liquidity;
        uint16 marketing;
        uint16 development;
        uint16 burn;
        uint16 buyback;
        uint16 totalSwap;
    }

    Fees public _taxRates = Fees({
        buyFee: 1400,
        sellFee: 3600,
        transferFee: 100
    });

    Ratios public _ratios = Ratios({
        liquidity: 0,
        marketing: 1300,
        development: 3700,
        burn: 0,
        buyback: 0,
        totalSwap: 5000
    });

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

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

    struct TaxWallets {
        address payable marketing;
        address payable development;
        address payable liquidity;
        address payable buyback;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0x9633141417020d14f7045b86cb42614336860b51), 
        development: payable(0x0BDf081A9b2728d78A457c5765C7aA808263a0c4),
        liquidity: payable(0xfDdc2f381cB2D98d6B8B417324e2c17Fd28fBbe8),
        buyback: payable(DEAD)
    });
    
    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;

    address public buyback = address(this);

    uint256 public _totalBuyback;
    uint256 public _totalBurned;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event ContractSwapEnabledUpdated(bool enabled);
    event AutoLiquify(uint256 amountCurrency, uint256 amountTokens);
    
    modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller =/= owner.");
        _;
    }

    constructor () payable {
        // Set the owner.
        _owner = _taxWallets.development;

        if (block.chainid == 56) {
            dexRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            dexRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
            _owner = msg.sender;
        } 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();
        }

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

        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;

    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 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 isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

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

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        require(buyFee + sellFee <= maxRoundtripTax, "Cannot exceed roundtrip maximum.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

    function setRatios(uint16 liquidity, uint16 marketing, uint16 development, uint16 burn, uint16 _buyBack) external onlyOwner {
        _ratios.liquidity = liquidity;
        _ratios.marketing = marketing;
        _ratios.development = development;
        _ratios.burn = burn;
        _ratios.buyback = _buyBack;
        _ratios.totalSwap = liquidity + marketing + development + _buyBack;
        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, address payable development, address payable liquidity) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
        _taxWallets.development = payable(development);
        _taxWallets.liquidity = payable(liquidity);
    }

    function setPurchaseDestinations(address payable _buyBack) external onlyOwner {
        _taxWallets.buyback = payable(_buyBack);
    }

    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 getTotalBoughtBack() external view returns (uint256 buybackBoughtTotal) {
        buybackBoughtTotal = _totalBuyback;
    }

    function getTotalBurned() external view returns (uint256 burnedTotal) {
        burnedTotal = _totalBurned;
    }

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

    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");
        require(!bots[from] && !bots[to]);

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

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

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

        if (_allowances[address(this)][address(dexRouter)] != type(uint256).max) {
            _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        }

        uint256 toLiquify = ((contractTokenBalance * ratios.liquidity) / ratios.totalSwap) / 2;
        uint256 swapAmt = contractTokenBalance - toLiquify;
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

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

        uint256 amtBalance = address(this).balance;
        uint256 liquidityBalance = (amtBalance * toLiquify) / swapAmt;

        if (toLiquify > 0) {
            try dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0,
                0,
                _taxWallets.liquidity,
                block.timestamp
            ) {
                emit AutoLiquify(liquidityBalance, toLiquify);
            } catch {
                return;
            }
        }

        amtBalance -= liquidityBalance;
        ratios.totalSwap -= ratios.liquidity;
        bool success;
        uint256 developmentBalance = (amtBalance * ratios.development) / ratios.totalSwap;
        uint256 buybackBalance = (buyback != address(0)) ? (amtBalance * ratios.buyback) / ratios.totalSwap : 0;
        uint256 marketingBalance = amtBalance - (developmentBalance + buybackBalance);
        if (marketingBalance > 0) {
            (success,) = _taxWallets.marketing.call{value: marketingBalance, gas: 35000}("");
        }
        if (developmentBalance > 0) {
            (success,) = _taxWallets.development.call{value: developmentBalance, gas: 35000}("");
        }
        if (buybackBalance > 0) {
            path[0] = dexRouter.WETH();
            path[1] = buyback;
            buyTokens(path, buybackBalance, _taxWallets.buyback);
        }
    }

    function buyTokens(address[] memory path, uint256 amount, address payable destination) internal {
        try dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}
        (
            0,
            path,
            destination,
            block.timestamp
        ) {
            if (path[1] ==  buyback) {
                _totalBuyback += amount;
            }
        } catch {
            return;
        }
    }

    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;
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        tradingEnabled = true;
        swapThreshold = (balanceOf(lpPair) * 10) / 10000;
        swapAmount = (balanceOf(lpPair) * 30) / 10000;
        _approve(address(this), address(dexRouter), type(uint256).max);

    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to) && !other) {
                revert("Pre-liquidity transfer protection.");
            }
        }

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

    function takeTaxes(address from, bool buy, bool sell, uint256 amount) internal returns (uint256) {
        Ratios memory ratios = _ratios;
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        uint256 burnAmount = (feeAmount * ratios.burn) / (ratios.burn + ratios.totalSwap);
        uint256 swapAmt = feeAmount - burnAmount;
        if (swapAmt > 0) {
            _tOwned[address(this)] += swapAmt;
            emit Transfer(from, address(this), swapAmt);
        }
        if (burnAmount > 0) {
            _tTotal -= burnAmount;
            _totalBurned += burnAmount;
            emit Transfer(from, address(0), burnAmount);
        }
        
        

        return amount - feeAmount;
    }

    function blacklist (address _address) external onlyOwner {
        bots[_address] = true;
    }
    
    function removeFromBlacklist (address _address) external onlyOwner {
        bots[_address] = false;
    }
    
    function getIsBlacklistedStatus (address _address) external view returns (bool) {
        return bots[_address];
    }

}

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":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"buyback","type":"uint16"},{"internalType":"uint16","name":"totalSwap","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","type":"address"},{"internalType":"address payable","name":"buyback","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBurned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBuyback","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyback","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getIsBlacklistedStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"getTotalBoughtBack","outputs":[{"internalType":"uint256","name":"buybackBoughtTotal","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalBurned","outputs":[{"internalType":"uint256","name":"burnedTotal","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":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoundtripTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"_address","type":"address"}],"name":"removeFromBlacklist","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":"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":"uint256","name":"priceImpactSwapPercent","type":"uint256"}],"name":"setPriceImpactSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_buyBack","type":"address"}],"name":"setPurchaseDestinations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"liquidity","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"development","type":"uint16"},{"internalType":"uint16","name":"burn","type":"uint16"},{"internalType":"uint16","name":"_buyBack","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"},{"internalType":"address payable","name":"liquidity","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":"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"}]

60806040526000600355620000176009600a6200080c565b6200002690620f4240620008f7565b60098190556040805160608082018352610578808352610e106020808501919091526064938501849052600a805461ffff191690921763ffff00001916630e1000001761ffff60201b19908116646400000000178355855160c081018752600080825261051482850152610e748289015281860181905260808083019190915261138860a090920191909152600b805463ffffffff1916630514000017909216650e74000000001765ffffffffffff60301b19166b1388000000000000000000001790915585519081018652739633141417020d14f7045b86cb42614336860b51808252730bdf081a9b2728d78a457c5765c7aa808263a0c492820183905273fddc2f381cb2d98d6b8b417324e2c17fd28fbbe896820187905261dead91909401819052600e80546001600160a01b03199081169095179055600f805485169092179091556010805484169095179094556011805490921690931790556012805461ff001916905560169190915590620001a2906002620008f7565b620001ae91906200079e565b60175560646009546002620001c49190620008f7565b620001d091906200079e565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039092166001600160a01b031990921691909117905546603814156200024657600c8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000358565b46606114156200029257600c805474d99d1c33f9fc3444f8101754abc46c52416550d100610100600160a81b0319909116179055601c80546001600160a01b0319163317905562000358565b4660011480620002a25750466004145b80620002ae5750466003145b15620002e257600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000358565b4661a86a14156200031b57600c8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000358565b4660fa14156200035357600c8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000358565b600080fd5b600954601c80546001600160a01b0390811660009081526001602052604080822085905592549251929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003b49162000795565b60405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040b57600080fd5b505afa15801562000420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000446919062000714565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a357600080fd5b505afa158015620004b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004de919062000714565b306040518363ffffffff1660e01b8152600401620004fe92919062000744565b602060405180830381600087803b1580156200051957600080fd5b505af11580156200052e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000554919062000714565b600d80546001600160a01b0319166001600160a01b03928316179081905581166000908152600260205260409020805460ff19166001179055601c54600c54620005ac9291821691610100909104166000196200064f565b600c54620005cd90309061010090046001600160a01b03166000196200064f565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526005909152902080549092161790556200092f565b6001600160a01b038316620006815760405162461bcd60e51b815260040162000678906200075e565b60405180910390fd5b6001600160a01b038216620006aa5760405162461bcd60e51b815260040162000678906200075e565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200070790859062000795565b60405180910390a3505050565b60006020828403121562000726578081fd5b81516001600160a01b03811681146200073d578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b60208082526013908201527f45524332303a205a65726f204164647265737300000000000000000000000000604082015260600190565b90815260200190565b600082620007ba57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620007d3575062000803565b818704821115620007e857620007e862000919565b80861615620007f657918102915b9490941c938002620007c2565b94509492505050565b60006200073d60001960ff8516846000826200082b575060016200073d565b816200083a575060006200073d565b81600181146200085357600281146200085e5762000892565b60019150506200073d565b60ff84111562000872576200087262000919565b6001841b9150848211156200088b576200088b62000919565b506200073d565b5060208310610133831016604e8410600b8410161715620008ca575081810a83811115620008c457620008c462000919565b6200073d565b620008d98484846001620007bf565b808604821115620008ee57620008ee62000919565b02949350505050565b600081600019048311821515161562000914576200091462000919565b500290565b634e487b7160e01b600052601160045260246000fd5b6133d5806200093f6000396000f3fe60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be4146108f9578063fb78680d14610919578063fd01bd4c14610939578063fdb78c0e1461094e57610376565b8063f08f43a21461089f578063f8ec6911146108bf578063f94aa1b4146108d457610376565b8063b7df8b36116100d1578063b7df8b3614610823578063bfc2fc3514610838578063cf84770614610858578063dd62ed3e1461087f57610376565b8063b1b08f71146107f9578063b3d514fb1461051b578063b55cd04b1461080e57610376565b806370a0823111610164578063893d20e81161013e578063893d20e81461079a5780638a8c523c146107af57806395d89b41146107c4578063a9059cbb146107d957610376565b806370a0823114610745578063715018a61461076557806375cb1bd11461077a57610376565b8063590ffdce116101a0578063590ffdce146106d05780635cce86cd146106f05780636e182809146107105780636ebd00781461073057610376565b80634fbee1931461067b57806350a8e0161461069b578063537df3b6146106b057610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a146106065780634bbb93eb1461061b5780634e718e481461063b5780634fb2e45d1461065b57610376565b806346ea7ac81461051b57806348726021146105dc5780634ada218b146105f157610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610963565b60405161039d9190612a3e565b60405180910390f35b3480156103b257600080fd5b506103bb610969565b60405161039d9190613142565b3480156103d457600080fd5b506103dd61096f565b60405161039d939291906130ef565b3480156103f857600080fd5b5061040161098e565b60405161039d9190612af8565b34801561041a57600080fd5b506103906109b3565b34801561042f57600080fd5b506104386109c7565b60405161039d9190612ab8565b34801561045157600080fd5b50610438610460366004612747565b6109d0565b34801561047157600080fd5b50610438610480366004612875565b6109f2565b34801561049157600080fd5b506103bb610a08565b3480156104a657600080fd5b506103bb610a28565b3480156104bb57600080fd5b506104386104ca366004612801565b610a2e565b3480156104db57600080fd5b506104ef6104ea366004612979565b610aa8565b005b3480156104fd57600080fd5b506103bb610b41565b34801561051257600080fd5b506103bb610b47565b34801561052757600080fd5b506103bb610b75565b34801561053c57600080fd5b506103bb610b7b565b34801561055157600080fd5b5061055a610b81565b60405161039d9190613195565b34801561057357600080fd5b506104ef6105823660046128bb565b610b86565b34801561059357600080fd5b506104ef6105a2366004612841565b610c6a565b3480156105b357600080fd5b506104ef6105c2366004612979565b610cbf565b3480156105d357600080fd5b50610390610d5c565b3480156105e857600080fd5b506103bb610d6b565b3480156105fd57600080fd5b50610438610d71565b34801561061257600080fd5b506103bb610d7a565b34801561062757600080fd5b506103bb610636366004612961565b610d80565b34801561064757600080fd5b506104ef610656366004612961565b610db8565b34801561066757600080fd5b506104ef610676366004612747565b610e08565b34801561068757600080fd5b50610438610696366004612747565b610f3b565b3480156106a757600080fd5b50610438610f59565b3480156106bc57600080fd5b506104ef6106cb366004612747565b610f67565b3480156106dc57600080fd5b506104ef6106eb366004612841565b610fb2565b3480156106fc57600080fd5b5061043861070b366004612747565b611007565b34801561071c57600080fd5b506104ef61072b366004612747565b611025565b34801561073c57600080fd5b506103bb611071565b34801561075157600080fd5b506103bb610760366004612747565b61108c565b34801561077157600080fd5b506104ef6110a7565b34801561078657600080fd5b506104ef61079536600461277f565b611136565b3480156107a657600080fd5b5061039061119f565b3480156107bb57600080fd5b506104ef6111ae565b3480156107d057600080fd5b506104016112b2565b3480156107e557600080fd5b506104386107f4366004612875565b6112d1565b34801561080557600080fd5b506103bb6112e8565b34801561081a57600080fd5b506103bb6112ee565b34801561082f57600080fd5b506104386112f4565b34801561084457600080fd5b506104ef6108533660046128a0565b6112fd565b34801561086457600080fd5b5061086d611384565b60405161039d9695949392919061310d565b34801561088b57600080fd5b506103bb61089a3660046127c9565b6113c0565b3480156108ab57600080fd5b506104ef6108ba3660046128fd565b6113eb565b3480156108cb57600080fd5b50610390611523565b3480156108e057600080fd5b506108e9611538565b60405161039d9493929190612a52565b34801561090557600080fd5b506104ef610914366004612747565b61155c565b34801561092557600080fd5b506104ef6109343660046129c7565b6115aa565b34801561094557600080fd5b506103bb6116e9565b34801561095a57600080fd5b506104386116ef565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600b81526a14d8599948149bd8dad95d60aa1b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b60006109ff3384846116fd565b50600192915050565b6000610a166009600a613247565b601854610a2391906131e1565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a93576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a8d90849061335a565b90915550505b610a9e8484846117b1565b90505b9392505050565b601c546001600160a01b03163314610adb5760405162461bcd60e51b8152600401610ad290612c15565b60405180910390fd5b6064600954610aea91906131e1565b8183600954610af99190613318565b610b0391906131e1565b1015610b215760405162461bcd60e51b8152600401610ad290612bc5565b8082600954610b309190613318565b610b3a91906131e1565b6018555050565b60165481565b6000610b53600061108c565b610b5e61dead61108c565b610b6891906131c9565b600954610a23919061335a565b61138881565b60145481565b600990565b601c546001600160a01b03163314610bb05760405162461bcd60e51b8152600401610ad290612c15565b6113888361ffff1611158015610bcc57506113888261ffff1611155b8015610bde57506107d08161ffff1611155b610bfa5760405162461bcd60e51b8152600401610ad290612cc5565b611388610c0783856131a3565b61ffff161115610c295760405162461bcd60e51b8152600401610ad290612d80565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610c945760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610ad290612c15565b6103e86009546005610cfb9190613318565b610d0591906131e1565b8183600954610d149190613318565b610d1e91906131e1565b1015610d3c5760405162461bcd60e51b8152600401610ad290612f3b565b8082600954610d4b9190613318565b610d5591906131e1565b6017555050565b600d546001600160a01b031681565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610d9e906001600160a01b031661108c565b610da89190613318565b610db291906131e1565b92915050565b601c546001600160a01b03163314610de25760405162461bcd60e51b8152600401610ad290612c15565b6096811115610e035760405162461bcd60e51b8152600401610ad2906130bf565b601655565b601c546001600160a01b03163314610e325760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b038116610e585760405162461bcd60e51b8152600401610ad290613062565b6001600160a01b03811661dead1415610e835760405162461bcd60e51b8152600401610ad290613062565b601c54610e9a906001600160a01b03166000610fb2565b610ea5816001610fb2565b601c54600090610ebd906001600160a01b031661108c565b1115610ee957601c54610ee7906001600160a01b031682610edd8261108c565b6000806001611a92565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610f915760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b0316331461104f5760405162461bcd60e51b8152600401610ad290612c15565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061107f6009600a613247565b601754610a2391906131e1565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110d15760405162461bcd60e51b8152600401610ad290612c15565b601c546110e8906001600160a01b03166000610fb2565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111605760405162461bcd60e51b8152600401610ad290612c15565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111d85760405162461bcd60e51b8152600401610ad290612c15565b60195460ff16156111fb5760405162461bcd60e51b8152600401610ad29061302b565b601954610100900460ff166112225760405162461bcd60e51b8152600401610ad290612dfd565b6019805460ff19166001179055600d5461271090611248906001600160a01b031661108c565b61125390600a613318565b61125d91906131e1565b601355600d5461271090611279906001600160a01b031661108c565b61128490601e613318565b61128e91906131e1565b601455600c546112b090309061010090046001600160a01b03166000196116fd565b565b60408051808201909152600581526429a0a322a960d91b602082015290565b60006112de3384846117b1565b5060019392505050565b6107d081565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113275760405162461bcd60e51b8152600401610ad290612c15565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611378908490612ab8565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114155760405162461bcd60e51b8152600401610ad290612c15565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b91841691909102179055808361148886886131a3565b61149291906131a3565b61149c91906131a3565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114d091620100008104821691166131a3565b600b5461ffff918216925082916114f991600160301b8104821691600160501b909104166131a3565b61ffff16111561151b5760405162461bcd60e51b8152600401610ad290612eab565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115865760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115d45760405162461bcd60e51b8152600401610ad290612c15565b82846009546115e39190613318565b6115ed91906131e1565b6013556009548190611600908490613318565b61160a91906131e1565b601481905560135411156116305760405162461bcd60e51b8152600401610ad290612d3f565b600d5461271090611649906001600160a01b031661108c565b611654906096613318565b61165e91906131e1565b601454111561167f5760405162461bcd60e51b8152600401610ad290612cfc565b620f424060095461169091906131e1565b60145410156116b15760405162461bcd60e51b8152600401610ad290612f98565b620f42406009546116c291906131e1565b60135410156116e35760405162461bcd60e51b8152600401610ad290612f98565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b0383166117235760405162461bcd60e51b8152600401610ad290612e7e565b6001600160a01b0382166117495760405162461bcd60e51b8152600401610ad290612e7e565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117a4908590613142565b60405180910390a3505050565b60006001600160a01b0384166117d95760405162461bcd60e51b8152600401610ad290612fe6565b6001600160a01b0383166117ff5760405162461bcd60e51b8152600401610ad290612b4b565b6000821161181f5760405162461bcd60e51b8152600401610ad290612ef2565b6001600160a01b03841660009081526008602052604090205460ff1615801561186157506001600160a01b03831660009081526008602052604090205460ff16155b61186a57600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff161561189857600192506118c6565b6001600160a01b03861660009081526002602052604090205460ff16156118c257600191506118c6565b5060015b6118d08787611c12565b156119e95760195460ff166118f75760405162461bcd60e51b8152600401610ad290612b8e565b82806119005750815b1561196e576001600160a01b03871660009081526007602052604090205460ff1615801561194757506001600160a01b03861660009081526007602052604090205460ff16155b1561196e5760175485111561196e5760405162461bcd60e51b8152600401610ad290612db5565b600c546001600160a01b03878116610100909204161480159061198f575081155b156119e9576001600160a01b03861660009081526007602052604090205460ff166119e957601854856119c18861108c565b6119cb91906131c9565b11156119e95760405162461bcd60e51b8152600401610ad290612e34565b8115611a795760125460ff16611a7957601254610100900460ff1615611a79576000611a143061108c565b90506013548110611a775760145460155460ff1615611a6157601654600d546127109190611a4a906001600160a01b031661108c565b611a549190613318565b611a5e91906131e1565b90505b808210611a6c578091505b611a7582611ce8565b505b505b611a87878787868686611a92565b979650505050505050565b601954600090610100900460ff16611af257611aae878761235e565b601954610100900460ff16158015611acb5750611acb8787611c12565b8015611ad5575081155b15611af25760405162461bcd60e51b8152600401610ad290612c83565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b3457506001600160a01b03871660009081526006602052604090205460ff165b15611b3d575060005b6001600160a01b03881660009081526001602052604081208054889290611b6590849061335a565b909155506000905081611b785786611b84565b611b848987878a61243b565b6001600160a01b038916600090815260016020526040812080549293508392909190611bb19084906131c9565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bfb9190613142565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c415750601c546001600160a01b03838116911614155b8015611c585750601c546001600160a01b03163214155b8015611c7d57506001600160a01b03821660009081526005602052604090205460ff16155b8015611ca257506001600160a01b03831660009081526005602052604090205460ff16155b8015611cb957506001600160a01b03821661dead14155b8015611ccd57506001600160a01b03821615155b8015610aa157506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d5e5750612351565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611dc157306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611de29190613318565b611dec91906131e1565b611df691906131e1565b90506000611e04828561335a565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e4c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eba57600080fd5b505afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190612763565b81600181518110611f1357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f6090859060009086903090429060040161314b565b600060405180830381600087803b158015611f7a57600080fd5b505af1925050508015611f8b575060015b611f985750505050612351565b47600083611fa68684613318565b611fb091906131e1565b9050841561209357600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d719928592611ffd9230928c92600092839216904290600401612a7d565b6060604051808303818588803b15801561201657600080fd5b505af193505050508015612047575060408051601f3d908101601f191682019092526120449181019061299a565b60015b61205657505050505050612351565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506818660405161208a929190613187565b60405180910390a15b61209d818361335a565b915085600001518660a0018181516120b59190613337565b61ffff90811690915260a08801516040890151600093508392918216916120dd911686613318565b6120e791906131e1565b6019549091506000906201000090046001600160a01b031661210a576000612131565b8860a0015161ffff16896080015161ffff16866121279190613318565b61213191906131e1565b9050600061213f82846131c9565b612149908761335a565b905080156121bb57600e546040516001600160a01b03909116906188b890839061217290612a3b565b600060405180830381858888f193505050503d80600081146121b0576040519150601f19603f3d011682016040523d82523d6000602084013e6121b5565b606091505b50909450505b821561222b57600f546040516001600160a01b03909116906188b89085906121e290612a3b565b600060405180830381858888f193505050503d8060008114612220576040519150601f19603f3d011682016040523d82523d6000602084013e612225565b606091505b50909450505b811561234657600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561227f57600080fd5b505afa158015612293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b79190612763565b876000815181106122d857634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061231f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601154612346918991859116612640565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123865760405162461bcd60e51b8152600401610ad290612c40565b6123908282611c12565b1580156123aa5750600d546001600160a01b038281169116145b15612437576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161137891612ab8565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124af5750600a5461ffff166124d8565b84156124c85750600a5462010000900461ffff166124d8565b50600a54600160201b900461ffff165b60006127106124e78387613318565b6124f191906131e1565b905060008360a00151846060015161250991906131a3565b61ffff16846060015161ffff16836125219190613318565b61252b91906131e1565b90506000612539828461335a565b905080156125ab5730600090815260016020526040812080548392906125609084906131c9565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125a2908590613142565b60405180910390a35b81156126285781600960008282546125c3919061335a565b9250508190555081601b60008282546125dc91906131c9565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061261f908690613142565b60405180910390a35b612632838861335a565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061267d90600090889087904290600401612ac3565b6000604051808303818588803b15801561269657600080fd5b505af1935050505080156126a8575060015b6126b157612720565b601960029054906101000a90046001600160a01b03166001600160a01b0316836001815181106126f157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156127205781601a600082825461271a91906131c9565b90915550505b505050565b803580151581146109ed57600080fd5b803561ffff811681146109ed57600080fd5b600060208284031215612758578081fd5b8135610aa181613387565b600060208284031215612774578081fd5b8151610aa181613387565b600080600060608486031215612793578182fd5b833561279e81613387565b925060208401356127ae81613387565b915060408401356127be81613387565b809150509250925092565b600080604083850312156127db578182fd5b82356127e681613387565b915060208301356127f681613387565b809150509250929050565b600080600060608486031215612815578283fd5b833561282081613387565b9250602084013561283081613387565b929592945050506040919091013590565b60008060408385031215612853578182fd5b823561285e81613387565b915061286c60208401612725565b90509250929050565b60008060408385031215612887578182fd5b823561289281613387565b946020939093013593505050565b600080604083850312156128b2578182fd5b61285e83612725565b6000806000606084860312156128cf578283fd5b6128d884612735565b92506128e660208501612735565b91506128f460408501612735565b90509250925092565b600080600080600060a08688031215612914578081fd5b61291d86612735565b945061292b60208701612735565b935061293960408701612735565b925061294760608701612735565b915061295560808701612735565b90509295509295909350565b600060208284031215612972578081fd5b5035919050565b6000806040838503121561298b578182fd5b50508035926020909101359150565b6000806000606084860312156129ae578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129dc578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a305781516001600160a01b031687529582019590820190600101612a0b565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612adc60808301866129f8565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b2457858101830151858201604001528201612b08565b81811115612b355783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261316a60a08301866129f8565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131c0576131c0613371565b01949350505050565b600082198211156131dc576131dc613371565b500190565b6000826131fc57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611613213575061323e565b81870482111561322557613225613371565b8086161561323257918102915b9490941c938002613204565b94509492505050565b6000610aa160001960ff85168460008261326357506001610aa1565b8161327057506000610aa1565b81600181146132865760028114613290576132bd565b6001915050610aa1565b60ff8411156132a1576132a1613371565b6001841b9150848211156132b7576132b7613371565b50610aa1565b5060208310610133831016604e8410600b84101617156132f0575081810a838111156132eb576132eb613371565b610aa1565b6132fd8484846001613201565b80860482111561330f5761330f613371565b02949350505050565b600081600019048311821515161561333257613332613371565b500290565b600061ffff8381169083168181101561335257613352613371565b039392505050565b60008282101561336c5761336c613371565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461339c57600080fd5b5056fea264697066735822122096fd6b189c417730f1e3071be6d0229f9679a2177669cbfc88239bebdbd9e4d864736f6c63430008000033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be4146108f9578063fb78680d14610919578063fd01bd4c14610939578063fdb78c0e1461094e57610376565b8063f08f43a21461089f578063f8ec6911146108bf578063f94aa1b4146108d457610376565b8063b7df8b36116100d1578063b7df8b3614610823578063bfc2fc3514610838578063cf84770614610858578063dd62ed3e1461087f57610376565b8063b1b08f71146107f9578063b3d514fb1461051b578063b55cd04b1461080e57610376565b806370a0823111610164578063893d20e81161013e578063893d20e81461079a5780638a8c523c146107af57806395d89b41146107c4578063a9059cbb146107d957610376565b806370a0823114610745578063715018a61461076557806375cb1bd11461077a57610376565b8063590ffdce116101a0578063590ffdce146106d05780635cce86cd146106f05780636e182809146107105780636ebd00781461073057610376565b80634fbee1931461067b57806350a8e0161461069b578063537df3b6146106b057610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a146106065780634bbb93eb1461061b5780634e718e481461063b5780634fb2e45d1461065b57610376565b806346ea7ac81461051b57806348726021146105dc5780634ada218b146105f157610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610963565b60405161039d9190612a3e565b60405180910390f35b3480156103b257600080fd5b506103bb610969565b60405161039d9190613142565b3480156103d457600080fd5b506103dd61096f565b60405161039d939291906130ef565b3480156103f857600080fd5b5061040161098e565b60405161039d9190612af8565b34801561041a57600080fd5b506103906109b3565b34801561042f57600080fd5b506104386109c7565b60405161039d9190612ab8565b34801561045157600080fd5b50610438610460366004612747565b6109d0565b34801561047157600080fd5b50610438610480366004612875565b6109f2565b34801561049157600080fd5b506103bb610a08565b3480156104a657600080fd5b506103bb610a28565b3480156104bb57600080fd5b506104386104ca366004612801565b610a2e565b3480156104db57600080fd5b506104ef6104ea366004612979565b610aa8565b005b3480156104fd57600080fd5b506103bb610b41565b34801561051257600080fd5b506103bb610b47565b34801561052757600080fd5b506103bb610b75565b34801561053c57600080fd5b506103bb610b7b565b34801561055157600080fd5b5061055a610b81565b60405161039d9190613195565b34801561057357600080fd5b506104ef6105823660046128bb565b610b86565b34801561059357600080fd5b506104ef6105a2366004612841565b610c6a565b3480156105b357600080fd5b506104ef6105c2366004612979565b610cbf565b3480156105d357600080fd5b50610390610d5c565b3480156105e857600080fd5b506103bb610d6b565b3480156105fd57600080fd5b50610438610d71565b34801561061257600080fd5b506103bb610d7a565b34801561062757600080fd5b506103bb610636366004612961565b610d80565b34801561064757600080fd5b506104ef610656366004612961565b610db8565b34801561066757600080fd5b506104ef610676366004612747565b610e08565b34801561068757600080fd5b50610438610696366004612747565b610f3b565b3480156106a757600080fd5b50610438610f59565b3480156106bc57600080fd5b506104ef6106cb366004612747565b610f67565b3480156106dc57600080fd5b506104ef6106eb366004612841565b610fb2565b3480156106fc57600080fd5b5061043861070b366004612747565b611007565b34801561071c57600080fd5b506104ef61072b366004612747565b611025565b34801561073c57600080fd5b506103bb611071565b34801561075157600080fd5b506103bb610760366004612747565b61108c565b34801561077157600080fd5b506104ef6110a7565b34801561078657600080fd5b506104ef61079536600461277f565b611136565b3480156107a657600080fd5b5061039061119f565b3480156107bb57600080fd5b506104ef6111ae565b3480156107d057600080fd5b506104016112b2565b3480156107e557600080fd5b506104386107f4366004612875565b6112d1565b34801561080557600080fd5b506103bb6112e8565b34801561081a57600080fd5b506103bb6112ee565b34801561082f57600080fd5b506104386112f4565b34801561084457600080fd5b506104ef6108533660046128a0565b6112fd565b34801561086457600080fd5b5061086d611384565b60405161039d9695949392919061310d565b34801561088b57600080fd5b506103bb61089a3660046127c9565b6113c0565b3480156108ab57600080fd5b506104ef6108ba3660046128fd565b6113eb565b3480156108cb57600080fd5b50610390611523565b3480156108e057600080fd5b506108e9611538565b60405161039d9493929190612a52565b34801561090557600080fd5b506104ef610914366004612747565b61155c565b34801561092557600080fd5b506104ef6109343660046129c7565b6115aa565b34801561094557600080fd5b506103bb6116e9565b34801561095a57600080fd5b506104386116ef565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600b81526a14d8599948149bd8dad95d60aa1b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b60006109ff3384846116fd565b50600192915050565b6000610a166009600a613247565b601854610a2391906131e1565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610a93576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610a8d90849061335a565b90915550505b610a9e8484846117b1565b90505b9392505050565b601c546001600160a01b03163314610adb5760405162461bcd60e51b8152600401610ad290612c15565b60405180910390fd5b6064600954610aea91906131e1565b8183600954610af99190613318565b610b0391906131e1565b1015610b215760405162461bcd60e51b8152600401610ad290612bc5565b8082600954610b309190613318565b610b3a91906131e1565b6018555050565b60165481565b6000610b53600061108c565b610b5e61dead61108c565b610b6891906131c9565b600954610a23919061335a565b61138881565b60145481565b600990565b601c546001600160a01b03163314610bb05760405162461bcd60e51b8152600401610ad290612c15565b6113888361ffff1611158015610bcc57506113888261ffff1611155b8015610bde57506107d08161ffff1611155b610bfa5760405162461bcd60e51b8152600401610ad290612cc5565b611388610c0783856131a3565b61ffff161115610c295760405162461bcd60e51b8152600401610ad290612d80565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610c945760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610ce95760405162461bcd60e51b8152600401610ad290612c15565b6103e86009546005610cfb9190613318565b610d0591906131e1565b8183600954610d149190613318565b610d1e91906131e1565b1015610d3c5760405162461bcd60e51b8152600401610ad290612f3b565b8082600954610d4b9190613318565b610d5591906131e1565b6017555050565b600d546001600160a01b031681565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610d9e906001600160a01b031661108c565b610da89190613318565b610db291906131e1565b92915050565b601c546001600160a01b03163314610de25760405162461bcd60e51b8152600401610ad290612c15565b6096811115610e035760405162461bcd60e51b8152600401610ad2906130bf565b601655565b601c546001600160a01b03163314610e325760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b038116610e585760405162461bcd60e51b8152600401610ad290613062565b6001600160a01b03811661dead1415610e835760405162461bcd60e51b8152600401610ad290613062565b601c54610e9a906001600160a01b03166000610fb2565b610ea5816001610fb2565b601c54600090610ebd906001600160a01b031661108c565b1115610ee957601c54610ee7906001600160a01b031682610edd8261108c565b6000806001611a92565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610f915760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610fdc5760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b0316331461104f5760405162461bcd60e51b8152600401610ad290612c15565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b600061107f6009600a613247565b601754610a2391906131e1565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110d15760405162461bcd60e51b8152600401610ad290612c15565b601c546110e8906001600160a01b03166000610fb2565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111605760405162461bcd60e51b8152600401610ad290612c15565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111d85760405162461bcd60e51b8152600401610ad290612c15565b60195460ff16156111fb5760405162461bcd60e51b8152600401610ad29061302b565b601954610100900460ff166112225760405162461bcd60e51b8152600401610ad290612dfd565b6019805460ff19166001179055600d5461271090611248906001600160a01b031661108c565b61125390600a613318565b61125d91906131e1565b601355600d5461271090611279906001600160a01b031661108c565b61128490601e613318565b61128e91906131e1565b601455600c546112b090309061010090046001600160a01b03166000196116fd565b565b60408051808201909152600581526429a0a322a960d91b602082015290565b60006112de3384846117b1565b5060019392505050565b6107d081565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113275760405162461bcd60e51b8152600401610ad290612c15565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611378908490612ab8565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114155760405162461bcd60e51b8152600401610ad290612c15565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b91841691909102179055808361148886886131a3565b61149291906131a3565b61149c91906131a3565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114d091620100008104821691166131a3565b600b5461ffff918216925082916114f991600160301b8104821691600160501b909104166131a3565b61ffff16111561151b5760405162461bcd60e51b8152600401610ad290612eab565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115865760405162461bcd60e51b8152600401610ad290612c15565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115d45760405162461bcd60e51b8152600401610ad290612c15565b82846009546115e39190613318565b6115ed91906131e1565b6013556009548190611600908490613318565b61160a91906131e1565b601481905560135411156116305760405162461bcd60e51b8152600401610ad290612d3f565b600d5461271090611649906001600160a01b031661108c565b611654906096613318565b61165e91906131e1565b601454111561167f5760405162461bcd60e51b8152600401610ad290612cfc565b620f424060095461169091906131e1565b60145410156116b15760405162461bcd60e51b8152600401610ad290612f98565b620f42406009546116c291906131e1565b60135410156116e35760405162461bcd60e51b8152600401610ad290612f98565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b0383166117235760405162461bcd60e51b8152600401610ad290612e7e565b6001600160a01b0382166117495760405162461bcd60e51b8152600401610ad290612e7e565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117a4908590613142565b60405180910390a3505050565b60006001600160a01b0384166117d95760405162461bcd60e51b8152600401610ad290612fe6565b6001600160a01b0383166117ff5760405162461bcd60e51b8152600401610ad290612b4b565b6000821161181f5760405162461bcd60e51b8152600401610ad290612ef2565b6001600160a01b03841660009081526008602052604090205460ff1615801561186157506001600160a01b03831660009081526008602052604090205460ff16155b61186a57600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff161561189857600192506118c6565b6001600160a01b03861660009081526002602052604090205460ff16156118c257600191506118c6565b5060015b6118d08787611c12565b156119e95760195460ff166118f75760405162461bcd60e51b8152600401610ad290612b8e565b82806119005750815b1561196e576001600160a01b03871660009081526007602052604090205460ff1615801561194757506001600160a01b03861660009081526007602052604090205460ff16155b1561196e5760175485111561196e5760405162461bcd60e51b8152600401610ad290612db5565b600c546001600160a01b03878116610100909204161480159061198f575081155b156119e9576001600160a01b03861660009081526007602052604090205460ff166119e957601854856119c18861108c565b6119cb91906131c9565b11156119e95760405162461bcd60e51b8152600401610ad290612e34565b8115611a795760125460ff16611a7957601254610100900460ff1615611a79576000611a143061108c565b90506013548110611a775760145460155460ff1615611a6157601654600d546127109190611a4a906001600160a01b031661108c565b611a549190613318565b611a5e91906131e1565b90505b808210611a6c578091505b611a7582611ce8565b505b505b611a87878787868686611a92565b979650505050505050565b601954600090610100900460ff16611af257611aae878761235e565b601954610100900460ff16158015611acb5750611acb8787611c12565b8015611ad5575081155b15611af25760405162461bcd60e51b8152600401610ad290612c83565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b3457506001600160a01b03871660009081526006602052604090205460ff165b15611b3d575060005b6001600160a01b03881660009081526001602052604081208054889290611b6590849061335a565b909155506000905081611b785786611b84565b611b848987878a61243b565b6001600160a01b038916600090815260016020526040812080549293508392909190611bb19084906131c9565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bfb9190613142565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c415750601c546001600160a01b03838116911614155b8015611c585750601c546001600160a01b03163214155b8015611c7d57506001600160a01b03821660009081526005602052604090205460ff16155b8015611ca257506001600160a01b03831660009081526005602052604090205460ff16155b8015611cb957506001600160a01b03821661dead14155b8015611ccd57506001600160a01b03821615155b8015610aa157506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d5e5750612351565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611dc157306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611de29190613318565b611dec91906131e1565b611df691906131e1565b90506000611e04828561335a565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e4c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eba57600080fd5b505afa158015611ece573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ef29190612763565b81600181518110611f1357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f6090859060009086903090429060040161314b565b600060405180830381600087803b158015611f7a57600080fd5b505af1925050508015611f8b575060015b611f985750505050612351565b47600083611fa68684613318565b611fb091906131e1565b9050841561209357600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d719928592611ffd9230928c92600092839216904290600401612a7d565b6060604051808303818588803b15801561201657600080fd5b505af193505050508015612047575060408051601f3d908101601f191682019092526120449181019061299a565b60015b61205657505050505050612351565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506818660405161208a929190613187565b60405180910390a15b61209d818361335a565b915085600001518660a0018181516120b59190613337565b61ffff90811690915260a08801516040890151600093508392918216916120dd911686613318565b6120e791906131e1565b6019549091506000906201000090046001600160a01b031661210a576000612131565b8860a0015161ffff16896080015161ffff16866121279190613318565b61213191906131e1565b9050600061213f82846131c9565b612149908761335a565b905080156121bb57600e546040516001600160a01b03909116906188b890839061217290612a3b565b600060405180830381858888f193505050503d80600081146121b0576040519150601f19603f3d011682016040523d82523d6000602084013e6121b5565b606091505b50909450505b821561222b57600f546040516001600160a01b03909116906188b89085906121e290612a3b565b600060405180830381858888f193505050503d8060008114612220576040519150601f19603f3d011682016040523d82523d6000602084013e612225565b606091505b50909450505b811561234657600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561227f57600080fd5b505afa158015612293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b79190612763565b876000815181106122d857634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061231f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601154612346918991859116612640565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123865760405162461bcd60e51b8152600401610ad290612c40565b6123908282611c12565b1580156123aa5750600d546001600160a01b038281169116145b15612437576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161137891612ab8565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124af5750600a5461ffff166124d8565b84156124c85750600a5462010000900461ffff166124d8565b50600a54600160201b900461ffff165b60006127106124e78387613318565b6124f191906131e1565b905060008360a00151846060015161250991906131a3565b61ffff16846060015161ffff16836125219190613318565b61252b91906131e1565b90506000612539828461335a565b905080156125ab5730600090815260016020526040812080548392906125609084906131c9565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125a2908590613142565b60405180910390a35b81156126285781600960008282546125c3919061335a565b9250508190555081601b60008282546125dc91906131c9565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061261f908690613142565b60405180910390a35b612632838861335a565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061267d90600090889087904290600401612ac3565b6000604051808303818588803b15801561269657600080fd5b505af1935050505080156126a8575060015b6126b157612720565b601960029054906101000a90046001600160a01b03166001600160a01b0316836001815181106126f157634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156127205781601a600082825461271a91906131c9565b90915550505b505050565b803580151581146109ed57600080fd5b803561ffff811681146109ed57600080fd5b600060208284031215612758578081fd5b8135610aa181613387565b600060208284031215612774578081fd5b8151610aa181613387565b600080600060608486031215612793578182fd5b833561279e81613387565b925060208401356127ae81613387565b915060408401356127be81613387565b809150509250925092565b600080604083850312156127db578182fd5b82356127e681613387565b915060208301356127f681613387565b809150509250929050565b600080600060608486031215612815578283fd5b833561282081613387565b9250602084013561283081613387565b929592945050506040919091013590565b60008060408385031215612853578182fd5b823561285e81613387565b915061286c60208401612725565b90509250929050565b60008060408385031215612887578182fd5b823561289281613387565b946020939093013593505050565b600080604083850312156128b2578182fd5b61285e83612725565b6000806000606084860312156128cf578283fd5b6128d884612735565b92506128e660208501612735565b91506128f460408501612735565b90509250925092565b600080600080600060a08688031215612914578081fd5b61291d86612735565b945061292b60208701612735565b935061293960408701612735565b925061294760608701612735565b915061295560808701612735565b90509295509295909350565b600060208284031215612972578081fd5b5035919050565b6000806040838503121561298b578182fd5b50508035926020909101359150565b6000806000606084860312156129ae578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129dc578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a305781516001600160a01b031687529582019590820190600101612a0b565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612adc60808301866129f8565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b2457858101830151858201604001528201612b08565b81811115612b355783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261316a60a08301866129f8565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131c0576131c0613371565b01949350505050565b600082198211156131dc576131dc613371565b500190565b6000826131fc57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611613213575061323e565b81870482111561322557613225613371565b8086161561323257918102915b9490941c938002613204565b94509492505050565b6000610aa160001960ff85168460008261326357506001610aa1565b8161327057506000610aa1565b81600181146132865760028114613290576132bd565b6001915050610aa1565b60ff8411156132a1576132a1613371565b6001841b9150848211156132b7576132b7613371565b50610aa1565b5060208310610133831016604e8410600b84101617156132f0575081810a838111156132eb576132eb613371565b610aa1565b6132fd8484846001613201565b80860482111561330f5761330f613371565b02949350505050565b600081600019048311821515161561333257613332613371565b500290565b600061ffff8381169083168181101561335257613352613371565b039392505050565b60008282101561336c5761336c613371565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461339c57600080fd5b5056fea264697066735822122096fd6b189c417730f1e3071be6d0229f9679a2177669cbfc88239bebdbd9e4d864736f6c63430008000033

Deployed Bytecode Sourcemap

3674:21122:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5428:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6071:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4768:111::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;10562:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5367:26::-;;;;;;;;;;;;;:::i;5334:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24671:120::-;;;;;;;;;;-1:-1:-1;24671:120:0;;;;;:::i;:::-;;:::i;11170:161::-;;;;;;;;;;-1:-1:-1;11170:161:0;;;;;:::i;:::-;;:::i;14870:114::-;;;;;;;;;;;;;:::i;10297:83::-;;;;;;;;;;;;;:::i;11657:306::-;;;;;;;;;;-1:-1:-1;11657:306:0;;;;;:::i;:::-;;:::i;14482:264::-;;;;;;;;;;-1:-1:-1;14482:264:0;;;;;:::i;:::-;;:::i;:::-;;6179:33;;;;;;;;;;;;;:::i;12536:141::-;;;;;;;;;;;;;:::i;5078:42::-;;;;;;;;;;;;;:::i;6106:25::-;;;;;;;;;;;;;:::i;10386:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12685:488::-;;;;;;;;;;-1:-1:-1;12685:488:0;;;;;:::i;:::-;;:::i;12246:140::-;;;;;;;;;;-1:-1:-1;12246:140:0;;;;;:::i;:::-;;:::i;14201:273::-;;;;;;;;;;-1:-1:-1;14201:273:0;;;;;:::i;:::-;;:::i;5400:21::-;;;;;;;;;;;;;:::i;16392:134::-;;;;;;;;;;;;;:::i;6343:34::-;;;;;;;;;;;;;:::i;6476:28::-;;;;;;;;;;;;;:::i;14992:189::-;;;;;;;;;;-1:-1:-1;14992:189:0;;;;;:::i;:::-;;:::i;15896:217::-;;;;;;;;;;-1:-1:-1;15896:217:0;;;;;:::i;:::-;;:::i;9055:654::-;;;;;;;;;;-1:-1:-1;9055:654:0;;;;;:::i;:::-;;:::i;12111:127::-;;;;;;;;;;-1:-1:-1;12111:127:0;;;;;:::i;:::-;;:::i;6384:36::-;;;;;;;;;;;;;:::i;24551:108::-;;;;;;;;;;-1:-1:-1;24551:108:0;;;;;:::i;:::-;;:::i;12394:134::-;;;;;;;;;;-1:-1:-1;12394:134:0;;;;;:::i;:::-;;:::i;11971:132::-;;;;;;;;;;-1:-1:-1;11971:132:0;;;;;:::i;:::-;;:::i;14057:136::-;;;;;;;;;;-1:-1:-1;14057:136:0;;;;;:::i;:::-;;:::i;14754:108::-;;;;;;;;;;;;;:::i;10872:117::-;;;;;;;;;;-1:-1:-1;10872:117:0;;;;;:::i;:::-;;:::i;9717:225::-;;;;;;;;;;;;;:::i;13756:293::-;;;;;;;;;;-1:-1:-1;13756:293:0;;;;;:::i;:::-;;:::i;10648:79::-;;;;;;;;;;;;;:::i;22284:399::-;;;;;;;;;;;;;:::i;10472:84::-;;;;;;;;;;;;;:::i;10997:165::-;;;;;;;;;;-1:-1:-1;10997:165:0;;;;;:::i;:::-;;:::i;5177:47::-;;;;;;;;;;;;;:::i;16534:115::-;;;;;;;;;;;;;:::i;6138:34::-;;;;;;;;;;;;;:::i;16121:263::-;;;;;;;;;;-1:-1:-1;16121:263:0;;;;;:::i;:::-;;:::i;4888:181::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;10733:133::-;;;;;;;;;;-1:-1:-1;10733:133:0;;;;;:::i;:::-;;:::i;13181:567::-;;;;;;;;;;-1:-1:-1;13181:567:0;;;;;:::i;:::-;;:::i;6429:38::-;;;;;;;;;;;;;:::i;5688:306::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;24442:97::-;;;;;;;;;;-1:-1:-1;24442:97:0;;;;;:::i;:::-;;:::i;15189:699::-;;;;;;;;;;-1:-1:-1;15189:699:0;;;;;:::i;:::-;;:::i;6511:27::-;;;;;;;;;;;;;:::i;6025:39::-;;;;;;;;;;;;;:::i;5428:73::-;5459:42;5428:73;:::o;6071:28::-;;;;:::o;4768:111::-;;;;;;;;;;;;;;-1:-1:-1;;;4768:111:0;;;;;:::o;10562:80::-;10634:5;;;;;;;;;;;;-1:-1:-1;;;10634:5:0;;;;10562:80;:::o;5367:26::-;;;;;;-1:-1:-1;;;;;5367:26:0;;:::o;5334:::-;;;;;;:::o;24671:120::-;-1:-1:-1;;;;;24769:14:0;;24745:4;24769:14;;;:4;:14;;;;;;;;24671:120;;;;:::o;11170:161::-;11247:4;11264:37;11273:10;11285:7;11294:6;11264:8;:37::i;:::-;-1:-1:-1;11319:4:0;11170:161;;;;:::o;14870:114::-;14917:7;14962:13;4400:1;14962:2;:13;:::i;:::-;14944:14;;:32;;;;:::i;:::-;14937:39;;14870:114;:::o;10297:83::-;10370:7;;10297:83;:::o;11657:306::-;-1:-1:-1;;;;;11778:19:0;;11757:4;11778:19;;;:11;:19;;;;;;;;11798:10;11778:31;;;;;;;;-1:-1:-1;;11778:52:0;11774:126;;-1:-1:-1;;;;;11847:19:0;;;;;;:11;:19;;;;;;;;11867:10;11847:31;;;;;;;:41;;11882:6;;11847:19;:41;;11882:6;;11847:41;:::i;:::-;;;;-1:-1:-1;;11774:126:0;11919:36;11929:6;11937:9;11948:6;11919:9;:36::i;:::-;11912:43;;11657:306;;;;;;:::o;14482:264::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;;;;;;;;;14624:3:::1;14614:7;;:13;;;;:::i;:::-;14602:7;14591;14581;;:17;;;;:::i;:::-;14580:29;;;;:::i;:::-;:48;;14572:109;;;;-1:-1:-1::0;;;14572:109:0::1;;;;;;;:::i;:::-;14731:7;14720;14710;;:17;;;;:::i;:::-;14709:29;;;;:::i;:::-;14692:14;:46:::0;-1:-1:-1;;14482:264:0:o;6179:33::-;;;;:::o;12536:141::-;12589:7;12646:21;12664:1;12646:9;:21::i;:::-;12628:15;5459:42;12628:9;:15::i;:::-;:39;;;;:::i;:::-;12617:7;;:51;;;;:::i;5078:42::-;5116:4;5078:42;:::o;6106:25::-;;;;:::o;10386:80::-;4400:1;10386:80;:::o;12685:488::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;5116:4:::1;12792:6;:21;;;;:65;;;;;5166:4;12834:7;:23;;;;12792:65;:117;;;;;5220:4;12878:11;:31;;;;12792:117;12784:170;;;;-1:-1:-1::0;;;12784:170:0::1;;;;;;;:::i;:::-;5273:4;12973:16;12982:7:::0;12973:6;:16:::1;:::i;:::-;:35;;;;12965:80;;;;-1:-1:-1::0;;;12965:80:0::1;;;;;;;:::i;:::-;13056:9;:25:::0;;-1:-1:-1;;13056:25:0::1;;::::0;;::::1;;-1:-1:-1::0;;13092:27:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13130:35:0::1;-1:-1:-1::0;;;13130:35:0;;;::::1;;::::0;;;::::1;::::0;;12685:488::o;12246:140::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12338:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12338:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12246:140::o;14201:273::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;14346:4:::1;14332:7;;14342:1;14332:11;;;;:::i;:::-;:18;;;;:::i;:::-;14320:7;14309;14299;;:17;;;;:::i;:::-;14298:29;;;;:::i;:::-;:53;;14290:121;;;;-1:-1:-1::0;;;14290:121:0::1;;;;;;;:::i;:::-;14459:7;14448;14438;;:17;;;;:::i;:::-;14437:29;;;;:::i;:::-;14422:12;:44:::0;-1:-1:-1;;14201:273:0:o;5400:21::-;;;-1:-1:-1;;;;;5400:21:0;;:::o;16392:134::-;16505:13;;;16392:134::o;6343:34::-;;;;;;:::o;6476:28::-;;;;:::o;14992:189::-;15121:6;;15083:7;;5320:5;;15131:21;;15111:17;;-1:-1:-1;;;;;15121:6:0;15111:9;:17::i;:::-;:41;;;;:::i;:::-;15110:62;;;;:::i;:::-;15103:70;14992:189;-1:-1:-1;;14992:189:0:o;15896:217::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;16026:3:::1;16000:22;:29;;15992:64;;;;-1:-1:-1::0;;;15992:64:0::1;;;;;;;:::i;:::-;16067:13;:38:::0;15896:217::o;9055:654::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9134:22:0;::::1;9126:96;;;;-1:-1:-1::0;;;9126:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9241:16:0;::::1;5459:42;9241:16;;9233:90;;;;-1:-1:-1::0;;;9233:90:0::1;;;;;;;:::i;:::-;9354:6;::::0;9334:34:::1;::::0;-1:-1:-1;;;;;9354:6:0::1;;9334:19;:34::i;:::-;9379:35;9399:8;9409:4;9379:19;:35::i;:::-;9449:6;::::0;9459:1:::1;::::0;9439:17:::1;::::0;-1:-1:-1;;;;;9449:6:0::1;9439:9;:17::i;:::-;:21;9435:127;;;9494:6;::::0;9477:73:::1;::::0;-1:-1:-1;;;;;9494:6:0::1;9502:8:::0;9512:17:::1;9494:6:::0;9512:9:::1;:17::i;:::-;9531:5;9538::::0;9545:4:::1;9477:16;:73::i;:::-;;9435:127;9601:6;::::0;;-1:-1:-1;;;;;9618:17:0;;::::1;-1:-1:-1::0;;;;;;9618:17:0;::::1;::::0;::::1;::::0;;;9651:40:::1;::::0;9601:6;::::1;::::0;9618:17;9601:6;;9651:40:::1;::::0;9582:16:::1;::::0;9651:40:::1;6956:1;9055:654:::0;:::o;12111:127::-;-1:-1:-1;;;;;12202:28:0;12178:4;12202:28;;;:19;:28;;;;;;;;;12111:127::o;6384:36::-;;;;;;;;;:::o;24551:108::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24629:14:0::1;24646:5;24629:14:::0;;;:4:::1;:14;::::0;;;;:22;;-1:-1:-1;;24629:22:0::1;::::0;;24551:108::o;12394:134::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12482:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12482:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12394:134::o;11971:132::-;-1:-1:-1;;;;;12065:30:0;12041:4;12065:30;;;:21;:30;;;;;;;;;11971:132::o;14057:136::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;14146:19;:39;;-1:-1:-1;;;;;;14146:39:0::1;-1:-1:-1::0;;;;;14146:39:0;;;::::1;::::0;;;::::1;::::0;;14057:136::o;14754:108::-;14797:7;14840:13;4400:1;14840:2;:13;:::i;:::-;14824:12;;:30;;;;:::i;10872:117::-;-1:-1:-1;;;;;10965:16:0;10938:7;10965:16;;;:7;:16;;;;;;;10872:117::o;9717:225::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;9796:6:::1;::::0;9776:34:::1;::::0;-1:-1:-1;;;;;9796:6:0::1;;9776:19;:34::i;:::-;9840:6;::::0;;-1:-1:-1;;;;;;9857:19:0;::::1;::::0;;;9892:42:::1;::::0;-1:-1:-1;;;;;9840:6:0;;::::1;::::0;9821:16:::1;::::0;9840:6;;9892:42:::1;::::0;9821:16;;9892:42:::1;6956:1;9717:225::o:0;13756:293::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;13889:11:::1;:42:::0;;-1:-1:-1;;;;;13889:42:0;;::::1;-1:-1:-1::0;;;;;;13889:42:0;;::::1;;::::0;;;13942:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;13999:21;:42;;;;;::::1;::::0;::::1;;::::0;;13756:293::o;10648:79::-;10718:6;;-1:-1:-1;;;;;10718:6:0;10648:79;:::o;22284:399::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;22346:14:::1;::::0;::::1;;22345:15;22337:52;;;;-1:-1:-1::0;;;22337:52:0::1;;;;;;;:::i;:::-;22408:16;::::0;::::1;::::0;::::1;;;22400:53;;;;-1:-1:-1::0;;;22400:53:0::1;;;;;;;:::i;:::-;22464:14;:21:::0;;-1:-1:-1;;22464:21:0::1;22481:4;22464:21;::::0;;22523:6:::1;::::0;22539:5:::1;::::0;22513:17:::1;::::0;-1:-1:-1;;;;;22523:6:0::1;22513:9;:17::i;:::-;:22;::::0;22533:2:::1;22513:22;:::i;:::-;22512:32;;;;:::i;:::-;22496:13;:48:::0;22579:6:::1;::::0;22595:5:::1;::::0;22569:17:::1;::::0;-1:-1:-1;;;;;22579:6:0::1;22569:9;:17::i;:::-;:22;::::0;22589:2:::1;22569:22;:::i;:::-;22568:32;;;;:::i;:::-;22555:10;:45:::0;22643:9:::1;::::0;22611:62:::1;::::0;22628:4:::1;::::0;22643:9:::1;::::0;::::1;-1:-1:-1::0;;;;;22643:9:0::1;-1:-1:-1::0;;22611:8:0::1;:62::i;:::-;22284:399::o:0;10472:84::-;10546:7;;;;;;;;;;;;-1:-1:-1;;;10546:7:0;;;;10472:84;:::o;10997:165::-;11075:4;11092:40;11102:10;11114:9;11125:6;11092:9;:40::i;:::-;-1:-1:-1;11150:4:0;;10997:165;-1:-1:-1;;;10997:165:0:o;5177:47::-;5220:4;5177:47;:::o;16534:115::-;16629:12;;;16534:115::o;6138:34::-;;;;;;:::o;16121:263::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;16230:19:::1;:33:::0;;-1:-1:-1;;16230:33:0::1;;::::0;::::1;;;;::::0;;16274:22:::1;:47:::0;;-1:-1:-1;;16274:47:0::1;::::0;::::1;;;::::0;;16337:39:::1;::::0;::::1;::::0;::::1;::::0;16230:33;;16337:39:::1;:::i;:::-;;;;;;;;16121:263:::0;;:::o;4888:181::-;;;;;;;;;;;;;;-1:-1:-1;;;4888:181:0;;;;;-1:-1:-1;;;4888:181:0;;;;;-1:-1:-1;;;4888:181:0;;;;;-1:-1:-1;;;4888:181:0;;;;:::o;10733:133::-;-1:-1:-1;;;;;10835:19:0;;;10817:7;10835:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10733:133::o;13181:567::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;13316:7:::1;:29:::0;;-1:-1:-1;;13316:29:0::1;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;13356:29:0::1;::::0;;;::::1;;;-1:-1:-1::0;;13396:33:0::1;-1:-1:-1::0;;;13396:33:0;;::::1;;;-1:-1:-1::0;;13440:19:0::1;-1:-1:-1::0;;;13440:19:0;;::::1;;;-1:-1:-1::0;;13470:26:0::1;-1:-1:-1::0;;;13470:26:0;;::::1;::::0;;;::::1;;::::0;;;13396:33;13527:21:::1;13356:29:::0;13316;13527:21:::1;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;13507:7;:66:::0;;-1:-1:-1;;;;13507:66:0::1;-1:-1:-1::0;;;13507:66:0::1;::::0;;::::1;;;::::0;;:17:::1;13619::::0;-1:-1:-1;;13600:36:0::1;::::0;13619:17;;::::1;::::0;::::1;::::0;13600:16:::1;:36;:::i;:::-;13675:7;:12:::0;13584:52:::1;::::0;;::::1;::::0;-1:-1:-1;13584:52:0;;13655:32:::1;::::0;-1:-1:-1;;;13675:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;13655:17:0;;::::1;;:32;:::i;:::-;:41;;;;13647:93;;;;-1:-1:-1::0;;;13647:93:0::1;;;;;;;:::i;:::-;6956:1;13181:567:::0;;;;;:::o;6429:38::-;;;;;;-1:-1:-1;;;;;6429:38:0;;:::o;5688:306::-;;;;;;;;;-1:-1:-1;;;;;5688:306:0;;;;;;;;;;;;;;:::o;24442:97::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24510:14:0::1;;::::0;;;:4:::1;:14;::::0;;;;:21;;-1:-1:-1;;24510:21:0::1;24527:4;24510:21;::::0;;24442:97::o;15189:699::-;6903:6;;-1:-1:-1;;;;;6903:6:0;6913:10;6903:20;6895:50;;;;-1:-1:-1;;;6895:50:0;;;;;;;:::i;:::-;15389:16:::1;15369;15359:7;;:26;;;;:::i;:::-;15358:47;;;;:::i;:::-;15342:13;:63:::0;15430:7:::1;::::0;15457:13;;15430:23:::1;::::0;15440:13;;15430:23:::1;:::i;:::-;15429:41;;;;:::i;:::-;15416:10;:54:::0;;;15489:13:::1;::::0;:27:::1;;15481:73;;;;-1:-1:-1::0;;;15481:73:0::1;;;;;;;:::i;:::-;15598:6;::::0;5320:5:::1;::::0;15588:17:::1;::::0;-1:-1:-1;;;;;15598:6:0::1;15588:9;:17::i;:::-;:23;::::0;15608:3:::1;15588:23;:::i;:::-;15587:44;;;;:::i;:::-;15573:10;;:58;;15565:106;;;;-1:-1:-1::0;;;15565:106:0::1;;;;;;;:::i;:::-;15714:9;15704:7;;:19;;;;:::i;:::-;15690:10;;:33;;15682:92;;;;-1:-1:-1::0;;;15682:92:0::1;;;;;;;:::i;:::-;15820:9;15810:7;;:19;;;;:::i;:::-;15793:13;;:36;;15785:95;;;;-1:-1:-1::0;;;15785:95:0::1;;;;;;;:::i;:::-;15189:699:::0;;;;:::o;6511:27::-;;;;:::o;6025:39::-;;;;;;;;;:::o;11339:310::-;-1:-1:-1;;;;;11434:20:0;;11426:52;;;;-1:-1:-1;;;11426:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11497:21:0;;11489:53;;;;-1:-1:-1;;;11489:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11555:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;;:37;;;11608:33;;;;;11586:6;;11608:33;:::i;:::-;;;;;;;;11339:310;;;:::o;17023:1992::-;17102:4;-1:-1:-1;;;;;17127:18:0;;17119:68;;;;-1:-1:-1;;;17119:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17206:16:0;;17198:64;;;;-1:-1:-1;;;17198:64:0;;;;;;;:::i;:::-;17290:1;17281:6;:10;17273:64;;;;-1:-1:-1;;;17273:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17357:10:0;;;;;;:4;:10;;;;;;;;17356:11;:24;;;;-1:-1:-1;;;;;;17372:8:0;;;;;;:4;:8;;;;;;;;17371:9;17356:24;17348:33;;;;;;-1:-1:-1;;;;;17482:13:0;;17394:8;17482:13;;;:7;:13;;;;;;17394:8;;;;17482:13;;17478:162;;;17518:4;17512:10;;17478:162;;;-1:-1:-1;;;;;17544:11:0;;;;;;:7;:11;;;;;;;;17540:100;;;17579:4;17572:11;;17540:100;;;-1:-1:-1;17624:4:0;17540:100;17654:20;17665:4;17671:2;17654:10;:20::i;:::-;17650:644;;;17695:14;;;;17691:89;;17730:34;;-1:-1:-1;;;17730:34:0;;;;;;;:::i;17691:89::-;17798:3;:11;;;;17805:4;17798:11;17794:232;;;-1:-1:-1;;;;;17834:27:0;;;;;;:21;:27;;;;;;;;17833:28;:58;;;;-1:-1:-1;;;;;;17866:25:0;;;;;;:21;:25;;;;;;;;17865:26;17833:58;17829:182;;;17934:12;;17924:6;:22;;17916:75;;;;-1:-1:-1;;;17916:75:0;;;;;;;:::i;:::-;18058:9;;-1:-1:-1;;;;;18044:24:0;;;18058:9;;;;;18044:24;;;;:33;;;18073:4;18072:5;18044:33;18040:243;;;-1:-1:-1;;;;;18103:25:0;;;;;;:21;:25;;;;;;;;18098:170;;18187:14;;18177:6;18161:13;18171:2;18161:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18153:95;;;;-1:-1:-1;;;18153:95:0;;;;;;;:::i;:::-;18310:4;18306:632;;;18336:6;;;;18331:596;;18367:19;;;;;;;18363:549;;;18411:28;18442:24;18460:4;18442:9;:24::i;:::-;18411:55;;18517:13;;18493:20;:37;18489:404;;18577:10;;18618:22;;;;18614:97;;;18675:13;;18665:6;;5320:5;;18675:13;18655:17;;-1:-1:-1;;;;;18665:6:0;18655:9;:17::i;:::-;:33;;;;:::i;:::-;18654:54;;;;:::i;:::-;18644:64;;18614:97;18765:7;18741:20;:31;18737:72;;18799:7;18776:30;;18737:72;18835:34;18848:20;18835:12;:34::i;:::-;18489:404;;18363:549;;18955:52;18972:4;18978:2;18982:6;18990:3;18995:4;19001:5;18955:16;:52::i;:::-;18948:59;17023:1992;-1:-1:-1;;;;;;;17023:1992:0:o;22691:753::-;22832:16;;22810:4;;22832:16;;;;;22827:228;;22865:28;22884:4;22890:2;22865:18;:28::i;:::-;22913:16;;;;;;;22912:17;:41;;;;;22933:20;22944:4;22950:2;22933:10;:20::i;:::-;22912:51;;;;;22958:5;22957:6;22912:51;22908:136;;;22984:44;;-1:-1:-1;;;22984:44:0;;;;;;;:::i;22908:136::-;-1:-1:-1;;;;;23101:25:0;;23067:12;23101:25;;;:19;:25;;;;;;23082:4;;23101:25;;;:52;;-1:-1:-1;;;;;;23130:23:0;;;;;;:19;:23;;;;;;;;23101:52;23097:99;;;-1:-1:-1;23179:5:0;23097:99;-1:-1:-1;;;;;23208:13:0;;;;;;:7;:13;;;;;:23;;23225:6;;23208:13;:23;;23225:6;;23208:23;:::i;:::-;;;;-1:-1:-1;23242:22:0;;-1:-1:-1;23268:7:0;23267:55;;23316:6;23267:55;;;23279:34;23289:4;23295:3;23300:4;23306:6;23279:9;:34::i;:::-;-1:-1:-1;;;;;23333:11:0;;;;;;:7;:11;;;;;:29;;23242:80;;-1:-1:-1;23242:80:0;;23333:11;;;:29;;23242:80;;23333:29;:::i;:::-;;;;;;;;23395:2;-1:-1:-1;;;;;23380:34:0;23389:4;-1:-1:-1;;;;;23380:34:0;;23399:14;23380:34;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;23432:4:0;;22691:753;-1:-1:-1;;;;;;;;22691:753:0:o;16657:358::-;16758:6;;16726:4;;-1:-1:-1;;;;;16750:14:0;;;16758:6;;16750:14;;;;:43;;-1:-1:-1;16787:6:0;;-1:-1:-1;;;;;16781:12:0;;;16787:6;;16781:12;;16750:43;:79;;;;-1:-1:-1;16823:6:0;;-1:-1:-1;;;;;16823:6:0;16810:9;:19;;16750:79;:118;;;;-1:-1:-1;;;;;;16847:21:0;;;;;;:17;:21;;;;;;;;16846:22;16750:118;:159;;;;-1:-1:-1;;;;;;16886:23:0;;;;;;:17;:23;;;;;;;;16885:24;16750:159;:186;;;;-1:-1:-1;;;;;;16926:10:0;;5459:42;16926:10;;16750:186;:219;;;;-1:-1:-1;;;;;;16953:16:0;;;;16750:219;:257;;;;-1:-1:-1;;;;;;16986:21:0;;17002:4;16986:21;;16743:264;16657:358;-1:-1:-1;;;16657:358:0:o;19023:2347::-;6797:6;:13;;-1:-1:-1;;6797:13:0;6806:4;6797:13;;;19106:30:::1;::::0;;::::1;::::0;::::1;::::0;;19129:7:::1;19106:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;19106:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;19106:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19106:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19106:30:0;::::1;::::0;;::::1;::::0;;;;;;19147:60:::1;;19189:7;;;19147:60;19243:4;19223:26;::::0;;;:11:::1;:26;::::0;;;;;;;19258:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19258:9:0::1;19223:46:::0;;;;;;;;-1:-1:-1;;19223:67:0::1;19219:166;;19327:4;19307:26;::::0;;;:11:::1;:26;::::0;;;;;;;19342:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19342:9:0::1;19307:46:::0;;;;;;;-1:-1:-1;;19307:66:0;;19219:166:::1;19397:17;19482:1;19462:6;:16;;;19418:60;;19442:6;:16;;;19419:39;;:20;:39;;;;:::i;:::-;19418:60;;;;:::i;:::-;19417:66;;;;:::i;:::-;19397:86:::0;-1:-1:-1;19494:15:0::1;19512:32;19397:86:::0;19512:20;:32:::1;:::i;:::-;19589:16;::::0;;19603:1:::1;19589:16:::0;;;;;::::1;::::0;;19494:50;;-1:-1:-1;19565:21:0::1;::::0;19589:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19589:16:0::1;19565:40;;19634:4;19616;19621:1;19616:7;;;;;;-1:-1:-1::0;;;19616:7:0::1;;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;19616:23:0::1;;;-1:-1:-1::0;;;;;19616:23:0::1;;;::::0;::::1;19660:9;;;;;;;;;-1:-1:-1::0;;;;;19660:9:0::1;-1:-1:-1::0;;;;;19660:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19650:4;19655:1;19650:7;;;;;;-1:-1:-1::0;;;19650:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19650:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19693:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;19693:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;19768:7;;19790:1:::1;::::0;19806:4;;19833::::1;::::0;19853:15:::1;::::0;19693:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19689:233;;19904:7;;;;;;19689:233;19955:21;19934:18;20041:7:::0;20015:22:::1;20028:9:::0;19955:21;20015:22:::1;:::i;:::-;20014:34;;;;:::i;:::-;19987:61:::0;-1:-1:-1;20065:13:0;;20061:417:::1;;20099:9;::::0;20268:21;;20099:239:::1;::::0;-1:-1:-1;;;20099:239:0;;-1:-1:-1;;;;;20099:9:0::1;::::0;;::::1;::::0;::::1;::::0;:25:::1;::::0;20132:16;;20099:239:::1;::::0;20176:4:::1;::::0;20200:9;;20228:1:::1;::::0;;;20268:21:::1;::::0;20308:15:::1;::::0;20099:239:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;20099:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20099:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20095:372;;20445:7;;;;;;;;20095:372;;;;20363:40;20375:16;20393:9;20363:40;;;;;;;:::i;:::-;;;;;;;;20095:372;20490:30;20504:16:::0;20490:30;::::1;:::i;:::-;;;20551:6;:16;;;20531:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;20666:16:::1;::::0;::::1;::::0;20644:18:::1;::::0;::::1;::::0;20578:12:::1;::::0;-1:-1:-1;20578:12:0;;20630:52;;::::1;::::0;20631:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;20630:52;;;;:::i;:::-;20719:7;::::0;20601:81;;-1:-1:-1;20693:22:0::1;::::0;20719:7;;::::1;-1:-1:-1::0;;;;;20719:7:0::1;20718:78;;20795:1;20718:78;;;20776:6;:16;;;20744:48;;20758:6;:14;;;20745:27;;:10;:27;;;;:::i;:::-;20744:48;;;;:::i;:::-;20693:103:::0;-1:-1:-1;20807:24:0::1;20848:35;20693:103:::0;20848:18;:35:::1;:::i;:::-;20834:50;::::0;:10;:50:::1;:::i;:::-;20807:77:::0;-1:-1:-1;20899:20:0;;20895:133:::1;;20949:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20949:21:0;;::::1;::::0;21006:5:::1;::::0;20983:16;;20949:67:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20936:80:0;;-1:-1:-1;;20895:133:0::1;21042:22:::0;;21038:139:::1;;21094:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;21094:23:0;;::::1;::::0;21155:5:::1;::::0;21130:18;;21094:71:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21081:84:0;;-1:-1:-1;;21038:139:0::1;21191:18:::0;;21187:176:::1;;21236:9;;;;;;;;;-1:-1:-1::0;;;;;21236:9:0::1;-1:-1:-1::0;;;;;21236:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21226:4;21231:1;21226:7;;;;;;-1:-1:-1::0;;;21226:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21226:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21277:7:::1;::::0;21267;;21277;;;::::1;::::0;;::::1;::::0;21267:4;;21272:1:::1;::::0;21267:7;::::1;;;-1:-1:-1::0;;;21267:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21267:17:0;;::::1;:7;::::0;;::::1;::::0;;;;;:17;21331:19;;21299:52:::1;::::0;21309:4;;21315:14;;21331:19:::1;21299:9;:52::i;:::-;6821:1;;;;;;;;;;;-1:-1:-1::0;6833:6:0;:14;;-1:-1:-1;;6833:14:0;;;19023:2347::o;21841:435::-;21924:16;;;;;;;21923:17;21915:65;;;;-1:-1:-1;;;21915:65:0;;;;;;;:::i;:::-;21996:20;22007:4;22013:2;21996:10;:20::i;:::-;21995:21;:37;;;;-1:-1:-1;22026:6:0;;-1:-1:-1;;;;;22020:12:0;;;22026:6;;22020:12;21995:37;21991:278;;;-1:-1:-1;;;;;22049:23:0;;;;;;:17;:23;;;;;;;;:30;;22075:4;-1:-1:-1;;22049:30:0;;;;;;;;22094:19;:25;;;;;;;:32;;;;;;;;;;22141:16;:23;;22049:30;-1:-1:-1;;22141:23:0;;;;;;;;22179:19;:26;;;;;;;;;;22225:32;;;;;;:::i;21991:278::-;21841:435;;:::o;23452:982::-;23560:30;;;;;;;;23583:7;23560:30;;;;;;;;;;;;;;;;-1:-1:-1;;;23560:30:0;;;;;;;;;;;-1:-1:-1;;;23560:30:0;;;;;;;;-1:-1:-1;;;23560:30:0;;;;;;;;-1:-1:-1;;;23560:30:0;;;;;;;;;23540:7;;;23630:205;;;;-1:-1:-1;23667:9:0;:16;;;23630:205;;;23705:4;23701:134;;;-1:-1:-1;23739:9:0;:17;;;;;;23701:134;;;-1:-1:-1;23802:9:0;:21;-1:-1:-1;;;23802:21:0;;;;23701:134;23845:17;5320:5;23865:19;23874:10;23865:6;:19;:::i;:::-;:38;;;;:::i;:::-;23845:58;;23914:18;23978:6;:16;;;23964:6;:11;;;:30;;;;:::i;:::-;23935:60;;23948:6;:11;;;23936:23;;:9;:23;;;;:::i;:::-;23935:60;;;;:::i;:::-;23914:81;-1:-1:-1;24006:15:0;24024:22;23914:81;24024:9;:22;:::i;:::-;24006:40;-1:-1:-1;24061:11:0;;24057:135;;24105:4;24089:22;;;;:7;:22;;;;;:33;;24115:7;;24089:22;:33;;24115:7;;24089:33;:::i;:::-;;;;-1:-1:-1;;24142:38:0;;24165:4;;-1:-1:-1;;;;;24142:38:0;;;;;;;24172:7;;24142:38;:::i;:::-;;;;;;;;24057:135;24206:14;;24202:167;;24248:10;24237:7;;:21;;;;;;;:::i;:::-;;;;;;;;24289:10;24273:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;24319:38:0;;24342:1;;-1:-1:-1;;;;;24319:38:0;;;;;;;24346:10;;24319:38;:::i;:::-;;;;;;;;24202:167;24408:18;24417:9;24408:6;:18;:::i;:::-;24401:25;23452:982;-1:-1:-1;;;;;;;;;;23452:982:0:o;21378:455::-;21489:9;;:187;;-1:-1:-1;;;21489:187:0;;:9;;;;-1:-1:-1;;;;;21489:9:0;;:60;;21557:6;;21489:187;;21589:1;;21605:4;;21624:11;;21650:15;;21489:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21485:341;;21808:7;;21485:341;21708:7;;;;;;;;;-1:-1:-1;;;;;21708:7:0;-1:-1:-1;;;;;21696:19:0;:4;21701:1;21696:7;;;;;;-1:-1:-1;;;21696:7:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21696:19:0;;21692:83;;;21753:6;21736:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;21692:83:0;21378:455;;;:::o;14:162:1:-;81:20;;137:13;;130:21;120:32;;110:2;;166:1;163;156:12;181:161;250:20;;310:6;299:18;;289:29;;279:2;;332:1;329;322:12;347:259;;459:2;447:9;438:7;434:23;430:32;427:2;;;480:6;472;465:22;427:2;524:9;511:23;543:33;570:5;543:33;:::i;611:263::-;;734:2;722:9;713:7;709:23;705:32;702:2;;;755:6;747;740:22;702:2;792:9;786:16;811:33;838:5;811:33;:::i;1151:569::-;;;;1321:2;1309:9;1300:7;1296:23;1292:32;1289:2;;;1342:6;1334;1327:22;1289:2;1386:9;1373:23;1405:33;1432:5;1405:33;:::i;:::-;1457:5;-1:-1:-1;1514:2:1;1499:18;;1486:32;1527:35;1486:32;1527:35;:::i;:::-;1581:7;-1:-1:-1;1640:2:1;1625:18;;1612:32;1653:35;1612:32;1653:35;:::i;:::-;1707:7;1697:17;;;1279:441;;;;;:::o;1725:402::-;;;1854:2;1842:9;1833:7;1829:23;1825:32;1822:2;;;1875:6;1867;1860:22;1822:2;1919:9;1906:23;1938:33;1965:5;1938:33;:::i;:::-;1990:5;-1:-1:-1;2047:2:1;2032:18;;2019:32;2060:35;2019:32;2060:35;:::i;:::-;2114:7;2104:17;;;1812:315;;;;;:::o;2132:470::-;;;;2278:2;2266:9;2257:7;2253:23;2249:32;2246:2;;;2299:6;2291;2284:22;2246:2;2343:9;2330:23;2362:33;2389:5;2362:33;:::i;:::-;2414:5;-1:-1:-1;2471:2:1;2456:18;;2443:32;2484:35;2443:32;2484:35;:::i;:::-;2236:366;;2538:7;;-1:-1:-1;;;2592:2:1;2577:18;;;;2564:32;;2236:366::o;2607:329::-;;;2733:2;2721:9;2712:7;2708:23;2704:32;2701:2;;;2754:6;2746;2739:22;2701:2;2798:9;2785:23;2817:33;2844:5;2817:33;:::i;:::-;2869:5;-1:-1:-1;2893:37:1;2926:2;2911:18;;2893:37;:::i;:::-;2883:47;;2691:245;;;;;:::o;2941:327::-;;;3070:2;3058:9;3049:7;3045:23;3041:32;3038:2;;;3091:6;3083;3076:22;3038:2;3135:9;3122:23;3154:33;3181:5;3154:33;:::i;:::-;3206:5;3258:2;3243:18;;;;3230:32;;-1:-1:-1;;;3028:240:1:o;3273:262::-;;;3396:2;3384:9;3375:7;3371:23;3367:32;3364:2;;;3417:6;3409;3402:22;3364:2;3445:28;3463:9;3445:28;:::i;3540:344::-;;;;3683:2;3671:9;3662:7;3658:23;3654:32;3651:2;;;3704:6;3696;3689:22;3651:2;3732:30;3752:9;3732:30;:::i;:::-;3722:40;;3781:39;3816:2;3805:9;3801:18;3781:39;:::i;:::-;3771:49;;3839:39;3874:2;3863:9;3859:18;3839:39;:::i;:::-;3829:49;;3641:243;;;;;:::o;3889:494::-;;;;;;4064:3;4052:9;4043:7;4039:23;4035:33;4032:2;;;4086:6;4078;4071:22;4032:2;4114:30;4134:9;4114:30;:::i;:::-;4104:40;;4163:39;4198:2;4187:9;4183:18;4163:39;:::i;:::-;4153:49;;4221:39;4256:2;4245:9;4241:18;4221:39;:::i;:::-;4211:49;;4279:39;4314:2;4303:9;4299:18;4279:39;:::i;:::-;4269:49;;4337:40;4372:3;4361:9;4357:19;4337:40;:::i;:::-;4327:50;;4022:361;;;;;;;;:::o;4388:190::-;;4500:2;4488:9;4479:7;4475:23;4471:32;4468:2;;;4521:6;4513;4506:22;4468:2;-1:-1:-1;4549:23:1;;4458:120;-1:-1:-1;4458:120:1:o;4583:258::-;;;4712:2;4700:9;4691:7;4687:23;4683:32;4680:2;;;4733:6;4725;4718:22;4680:2;-1:-1:-1;;4761:23:1;;;4831:2;4816:18;;;4803:32;;-1:-1:-1;4670:171:1:o;4846:316::-;;;;5003:2;4991:9;4982:7;4978:23;4974:32;4971:2;;;5024:6;5016;5009:22;4971:2;5058:9;5052:16;5042:26;;5108:2;5097:9;5093:18;5087:25;5077:35;;5152:2;5141:9;5137:18;5131:25;5121:35;;4961:201;;;;;:::o;5167:395::-;;;;;5330:3;5318:9;5309:7;5305:23;5301:33;5298:2;;;5352:6;5344;5337:22;5298:2;-1:-1:-1;;5380:23:1;;;5450:2;5435:18;;5422:32;;-1:-1:-1;5501:2:1;5486:18;;5473:32;;5552:2;5537:18;5524:32;;-1:-1:-1;5288:274:1;-1:-1:-1;5288:274:1:o;5567:469::-;;5664:5;5658:12;5691:6;5686:3;5679:19;5717:4;5746:2;5741:3;5737:12;5730:19;;5783:2;5776:5;5772:14;5804:3;5816:195;5830:6;5827:1;5824:13;5816:195;;;5895:13;;-1:-1:-1;;;;;5891:39:1;5879:52;;5951:12;;;;5986:15;;;;5927:1;5845:9;5816:195;;;-1:-1:-1;6027:3:1;;5634:402;-1:-1:-1;;;;;5634:402:1:o;6041:205::-;6241:3;6232:14::o;6251:203::-;-1:-1:-1;;;;;6415:32:1;;;;6397:51;;6385:2;6370:18;;6352:102::o;6459:529::-;-1:-1:-1;;;;;6810:15:1;;;6792:34;;6862:15;;;6857:2;6842:18;;6835:43;6914:15;;;6909:2;6894:18;;6887:43;6966:15;;;6961:2;6946:18;;6939:43;6741:3;6726:19;;6708:280::o;6993:615::-;-1:-1:-1;;;;;7360:15:1;;;7342:34;;7407:2;7392:18;;7385:34;;;;7450:2;7435:18;;7428:34;;;;7493:2;7478:18;;7471:34;;;;7542:15;;;7536:3;7521:19;;7514:44;7322:3;7574:19;;7567:35;;;;7291:3;7276:19;;7258:350::o;7613:187::-;7778:14;;7771:22;7753:41;;7741:2;7726:18;;7708:92::o;8030:524::-;;8309:6;8298:9;8291:25;8352:3;8347:2;8336:9;8332:18;8325:31;8373:63;8431:3;8420:9;8416:19;8408:6;8373:63;:::i;:::-;-1:-1:-1;;;;;8472:32:1;;;;8467:2;8452:18;;8445:60;-1:-1:-1;8536:2:1;8521:18;8514:34;8365:71;8281:273;-1:-1:-1;;8281:273:1:o;8559:603::-;;8700:2;8729;8718:9;8711:21;8761:6;8755:13;8804:6;8799:2;8788:9;8784:18;8777:34;8829:4;8842:140;8856:6;8853:1;8850:13;8842:140;;;8951:14;;;8947:23;;8941:30;8917:17;;;8936:2;8913:26;8906:66;8871:10;;8842:140;;;9000:6;8997:1;8994:13;8991:2;;;9070:4;9065:2;9056:6;9045:9;9041:22;9037:31;9030:45;8991:2;-1:-1:-1;9146:2:1;9125:15;-1:-1:-1;;9121:29:1;9106:45;;;;9153:2;9102:54;;8680:482;-1:-1:-1;;;8680:482:1:o;9167:399::-;9369:2;9351:21;;;9408:2;9388:18;;;9381:30;9447:34;9442:2;9427:18;;9420:62;-1:-1:-1;;;9513:2:1;9498:18;;9491:33;9556:3;9541:19;;9341:225::o;9571:348::-;9773:2;9755:21;;;9812:2;9792:18;;;9785:30;9851:26;9846:2;9831:18;;9824:54;9910:2;9895:18;;9745:174::o;9924:412::-;10126:2;10108:21;;;10165:2;10145:18;;;10138:30;10204:34;10199:2;10184:18;;10177:62;-1:-1:-1;;;10270:2:1;10255:18;;10248:46;10326:3;10311:19;;10098:238::o;10341:341::-;10543:2;10525:21;;;10582:2;10562:18;;;10555:30;-1:-1:-1;;;10616:2:1;10601:18;;10594:47;10673:2;10658:18;;10515:167::o;10687:399::-;10889:2;10871:21;;;10928:2;10908:18;;;10901:30;10967:34;10962:2;10947:18;;10940:62;-1:-1:-1;;;11033:2:1;11018:18;;11011:33;11076:3;11061:19;;10861:225::o;11091:398::-;11293:2;11275:21;;;11332:2;11312:18;;;11305:30;11371:34;11366:2;11351:18;;11344:62;-1:-1:-1;;;11437:2:1;11422:18;;11415:32;11479:3;11464:19;;11265:224::o;11494:347::-;11696:2;11678:21;;;11735:2;11715:18;;;11708:30;11774:25;11769:2;11754:18;;11747:53;11832:2;11817:18;;11668:173::o;11846:399::-;12048:2;12030:21;;;12087:2;12067:18;;;12060:30;12126:34;12121:2;12106:18;;12099:62;-1:-1:-1;;;12192:2:1;12177:18;;12170:33;12235:3;12220:19;;12020:225::o;12250:397::-;12452:2;12434:21;;;12491:2;12471:18;;;12464:30;12530:34;12525:2;12510:18;;12503:62;-1:-1:-1;;;12596:2:1;12581:18;;12574:31;12637:3;12622:19;;12424:223::o;12652:356::-;12854:2;12836:21;;;12873:18;;;12866:30;12932:34;12927:2;12912:18;;12905:62;12999:2;12984:18;;12826:182::o;13013:404::-;13215:2;13197:21;;;13254:2;13234:18;;;13227:30;13293:34;13288:2;13273:18;;13266:62;-1:-1:-1;;;13359:2:1;13344:18;;13337:38;13407:3;13392:19;;13187:230::o;13422:348::-;13624:2;13606:21;;;13663:2;13643:18;;;13636:30;13702:26;13697:2;13682:18;;13675:54;13761:2;13746:18;;13596:174::o;13775:406::-;13977:2;13959:21;;;14016:2;13996:18;;;13989:30;14055:34;14050:2;14035:18;;14028:62;-1:-1:-1;;;14121:2:1;14106:18;;14099:40;14171:3;14156:19;;13949:232::o;14186:343::-;14388:2;14370:21;;;14427:2;14407:18;;;14400:30;-1:-1:-1;;;14461:2:1;14446:18;;14439:49;14520:2;14505:18;;14360:169::o;14534:403::-;14736:2;14718:21;;;14775:2;14755:18;;;14748:30;14814:34;14809:2;14794:18;;14787:62;-1:-1:-1;;;14880:2:1;14865:18;;14858:37;14927:3;14912:19;;14708:229::o;14942:405::-;15144:2;15126:21;;;15183:2;15163:18;;;15156:30;15222:34;15217:2;15202:18;;15195:62;-1:-1:-1;;;15288:2:1;15273:18;;15266:39;15337:3;15322:19;;15116:231::o;15352:419::-;15554:2;15536:21;;;15593:2;15573:18;;;15566:30;15632:34;15627:2;15612:18;;15605:62;15703:25;15698:2;15683:18;;15676:53;15761:3;15746:19;;15526:245::o;15776:410::-;15978:2;15960:21;;;16017:2;15997:18;;;15990:30;16056:34;16051:2;16036:18;;16029:62;-1:-1:-1;;;16122:2:1;16107:18;;16100:44;16176:3;16161:19;;15950:236::o;16191:401::-;16393:2;16375:21;;;16432:2;16412:18;;;16405:30;16471:34;16466:2;16451:18;;16444:62;-1:-1:-1;;;16537:2:1;16522:18;;16515:35;16582:3;16567:19;;16365:227::o;16597:348::-;16799:2;16781:21;;;16838:2;16818:18;;;16811:30;16877:26;16872:2;16857:18;;16850:54;16936:2;16921:18;;16771:174::o;16950:425::-;17152:2;17134:21;;;17191:2;17171:18;;;17164:30;17230:34;17225:2;17210:18;;17203:62;17301:31;17296:2;17281:18;;17274:59;17365:3;17350:19;;17124:251::o;17380:346::-;17582:2;17564:21;;;17621:2;17601:18;;;17594:30;-1:-1:-1;;;17655:2:1;17640:18;;17633:52;17717:2;17702:18;;17554:172::o;17731:365::-;17937:6;17970:15;;;17952:34;;18022:15;;;18017:2;18002:18;;17995:43;18074:15;;;18069:2;18054:18;;18047:43;17915:2;17900:18;;17882:214::o;18101:602::-;18386:6;18419:15;;;18401:34;;18471:15;;;18466:2;18451:18;;18444:43;18523:15;;;18518:2;18503:18;;18496:43;18575:15;;;18570:2;18555:18;;18548:43;18628:15;;18622:3;18607:19;;18600:44;18681:15;;;18675:3;18660:19;;18653:44;18363:3;18348:19;;18330:373::o;18708:177::-;18854:25;;;18842:2;18827:18;;18809:76::o;18890:588::-;;19189:6;19178:9;19171:25;19232:6;19227:2;19216:9;19212:18;19205:34;19275:3;19270:2;19259:9;19255:18;19248:31;19296:63;19354:3;19343:9;19339:19;19331:6;19296:63;:::i;:::-;-1:-1:-1;;;;;19395:32:1;;;;19390:2;19375:18;;19368:60;-1:-1:-1;19459:3:1;19444:19;19437:35;19288:71;19161:317;-1:-1:-1;;;19161:317:1:o;19483:248::-;19657:25;;;19713:2;19698:18;;19691:34;19645:2;19630:18;;19612:119::o;19736:184::-;19908:4;19896:17;;;;19878:36;;19866:2;19851:18;;19833:87::o;19925:224::-;;19992:6;20025:2;20022:1;20018:10;20055:2;20052:1;20048:10;20086:3;20082:2;20078:12;20073:3;20070:21;20067:2;;;20094:18;;:::i;:::-;20130:13;;19972:177;-1:-1:-1;;;;19972:177:1:o;20154:128::-;;20225:1;20221:6;20218:1;20215:13;20212:2;;;20231:18;;:::i;:::-;-1:-1:-1;20267:9:1;;20202:80::o;20287:217::-;;20353:1;20343:2;;-1:-1:-1;;;20378:31:1;;20432:4;20429:1;20422:15;20460:4;20385:1;20450:15;20343:2;-1:-1:-1;20489:9:1;;20333:171::o;20509:453::-;20605:6;20628:5;20642:314;20691:1;20728:2;20718:8;20715:16;20705:2;;20735:5;;;20705:2;20776:4;20771:3;20767:14;20761:4;20758:24;20755:2;;;20785:18;;:::i;:::-;20835:2;20825:8;20821:17;20818:2;;;20850:16;;;;20818:2;20929:17;;;;;20889:15;;20642:314;;;20586:376;;;;;;;:::o;20967:148::-;;21054:55;-1:-1:-1;;21095:4:1;21081:19;;21075:4;21120:922;21204:8;21194:2;;-1:-1:-1;21245:1:1;21259:5;;21194:2;21293:4;21283:2;;-1:-1:-1;21330:1:1;21344:5;;21283:2;21375:4;21393:1;21388:59;;;;21461:1;21456:183;;;;21368:271;;21388:59;21418:1;21409:10;;21432:5;;;21456:183;21493:3;21483:8;21480:17;21477:2;;;21500:18;;:::i;:::-;21556:1;21546:8;21542:16;21533:25;;21584:3;21577:5;21574:14;21571:2;;;21591:18;;:::i;:::-;21624:5;;;21368:271;;21723:2;21713:8;21710:16;21704:3;21698:4;21695:13;21691:36;21685:2;21675:8;21672:16;21667:2;21661:4;21658:12;21654:35;21651:77;21648:2;;;-1:-1:-1;21760:19:1;;;21795:14;;;21792:2;;;21812:18;;:::i;:::-;21845:5;;21648:2;21892:42;21930:3;21920:8;21914:4;21911:1;21892:42;:::i;:::-;21967:6;21962:3;21958:16;21949:7;21946:29;21943:2;;;21978:18;;:::i;:::-;22016:20;;21184:858;-1:-1:-1;;;;21184:858:1:o;22047:168::-;;22153:1;22149;22145:6;22141:14;22138:1;22135:21;22130:1;22123:9;22116:17;22112:45;22109:2;;;22160:18;;:::i;:::-;-1:-1:-1;22200:9:1;;22099:116::o;22220:217::-;;22288:6;22344:10;;;;22314;;22366:12;;;22363:2;;;22381:18;;:::i;:::-;22418:13;;22268:169;-1:-1:-1;;;22268:169:1:o;22442:125::-;;22510:1;22507;22504:8;22501:2;;;22515:18;;:::i;:::-;-1:-1:-1;22552:9:1;;22491:76::o;22572:127::-;22633:10;22628:3;22624:20;22621:1;22614:31;22664:4;22661:1;22654:15;22688:4;22685:1;22678:15;22704:133;-1:-1:-1;;;;;22781:31:1;;22771:42;;22761:2;;22827:1;22824;22817:12;22761:2;22751:86;:::o

Swarm Source

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