ETH Price: $3,895.81 (+0.29%)

Token

ERC-20: Hulk Pepe (HULKPEPE)
 

Overview

Max Total Supply

22,630.973830933 HULKPEPE

Holders

169

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.600187045 HULKPEPE

Value
$0.00
0xc9B4edb7357b55142B1459f99645f0274Fa1ae9A
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:
HulkPepe

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-08-09
*/

/*
Smashing the supply one burn and buy at a time 🐸👊🏼🔥 

https://t.me/HulkPepeETH

hulkpepe.wtf

https://twitter.com/hulkpepeeth
*/

// 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 HulkPepe 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 = 25_000;
    string constant private _name = "Hulk Pepe";
    string constant private _symbol = "HULKPEPE";
    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: 2000,
        sellFee: 4000,
        transferFee: 1000
    });

    Ratios public _ratios = Ratios({
        liquidity: 0,
        marketing: 5850,
        development: 150,
        burn: 0,
        buyback: 0,
        totalSwap: 6000
    });

    uint256 constant public maxBuyTaxes = 2000;
    uint256 constant public maxSellTaxes = 4000;
    uint256 constant public maxTransferTaxes = 2000;
    uint256 constant public maxRoundtripTax = 6000;
    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(0x64Dd2fE1F48fe46982b9aE474EaE89e112FeEb94), 
        development: payable(0x210511214e30823d8BCAE3d29e4134704F3286b4),
        liquidity: payable(0x9C8d02561A21113196B6451c5816aE4Dd52033E6),
        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 * 25) / 10000;
    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"}]

60806040526000600355620000176009600a6200080c565b62000025906161a8620008f7565b600981905560408051606080820183526107d0808352610fa06020808501919091526103e893850193909352600a805461ffff191690911763ffff00001916630fa000001761ffff60201b199081166503e800000000178255845160c08101865260008082526116da8287015260968288015281850181905260808083019190915261177060a090920191909152600b805463ffffffff19166316da0000179092166496000000001765ffffffffffff60301b19166b17700000000000000000000017909155845190810185527364dd2fe1f48fe46982b9ae474eae89e112feeb9480825273210511214e30823d8bcae3d29e4134704f3286b4948201859052739c8d02561a21113196b6451c5816ae4dd52033e695820186905261dead91909301819052600e80546001600160a01b03199081169094179055600f805484169094179093556010805483169094179093556011805490911690911790556012805461ff001916905560165561271090620001a2906019620008f7565b620001ae91906200079e565b60175560646009546002620001c49190620008f7565b620001d091906200079e565b601855601980546001600160b01b031916306201000002179055600f54601c80546001600160a01b039092166001600160a01b031990921691909117905546603814156200024657600c8054610100600160a81b0319167410ed43c718714eb63d5aa57b78b54704e256024e0017905562000358565b46606114156200029257600c805474d99d1c33f9fc3444f8101754abc46c52416550d100610100600160a81b0319909116179055601c80546001600160a01b0319163317905562000358565b4660011480620002a25750466004145b80620002ae5750466003145b15620002e257600c8054610100600160a81b031916747a250d5630b4cf539739df2c5dacb4c659f2488d0017905562000358565b4661a86a14156200031b57600c8054610100600160a81b0319167460ae616a2155ee3d9a68541ba4544862310933d40017905562000358565b4660fa14156200035357600c8054610100600160a81b03191674f491e7b69e4244ad4002bc14e878a34207e38c290017905562000358565b600080fd5b600954601c80546001600160a01b0390811660009081526001602052604080822085905592549251929091169290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91620003b49162000795565b60405180910390a3600c60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200040b57600080fd5b505afa15801562000420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000446919062000714565b6001600160a01b031663c9c65396600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004a357600080fd5b505afa158015620004b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004de919062000714565b306040518363ffffffff1660e01b8152600401620004fe92919062000744565b602060405180830381600087803b1580156200051957600080fd5b505af11580156200052e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000554919062000714565b600d80546001600160a01b0319166001600160a01b03928316179081905581166000908152600260205260409020805460ff19166001179055601c54600c54620005ac9291821691610100909104166000196200064f565b600c54620005cd90309061010090046001600160a01b03166000196200064f565b601c80546001600160a01b0390811660009081526006602090815260408083208054600160ff19918216811790925530855282852080548216831790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054821683179055955490941683526005909152902080549092161790556200092f565b6001600160a01b038316620006815760405162461bcd60e51b815260040162000678906200075e565b60405180910390fd5b6001600160a01b038216620006aa5760405162461bcd60e51b815260040162000678906200075e565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906200070790859062000795565b60405180910390a3505050565b60006020828403121562000726578081fd5b81516001600160a01b03811681146200073d578182fd5b9392505050565b6001600160a01b0392831681529116602082015260400190565b60208082526013908201527f45524332303a205a65726f204164647265737300000000000000000000000000604082015260600190565b90815260200190565b600082620007ba57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611620007d3575062000803565b818704821115620007e857620007e862000919565b80861615620007f657918102915b9490941c938002620007c2565b94509492505050565b60006200073d60001960ff8516846000826200082b575060016200073d565b816200083a575060006200073d565b81600181146200085357600281146200085e5762000892565b60019150506200073d565b60ff84111562000872576200087262000919565b6001841b9150848211156200088b576200088b62000919565b506200073d565b5060208310610133831016604e8410600b8410161715620008ca575081810a83811115620008c457620008c462000919565b6200073d565b620008d98484846001620007bf565b808604821115620008ee57620008ee62000919565b02949350505050565b600081600019048311821515161562000914576200091462000919565b500290565b634e487b7160e01b600052601160045260246000fd5b6133f1806200093f6000396000f3fe60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be41461090e578063fb78680d1461092e578063fd01bd4c1461094e578063fdb78c0e1461096357610376565b8063f08f43a2146108b4578063f8ec6911146108d4578063f94aa1b4146108e957610376565b8063b7df8b36116100d1578063b7df8b3614610838578063bfc2fc351461084d578063cf8477061461086d578063dd62ed3e1461089457610376565b8063b1b08f711461051b578063b3d514fb1461080e578063b55cd04b1461082357610376565b806370a0823111610164578063893d20e81161013e578063893d20e8146107af5780638a8c523c146107c457806395d89b41146107d9578063a9059cbb146107ee57610376565b806370a082311461075a578063715018a61461077a57806375cb1bd11461078f57610376565b8063590ffdce116101a0578063590ffdce146106e55780635cce86cd146107055780636e182809146107255780636ebd00781461074557610376565b80634fbee1931461069057806350a8e016146106b0578063537df3b6146106c557610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a1461061b5780634bbb93eb146106305780634e718e48146106505780634fb2e45d1461067057610376565b806346ea7ac8146105dc57806348726021146105f15780634ada218b1461060657610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610978565b60405161039d9190612a5a565b60405180910390f35b3480156103b257600080fd5b506103bb61097e565b60405161039d919061315e565b3480156103d457600080fd5b506103dd610984565b60405161039d9392919061310b565b3480156103f857600080fd5b506104016109a3565b60405161039d9190612b14565b34801561041a57600080fd5b506103906109c6565b34801561042f57600080fd5b506104386109da565b60405161039d9190612ad4565b34801561045157600080fd5b50610438610460366004612763565b6109e3565b34801561047157600080fd5b50610438610480366004612891565b610a05565b34801561049157600080fd5b506103bb610a1b565b3480156104a657600080fd5b506103bb610a3b565b3480156104bb57600080fd5b506104386104ca36600461281d565b610a41565b3480156104db57600080fd5b506104ef6104ea366004612995565b610abb565b005b3480156104fd57600080fd5b506103bb610b54565b34801561051257600080fd5b506103bb610b5a565b34801561052757600080fd5b506103bb610b88565b34801561053c57600080fd5b506103bb610b8e565b34801561055157600080fd5b5061055a610b94565b60405161039d91906131b1565b34801561057357600080fd5b506104ef6105823660046128d7565b610b99565b34801561059357600080fd5b506104ef6105a236600461285d565b610c7d565b3480156105b357600080fd5b506104ef6105c2366004612995565b610cd2565b3480156105d357600080fd5b50610390610d6f565b3480156105e857600080fd5b506103bb610d7e565b3480156105fd57600080fd5b506103bb610d84565b34801561061257600080fd5b50610438610d8a565b34801561062757600080fd5b506103bb610d93565b34801561063c57600080fd5b506103bb61064b36600461297d565b610d99565b34801561065c57600080fd5b506104ef61066b36600461297d565b610dd1565b34801561067c57600080fd5b506104ef61068b366004612763565b610e21565b34801561069c57600080fd5b506104386106ab366004612763565b610f54565b3480156106bc57600080fd5b50610438610f72565b3480156106d157600080fd5b506104ef6106e0366004612763565b610f80565b3480156106f157600080fd5b506104ef61070036600461285d565b610fcb565b34801561071157600080fd5b50610438610720366004612763565b611020565b34801561073157600080fd5b506104ef610740366004612763565b61103e565b34801561075157600080fd5b506103bb61108a565b34801561076657600080fd5b506103bb610775366004612763565b6110a5565b34801561078657600080fd5b506104ef6110c0565b34801561079b57600080fd5b506104ef6107aa36600461279b565b61114f565b3480156107bb57600080fd5b506103906111b8565b3480156107d057600080fd5b506104ef6111c7565b3480156107e557600080fd5b506104016112cb565b3480156107fa57600080fd5b50610438610809366004612891565b6112ed565b34801561081a57600080fd5b506103bb611304565b34801561082f57600080fd5b506103bb61130a565b34801561084457600080fd5b50610438611310565b34801561085957600080fd5b506104ef6108683660046128bc565b611319565b34801561087957600080fd5b506108826113a0565b60405161039d96959493929190613129565b3480156108a057600080fd5b506103bb6108af3660046127e5565b6113dc565b3480156108c057600080fd5b506104ef6108cf366004612919565b611407565b3480156108e057600080fd5b5061039061153f565b3480156108f557600080fd5b506108fe611554565b60405161039d9493929190612a6e565b34801561091a57600080fd5b506104ef610929366004612763565b611578565b34801561093a57600080fd5b506104ef6109493660046129e3565b6115c6565b34801561095a57600080fd5b506103bb611705565b34801561096f57600080fd5b5061043861170b565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600981526848756c6b205065706560b81b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b6000610a12338484611719565b50600192915050565b6000610a296009600a613263565b601854610a3691906131fd565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610aa6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aa0908490613376565b90915550505b610ab18484846117cd565b90505b9392505050565b601c546001600160a01b03163314610aee5760405162461bcd60e51b8152600401610ae590612c31565b60405180910390fd5b6064600954610afd91906131fd565b8183600954610b0c9190613334565b610b1691906131fd565b1015610b345760405162461bcd60e51b8152600401610ae590612be1565b8082600954610b439190613334565b610b4d91906131fd565b6018555050565b60165481565b6000610b6660006110a5565b610b7161dead6110a5565b610b7b91906131e5565b600954610a369190613376565b6107d081565b60145481565b600990565b601c546001600160a01b03163314610bc35760405162461bcd60e51b8152600401610ae590612c31565b6107d08361ffff1611158015610bdf5750610fa08261ffff1611155b8015610bf157506107d08161ffff1611155b610c0d5760405162461bcd60e51b8152600401610ae590612ce1565b611770610c1a83856131bf565b61ffff161115610c3c5760405162461bcd60e51b8152600401610ae590612d9c565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610ca75760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610ae590612c31565b6103e86009546005610d0e9190613334565b610d1891906131fd565b8183600954610d279190613334565b610d3191906131fd565b1015610d4f5760405162461bcd60e51b8152600401610ae590612f57565b8082600954610d5e9190613334565b610d6891906131fd565b6017555050565b600d546001600160a01b031681565b61177081565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610db7906001600160a01b03166110a5565b610dc19190613334565b610dcb91906131fd565b92915050565b601c546001600160a01b03163314610dfb5760405162461bcd60e51b8152600401610ae590612c31565b6096811115610e1c5760405162461bcd60e51b8152600401610ae5906130db565b601655565b601c546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b038116610e715760405162461bcd60e51b8152600401610ae59061307e565b6001600160a01b03811661dead1415610e9c5760405162461bcd60e51b8152600401610ae59061307e565b601c54610eb3906001600160a01b03166000610fcb565b610ebe816001610fcb565b601c54600090610ed6906001600160a01b03166110a5565b1115610f0257601c54610f00906001600160a01b031682610ef6826110a5565b6000806001611aae565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610faa5760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610ff55760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b031633146110685760405162461bcd60e51b8152600401610ae590612c31565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006110986009600a613263565b601754610a3691906131fd565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110ea5760405162461bcd60e51b8152600401610ae590612c31565b601c54611101906001600160a01b03166000610fcb565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111795760405162461bcd60e51b8152600401610ae590612c31565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111f15760405162461bcd60e51b8152600401610ae590612c31565b60195460ff16156112145760405162461bcd60e51b8152600401610ae590613047565b601954610100900460ff1661123b5760405162461bcd60e51b8152600401610ae590612e19565b6019805460ff19166001179055600d5461271090611261906001600160a01b03166110a5565b61126c90600a613334565b61127691906131fd565b601355600d5461271090611292906001600160a01b03166110a5565b61129d90601e613334565b6112a791906131fd565b601455600c546112c990309061010090046001600160a01b0316600019611719565b565b60408051808201909152600881526748554c4b5045504560c01b602082015290565b60006112fa3384846117cd565b5060019392505050565b610fa081565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113435760405162461bcd60e51b8152600401610ae590612c31565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611394908490612ad4565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114315760405162461bcd60e51b8152600401610ae590612c31565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836114a486886131bf565b6114ae91906131bf565b6114b891906131bf565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114ec91620100008104821691166131bf565b600b5461ffff9182169250829161151591600160301b8104821691600160501b909104166131bf565b61ffff1611156115375760405162461bcd60e51b8152600401610ae590612ec7565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115a25760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115f05760405162461bcd60e51b8152600401610ae590612c31565b82846009546115ff9190613334565b61160991906131fd565b601355600954819061161c908490613334565b61162691906131fd565b6014819055601354111561164c5760405162461bcd60e51b8152600401610ae590612d5b565b600d5461271090611665906001600160a01b03166110a5565b611670906096613334565b61167a91906131fd565b601454111561169b5760405162461bcd60e51b8152600401610ae590612d18565b620f42406009546116ac91906131fd565b60145410156116cd5760405162461bcd60e51b8152600401610ae590612fb4565b620f42406009546116de91906131fd565b60135410156116ff5760405162461bcd60e51b8152600401610ae590612fb4565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b03831661173f5760405162461bcd60e51b8152600401610ae590612e9a565b6001600160a01b0382166117655760405162461bcd60e51b8152600401610ae590612e9a565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117c090859061315e565b60405180910390a3505050565b60006001600160a01b0384166117f55760405162461bcd60e51b8152600401610ae590613002565b6001600160a01b03831661181b5760405162461bcd60e51b8152600401610ae590612b67565b6000821161183b5760405162461bcd60e51b8152600401610ae590612f0e565b6001600160a01b03841660009081526008602052604090205460ff1615801561187d57506001600160a01b03831660009081526008602052604090205460ff16155b61188657600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff16156118b457600192506118e2565b6001600160a01b03861660009081526002602052604090205460ff16156118de57600191506118e2565b5060015b6118ec8787611c2e565b15611a055760195460ff166119135760405162461bcd60e51b8152600401610ae590612baa565b828061191c5750815b1561198a576001600160a01b03871660009081526007602052604090205460ff1615801561196357506001600160a01b03861660009081526007602052604090205460ff16155b1561198a5760175485111561198a5760405162461bcd60e51b8152600401610ae590612dd1565b600c546001600160a01b0387811661010090920416148015906119ab575081155b15611a05576001600160a01b03861660009081526007602052604090205460ff16611a0557601854856119dd886110a5565b6119e791906131e5565b1115611a055760405162461bcd60e51b8152600401610ae590612e50565b8115611a955760125460ff16611a9557601254610100900460ff1615611a95576000611a30306110a5565b90506013548110611a935760145460155460ff1615611a7d57601654600d546127109190611a66906001600160a01b03166110a5565b611a709190613334565b611a7a91906131fd565b90505b808210611a88578091505b611a9182611d04565b505b505b611aa3878787868686611aae565b979650505050505050565b601954600090610100900460ff16611b0e57611aca878761237a565b601954610100900460ff16158015611ae75750611ae78787611c2e565b8015611af1575081155b15611b0e5760405162461bcd60e51b8152600401610ae590612c9f565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b5057506001600160a01b03871660009081526006602052604090205460ff165b15611b59575060005b6001600160a01b03881660009081526001602052604081208054889290611b81908490613376565b909155506000905081611b945786611ba0565b611ba08987878a612457565b6001600160a01b038916600090815260016020526040812080549293508392909190611bcd9084906131e5565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c17919061315e565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c5d5750601c546001600160a01b03838116911614155b8015611c745750601c546001600160a01b03163214155b8015611c9957506001600160a01b03821660009081526005602052604090205460ff16155b8015611cbe57506001600160a01b03831660009081526005602052604090205460ff16155b8015611cd557506001600160a01b03821661dead14155b8015611ce957506001600160a01b03821615155b8015610ab457506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d7a575061236d565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611ddd57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611dfe9190613334565b611e0891906131fd565b611e1291906131fd565b90506000611e208285613376565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e6857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed657600080fd5b505afa158015611eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0e919061277f565b81600181518110611f2f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f7c908590600090869030904290600401613167565b600060405180830381600087803b158015611f9657600080fd5b505af1925050508015611fa7575060015b611fb4575050505061236d565b47600083611fc28684613334565b611fcc91906131fd565b905084156120af57600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d7199285926120199230928c92600092839216904290600401612a99565b6060604051808303818588803b15801561203257600080fd5b505af193505050508015612063575060408051601f3d908101601f19168201909252612060918101906129b6565b60015b6120725750505050505061236d565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681866040516120a69291906131a3565b60405180910390a15b6120b98183613376565b915085600001518660a0018181516120d19190613353565b61ffff90811690915260a08801516040890151600093508392918216916120f9911686613334565b61210391906131fd565b6019549091506000906201000090046001600160a01b031661212657600061214d565b8860a0015161ffff16896080015161ffff16866121439190613334565b61214d91906131fd565b9050600061215b82846131e5565b6121659087613376565b905080156121d757600e546040516001600160a01b03909116906188b890839061218e90612a57565b600060405180830381858888f193505050503d80600081146121cc576040519150601f19603f3d011682016040523d82523d6000602084013e6121d1565b606091505b50909450505b821561224757600f546040516001600160a01b03909116906188b89085906121fe90612a57565b600060405180830381858888f193505050503d806000811461223c576040519150601f19603f3d011682016040523d82523d6000602084013e612241565b606091505b50909450505b811561236257600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561229b57600080fd5b505afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d3919061277f565b876000815181106122f457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061233b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260115461236291899185911661265c565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123a25760405162461bcd60e51b8152600401610ae590612c5c565b6123ac8282611c2e565b1580156123c65750600d546001600160a01b038281169116145b15612453576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161139491612ad4565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124cb5750600a5461ffff166124f4565b84156124e45750600a5462010000900461ffff166124f4565b50600a54600160201b900461ffff165b60006127106125038387613334565b61250d91906131fd565b905060008360a00151846060015161252591906131bf565b61ffff16846060015161ffff168361253d9190613334565b61254791906131fd565b905060006125558284613376565b905080156125c757306000908152600160205260408120805483929061257c9084906131e5565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125be90859061315e565b60405180910390a35b81156126445781600960008282546125df9190613376565b9250508190555081601b60008282546125f891906131e5565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061263b90869061315e565b60405180910390a35b61264e8388613376565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061269990600090889087904290600401612adf565b6000604051808303818588803b1580156126b257600080fd5b505af1935050505080156126c4575060015b6126cd5761273c565b601960029054906101000a90046001600160a01b03166001600160a01b03168360018151811061270d57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316141561273c5781601a600082825461273691906131e5565b90915550505b505050565b80358015158114610a0057600080fd5b803561ffff81168114610a0057600080fd5b600060208284031215612774578081fd5b8135610ab4816133a3565b600060208284031215612790578081fd5b8151610ab4816133a3565b6000806000606084860312156127af578182fd5b83356127ba816133a3565b925060208401356127ca816133a3565b915060408401356127da816133a3565b809150509250925092565b600080604083850312156127f7578182fd5b8235612802816133a3565b91506020830135612812816133a3565b809150509250929050565b600080600060608486031215612831578283fd5b833561283c816133a3565b9250602084013561284c816133a3565b929592945050506040919091013590565b6000806040838503121561286f578182fd5b823561287a816133a3565b915061288860208401612741565b90509250929050565b600080604083850312156128a3578182fd5b82356128ae816133a3565b946020939093013593505050565b600080604083850312156128ce578182fd5b61287a83612741565b6000806000606084860312156128eb578283fd5b6128f484612751565b925061290260208501612751565b915061291060408501612751565b90509250925092565b600080600080600060a08688031215612930578081fd5b61293986612751565b945061294760208701612751565b935061295560408701612751565b925061296360608701612751565b915061297160808701612751565b90509295509295909350565b60006020828403121561298e578081fd5b5035919050565b600080604083850312156129a7578182fd5b50508035926020909101359150565b6000806000606084860312156129ca578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129f8578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a4c5781516001600160a01b031687529582019590820190600101612a27565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612af86080830186612a14565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b4057858101830151858201604001528201612b24565b81811115612b515783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261318660a0830186612a14565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131dc576131dc61338d565b01949350505050565b600082198211156131f8576131f861338d565b500190565b60008261321857634e487b7160e01b81526012600452602481fd5b500490565b80825b600180861161322f575061325a565b8187048211156132415761324161338d565b8086161561324e57918102915b9490941c938002613220565b94509492505050565b6000610ab460001960ff85168460008261327f57506001610ab4565b8161328c57506000610ab4565b81600181146132a257600281146132ac576132d9565b6001915050610ab4565b60ff8411156132bd576132bd61338d565b6001841b9150848211156132d3576132d361338d565b50610ab4565b5060208310610133831016604e8410600b841016171561330c575081810a838111156133075761330761338d565b610ab4565b613319848484600161321d565b80860482111561332b5761332b61338d565b02949350505050565b600081600019048311821515161561334e5761334e61338d565b500290565b600061ffff8381169083168181101561336e5761336e61338d565b039392505050565b6000828210156133885761338861338d565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146133b857600080fd5b5056fea2646970667358221220e9d16456cd110ae31dda3cce8bb112616b3ca1da87f0db2796bf1c0ab77d5d1164736f6c63430008000033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c80634fbee193116101c6578063b1b08f71116100f7578063f08f43a211610095578063f9f92be41161006f578063f9f92be41461090e578063fb78680d1461092e578063fd01bd4c1461094e578063fdb78c0e1461096357610376565b8063f08f43a2146108b4578063f8ec6911146108d4578063f94aa1b4146108e957610376565b8063b7df8b36116100d1578063b7df8b3614610838578063bfc2fc351461084d578063cf8477061461086d578063dd62ed3e1461089457610376565b8063b1b08f711461051b578063b3d514fb1461080e578063b55cd04b1461082357610376565b806370a0823111610164578063893d20e81161013e578063893d20e8146107af5780638a8c523c146107c457806395d89b41146107d9578063a9059cbb146107ee57610376565b806370a082311461075a578063715018a61461077a57806375cb1bd11461078f57610376565b8063590ffdce116101a0578063590ffdce146106e55780635cce86cd146107055780636e182809146107255780636ebd00781461074557610376565b80634fbee1931461069057806350a8e016146106b0578063537df3b6146106c557610376565b80632b28fc7a116102a057806346ea7ac81161023e5780634b3c109a116102185780634b3c109a1461061b5780634bbb93eb146106305780634e718e48146106505780634fb2e45d1461067057610376565b806346ea7ac8146105dc57806348726021146105f15780634ada218b1461060657610376565b806332cde6641161027a57806332cde6641461056757806336fddb04146105875780633f3cf56c146105a7578063452ed4f1146105c757610376565b80632b28fc7a1461051b5780632e8fa82114610530578063313ce5671461054557610376565b8063095ea7b31161030d57806323b872dd116102e757806323b872dd146104af57806326003957146104cf57806328577751146104f15780632b112e491461050657610376565b8063095ea7b3146104655780630fa604e41461048557806318160ddd1461049a57610376565b806306fdde031161034957806306fdde03146103ec5780630758d9241461040e57806307dd79e014610423578063084e4f8a1461044557610376565b806303fd2a451461037b5780630445b667146103a6578063069d955f146103c857610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610978565b60405161039d9190612a5a565b60405180910390f35b3480156103b257600080fd5b506103bb61097e565b60405161039d919061315e565b3480156103d457600080fd5b506103dd610984565b60405161039d9392919061310b565b3480156103f857600080fd5b506104016109a3565b60405161039d9190612b14565b34801561041a57600080fd5b506103906109c6565b34801561042f57600080fd5b506104386109da565b60405161039d9190612ad4565b34801561045157600080fd5b50610438610460366004612763565b6109e3565b34801561047157600080fd5b50610438610480366004612891565b610a05565b34801561049157600080fd5b506103bb610a1b565b3480156104a657600080fd5b506103bb610a3b565b3480156104bb57600080fd5b506104386104ca36600461281d565b610a41565b3480156104db57600080fd5b506104ef6104ea366004612995565b610abb565b005b3480156104fd57600080fd5b506103bb610b54565b34801561051257600080fd5b506103bb610b5a565b34801561052757600080fd5b506103bb610b88565b34801561053c57600080fd5b506103bb610b8e565b34801561055157600080fd5b5061055a610b94565b60405161039d91906131b1565b34801561057357600080fd5b506104ef6105823660046128d7565b610b99565b34801561059357600080fd5b506104ef6105a236600461285d565b610c7d565b3480156105b357600080fd5b506104ef6105c2366004612995565b610cd2565b3480156105d357600080fd5b50610390610d6f565b3480156105e857600080fd5b506103bb610d7e565b3480156105fd57600080fd5b506103bb610d84565b34801561061257600080fd5b50610438610d8a565b34801561062757600080fd5b506103bb610d93565b34801561063c57600080fd5b506103bb61064b36600461297d565b610d99565b34801561065c57600080fd5b506104ef61066b36600461297d565b610dd1565b34801561067c57600080fd5b506104ef61068b366004612763565b610e21565b34801561069c57600080fd5b506104386106ab366004612763565b610f54565b3480156106bc57600080fd5b50610438610f72565b3480156106d157600080fd5b506104ef6106e0366004612763565b610f80565b3480156106f157600080fd5b506104ef61070036600461285d565b610fcb565b34801561071157600080fd5b50610438610720366004612763565b611020565b34801561073157600080fd5b506104ef610740366004612763565b61103e565b34801561075157600080fd5b506103bb61108a565b34801561076657600080fd5b506103bb610775366004612763565b6110a5565b34801561078657600080fd5b506104ef6110c0565b34801561079b57600080fd5b506104ef6107aa36600461279b565b61114f565b3480156107bb57600080fd5b506103906111b8565b3480156107d057600080fd5b506104ef6111c7565b3480156107e557600080fd5b506104016112cb565b3480156107fa57600080fd5b50610438610809366004612891565b6112ed565b34801561081a57600080fd5b506103bb611304565b34801561082f57600080fd5b506103bb61130a565b34801561084457600080fd5b50610438611310565b34801561085957600080fd5b506104ef6108683660046128bc565b611319565b34801561087957600080fd5b506108826113a0565b60405161039d96959493929190613129565b3480156108a057600080fd5b506103bb6108af3660046127e5565b6113dc565b3480156108c057600080fd5b506104ef6108cf366004612919565b611407565b3480156108e057600080fd5b5061039061153f565b3480156108f557600080fd5b506108fe611554565b60405161039d9493929190612a6e565b34801561091a57600080fd5b506104ef610929366004612763565b611578565b34801561093a57600080fd5b506104ef6109493660046129e3565b6115c6565b34801561095a57600080fd5b506103bb611705565b34801561096f57600080fd5b5061043861170b565b61dead81565b60135481565b600a5461ffff80821691620100008104821691600160201b9091041683565b60408051808201909152600981526848756c6b205065706560b81b602082015290565b600c5461010090046001600160a01b031681565b600c5460ff1681565b6001600160a01b03811660009081526008602052604090205460ff165b919050565b6000610a12338484611719565b50600192915050565b6000610a296009600a613263565b601854610a3691906131fd565b905090565b60095490565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610aa6576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610aa0908490613376565b90915550505b610ab18484846117cd565b90505b9392505050565b601c546001600160a01b03163314610aee5760405162461bcd60e51b8152600401610ae590612c31565b60405180910390fd5b6064600954610afd91906131fd565b8183600954610b0c9190613334565b610b1691906131fd565b1015610b345760405162461bcd60e51b8152600401610ae590612be1565b8082600954610b439190613334565b610b4d91906131fd565b6018555050565b60165481565b6000610b6660006110a5565b610b7161dead6110a5565b610b7b91906131e5565b600954610a369190613376565b6107d081565b60145481565b600990565b601c546001600160a01b03163314610bc35760405162461bcd60e51b8152600401610ae590612c31565b6107d08361ffff1611158015610bdf5750610fa08261ffff1611155b8015610bf157506107d08161ffff1611155b610c0d5760405162461bcd60e51b8152600401610ae590612ce1565b611770610c1a83856131bf565b61ffff161115610c3c5760405162461bcd60e51b8152600401610ae590612d9c565b600a805461ffff191661ffff9485161763ffff0000191662010000938516939093029290921765ffff000000001916600160201b9190931602919091179055565b601c546001600160a01b03163314610ca75760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b601c546001600160a01b03163314610cfc5760405162461bcd60e51b8152600401610ae590612c31565b6103e86009546005610d0e9190613334565b610d1891906131fd565b8183600954610d279190613334565b610d3191906131fd565b1015610d4f5760405162461bcd60e51b8152600401610ae590612f57565b8082600954610d5e9190613334565b610d6891906131fd565b6017555050565b600d546001600160a01b031681565b61177081565b601a5490565b60195460ff1681565b601a5481565b600d54600090612710908390610db7906001600160a01b03166110a5565b610dc19190613334565b610dcb91906131fd565b92915050565b601c546001600160a01b03163314610dfb5760405162461bcd60e51b8152600401610ae590612c31565b6096811115610e1c5760405162461bcd60e51b8152600401610ae5906130db565b601655565b601c546001600160a01b03163314610e4b5760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b038116610e715760405162461bcd60e51b8152600401610ae59061307e565b6001600160a01b03811661dead1415610e9c5760405162461bcd60e51b8152600401610ae59061307e565b601c54610eb3906001600160a01b03166000610fcb565b610ebe816001610fcb565b601c54600090610ed6906001600160a01b03166110a5565b1115610f0257601c54610f00906001600160a01b031682610ef6826110a5565b6000806001611aae565b505b601c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b031660009081526006602052604090205460ff1690565b601954610100900460ff1681565b601c546001600160a01b03163314610faa5760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03166000908152600860205260409020805460ff19169055565b601c546001600160a01b03163314610ff55760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526007602052604090205460ff1690565b601c546001600160a01b031633146110685760405162461bcd60e51b8152600401610ae590612c31565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b60006110986009600a613263565b601754610a3691906131fd565b6001600160a01b031660009081526001602052604090205490565b601c546001600160a01b031633146110ea5760405162461bcd60e51b8152600401610ae590612c31565b601c54611101906001600160a01b03166000610fcb565b601c80546001600160a01b031981169091556040516001600160a01b039091169060009082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b601c546001600160a01b031633146111795760405162461bcd60e51b8152600401610ae590612c31565b600e80546001600160a01b039485166001600160a01b031991821617909155600f80549385169382169390931790925560108054919093169116179055565b601c546001600160a01b031690565b601c546001600160a01b031633146111f15760405162461bcd60e51b8152600401610ae590612c31565b60195460ff16156112145760405162461bcd60e51b8152600401610ae590613047565b601954610100900460ff1661123b5760405162461bcd60e51b8152600401610ae590612e19565b6019805460ff19166001179055600d5461271090611261906001600160a01b03166110a5565b61126c90600a613334565b61127691906131fd565b601355600d5461271090611292906001600160a01b03166110a5565b61129d90601e613334565b6112a791906131fd565b601455600c546112c990309061010090046001600160a01b0316600019611719565b565b60408051808201909152600881526748554c4b5045504560c01b602082015290565b60006112fa3384846117cd565b5060019392505050565b610fa081565b601b5490565b60155460ff1681565b601c546001600160a01b031633146113435760405162461bcd60e51b8152600401610ae590612c31565b6012805461ff001916610100841515021790556015805460ff19168215151790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790611394908490612ad4565b60405180910390a15050565b600b5461ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b8204811691600160501b90041686565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b601c546001600160a01b031633146114315760405162461bcd60e51b8152600401610ae590612c31565b600b805461ffff191661ffff8781169190911763ffff0000191662010000878316021765ffff000000001916600160201b868316021767ffff0000000000001916600160301b858316021769ffff00000000000000001916600160401b9184169190910217905580836114a486886131bf565b6114ae91906131bf565b6114b891906131bf565b600b805461ffff60501b1916600160501b61ffff93841602179055600a546000916114ec91620100008104821691166131bf565b600b5461ffff9182169250829161151591600160301b8104821691600160501b909104166131bf565b61ffff1611156115375760405162461bcd60e51b8152600401610ae590612ec7565b505050505050565b6019546201000090046001600160a01b031681565b600e54600f546010546011546001600160a01b039384169392831692918216911684565b601c546001600160a01b031633146115a25760405162461bcd60e51b8152600401610ae590612c31565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b601c546001600160a01b031633146115f05760405162461bcd60e51b8152600401610ae590612c31565b82846009546115ff9190613334565b61160991906131fd565b601355600954819061161c908490613334565b61162691906131fd565b6014819055601354111561164c5760405162461bcd60e51b8152600401610ae590612d5b565b600d5461271090611665906001600160a01b03166110a5565b611670906096613334565b61167a91906131fd565b601454111561169b5760405162461bcd60e51b8152600401610ae590612d18565b620f42406009546116ac91906131fd565b60145410156116cd5760405162461bcd60e51b8152600401610ae590612fb4565b620f42406009546116de91906131fd565b60135410156116ff5760405162461bcd60e51b8152600401610ae590612fb4565b50505050565b601b5481565b601254610100900460ff1681565b6001600160a01b03831661173f5760405162461bcd60e51b8152600401610ae590612e9a565b6001600160a01b0382166117655760405162461bcd60e51b8152600401610ae590612e9a565b6001600160a01b0380841660008181526004602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906117c090859061315e565b60405180910390a3505050565b60006001600160a01b0384166117f55760405162461bcd60e51b8152600401610ae590613002565b6001600160a01b03831661181b5760405162461bcd60e51b8152600401610ae590612b67565b6000821161183b5760405162461bcd60e51b8152600401610ae590612f0e565b6001600160a01b03841660009081526008602052604090205460ff1615801561187d57506001600160a01b03831660009081526008602052604090205460ff16155b61188657600080fd5b6001600160a01b0384166000908152600260205260408120548190819060ff16156118b457600192506118e2565b6001600160a01b03861660009081526002602052604090205460ff16156118de57600191506118e2565b5060015b6118ec8787611c2e565b15611a055760195460ff166119135760405162461bcd60e51b8152600401610ae590612baa565b828061191c5750815b1561198a576001600160a01b03871660009081526007602052604090205460ff1615801561196357506001600160a01b03861660009081526007602052604090205460ff16155b1561198a5760175485111561198a5760405162461bcd60e51b8152600401610ae590612dd1565b600c546001600160a01b0387811661010090920416148015906119ab575081155b15611a05576001600160a01b03861660009081526007602052604090205460ff16611a0557601854856119dd886110a5565b6119e791906131e5565b1115611a055760405162461bcd60e51b8152600401610ae590612e50565b8115611a955760125460ff16611a9557601254610100900460ff1615611a95576000611a30306110a5565b90506013548110611a935760145460155460ff1615611a7d57601654600d546127109190611a66906001600160a01b03166110a5565b611a709190613334565b611a7a91906131fd565b90505b808210611a88578091505b611a9182611d04565b505b505b611aa3878787868686611aae565b979650505050505050565b601954600090610100900460ff16611b0e57611aca878761237a565b601954610100900460ff16158015611ae75750611ae78787611c2e565b8015611af1575081155b15611b0e5760405162461bcd60e51b8152600401610ae590612c9f565b6001600160a01b03871660009081526006602052604090205460019060ff1680611b5057506001600160a01b03871660009081526006602052604090205460ff165b15611b59575060005b6001600160a01b03881660009081526001602052604081208054889290611b81908490613376565b909155506000905081611b945786611ba0565b611ba08987878a612457565b6001600160a01b038916600090815260016020526040812080549293508392909190611bcd9084906131e5565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c17919061315e565b60405180910390a350600198975050505050505050565b601c546000906001600160a01b03848116911614801590611c5d5750601c546001600160a01b03838116911614155b8015611c745750601c546001600160a01b03163214155b8015611c9957506001600160a01b03821660009081526005602052604090205460ff16155b8015611cbe57506001600160a01b03831660009081526005602052604090205460ff16155b8015611cd557506001600160a01b03821661dead14155b8015611ce957506001600160a01b03821615155b8015610ab457506001600160a01b0383163014159392505050565b6012805460ff191660011790556040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201819052611d7a575061236d565b306000908152600460209081526040808320600c5461010090046001600160a01b0316845290915290205460001914611ddd57306000908152600460209081526040808320600c5461010090046001600160a01b03168452909152902060001990555b600060028260a0015161ffff16836000015161ffff1685611dfe9190613334565b611e0891906131fd565b611e1291906131fd565b90506000611e208285613376565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611e6857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611ed657600080fd5b505afa158015611eea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0e919061277f565b81600181518110611f2f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152600c5460405163791ac94760e01b81526101009091049091169063791ac94790611f7c908590600090869030904290600401613167565b600060405180830381600087803b158015611f9657600080fd5b505af1925050508015611fa7575060015b611fb4575050505061236d565b47600083611fc28684613334565b611fcc91906131fd565b905084156120af57600c5460105460405163f305d71960e01b81526001600160a01b0361010090930483169263f305d7199285926120199230928c92600092839216904290600401612a99565b6060604051808303818588803b15801561203257600080fd5b505af193505050508015612063575060408051601f3d908101601f19168201909252612060918101906129b6565b60015b6120725750505050505061236d565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450681866040516120a69291906131a3565b60405180910390a15b6120b98183613376565b915085600001518660a0018181516120d19190613353565b61ffff90811690915260a08801516040890151600093508392918216916120f9911686613334565b61210391906131fd565b6019549091506000906201000090046001600160a01b031661212657600061214d565b8860a0015161ffff16896080015161ffff16866121439190613334565b61214d91906131fd565b9050600061215b82846131e5565b6121659087613376565b905080156121d757600e546040516001600160a01b03909116906188b890839061218e90612a57565b600060405180830381858888f193505050503d80600081146121cc576040519150601f19603f3d011682016040523d82523d6000602084013e6121d1565b606091505b50909450505b821561224757600f546040516001600160a01b03909116906188b89085906121fe90612a57565b600060405180830381858888f193505050503d806000811461223c576040519150601f19603f3d011682016040523d82523d6000602084013e612241565b606091505b50909450505b811561236257600c60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561229b57600080fd5b505afa1580156122af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d3919061277f565b876000815181106122f457634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601954885162010000909104909116908890600190811061233b57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260115461236291899185911661265c565b505050505050505050505b506012805460ff19169055565b601954610100900460ff16156123a25760405162461bcd60e51b8152600401610ae590612c5c565b6123ac8282611c2e565b1580156123c65750600d546001600160a01b038281169116145b15612453576001600160a01b03821660009081526005602090815260408083208054600160ff199182168117909255600690935292819020805490921683179091556019805461010061ff00199182168117909255601280549091169091179055517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579161139491612ad4565b5050565b6040805160c081018252600b5461ffff808216835262010000820481166020840152600160201b8204811693830193909352600160301b810483166060830152600160401b810483166080830152600160501b900490911660a08201526000908185156124cb5750600a5461ffff166124f4565b84156124e45750600a5462010000900461ffff166124f4565b50600a54600160201b900461ffff165b60006127106125038387613334565b61250d91906131fd565b905060008360a00151846060015161252591906131bf565b61ffff16846060015161ffff168361253d9190613334565b61254791906131fd565b905060006125558284613376565b905080156125c757306000908152600160205260408120805483929061257c9084906131e5565b909155505060405130906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906125be90859061315e565b60405180910390a35b81156126445781600960008282546125df9190613376565b9250508190555081601b60008282546125f891906131e5565b90915550506040516000906001600160a01b038c16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061263b90869061315e565b60405180910390a35b61264e8388613376565b9a9950505050505050505050565b600c5460405163b6f9de9560e01b81526101009091046001600160a01b03169063b6f9de9590849061269990600090889087904290600401612adf565b6000604051808303818588803b1580156126b257600080fd5b505af1935050505080156126c4575060015b6126cd5761273c565b601960029054906101000a90046001600160a01b03166001600160a01b03168360018151811061270d57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316141561273c5781601a600082825461273691906131e5565b90915550505b505050565b80358015158114610a0057600080fd5b803561ffff81168114610a0057600080fd5b600060208284031215612774578081fd5b8135610ab4816133a3565b600060208284031215612790578081fd5b8151610ab4816133a3565b6000806000606084860312156127af578182fd5b83356127ba816133a3565b925060208401356127ca816133a3565b915060408401356127da816133a3565b809150509250925092565b600080604083850312156127f7578182fd5b8235612802816133a3565b91506020830135612812816133a3565b809150509250929050565b600080600060608486031215612831578283fd5b833561283c816133a3565b9250602084013561284c816133a3565b929592945050506040919091013590565b6000806040838503121561286f578182fd5b823561287a816133a3565b915061288860208401612741565b90509250929050565b600080604083850312156128a3578182fd5b82356128ae816133a3565b946020939093013593505050565b600080604083850312156128ce578182fd5b61287a83612741565b6000806000606084860312156128eb578283fd5b6128f484612751565b925061290260208501612751565b915061291060408501612751565b90509250925092565b600080600080600060a08688031215612930578081fd5b61293986612751565b945061294760208701612751565b935061295560408701612751565b925061296360608701612751565b915061297160808701612751565b90509295509295909350565b60006020828403121561298e578081fd5b5035919050565b600080604083850312156129a7578182fd5b50508035926020909101359150565b6000806000606084860312156129ca578283fd5b8351925060208401519150604084015190509250925092565b600080600080608085870312156129f8578182fd5b5050823594602084013594506040840135936060013592509050565b6000815180845260208085019450808401835b83811015612a4c5781516001600160a01b031687529582019590820190600101612a27565b509495945050505050565b90565b6001600160a01b0391909116815260200190565b6001600160a01b03948516815292841660208401529083166040830152909116606082015260800190565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b901515815260200190565b600085825260806020830152612af86080830186612a14565b6001600160a01b03949094166040830152506060015292915050565b6000602080835283518082850152825b81811015612b4057858101830151858201604001528201612b24565b81811115612b515783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526018908201527f54726164696e67206e6f742079657420656e61626c6564210000000000000000604082015260600190565b60208082526030908201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060408201526f37b3103a37ba30b61039bab838363c9760811b606082015260800190565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b60208082526023908201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60408201526232b21760e91b606082015260800190565b60208082526022908201527f5072652d6c6971756964697479207472616e736665722070726f74656374696f604082015261371760f11b606082015260800190565b60208082526017908201527f43616e6e6f7420657863656564206d6178696d756d732e000000000000000000604082015260600190565b60208082526023908201527f43616e6e6f742062652061626f766520312e3525206f662063757272656e742060408201526228249760e91b606082015260800190565b60208082526021908201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746040820152601760f91b606082015260800190565b6020808252818101527f43616e6e6f742065786365656420726f756e6474726970206d6178696d756d2e604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b60208082526018908201527f4c6971756964697479206d7573742062652061646465642e0000000000000000604082015260600190565b6020808252602a908201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760408201526930b63632ba29b4bd329760b11b606082015260800190565b60208082526013908201527245524332303a205a65726f204164647265737360681b604082015260600190565b60208082526027908201527f43616e6e6f74206578636565642073756d206f662062757920616e642073656c60408201526636103332b2b99760c91b606082015260800190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526037908201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660408201527f6520302e3525206f6620746f74616c20737570706c792e000000000000000000606082015260800190565b6020808252602e908201527f43616e6e6f74206265206c6f776572207468616e20302e303030303125206f6660408201526d103a37ba30b61039bab838363c9760911b606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526018908201527f54726164696e6720616c726561647920656e61626c6564210000000000000000604082015260600190565b6020808252603d908201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660408201527f6572206f776e657220746f20746865207a65726f20616464726573732e000000606082015260800190565b60208082526016908201527521b0b73737ba1039b2ba1030b137bb329018971a929760511b604082015260600190565b61ffff93841681529183166020830152909116604082015260600190565b61ffff96871681529486166020860152928516604085015290841660608401528316608083015290911660a082015260c00190565b90815260200190565b600086825285602083015260a0604083015261318660a0830186612a14565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b60ff91909116815260200190565b600061ffff8083168185168083038211156131dc576131dc61338d565b01949350505050565b600082198211156131f8576131f861338d565b500190565b60008261321857634e487b7160e01b81526012600452602481fd5b500490565b80825b600180861161322f575061325a565b8187048211156132415761324161338d565b8086161561324e57918102915b9490941c938002613220565b94509492505050565b6000610ab460001960ff85168460008261327f57506001610ab4565b8161328c57506000610ab4565b81600181146132a257600281146132ac576132d9565b6001915050610ab4565b60ff8411156132bd576132bd61338d565b6001841b9150848211156132d3576132d361338d565b50610ab4565b5060208310610133831016604e8410600b841016171561330c575081810a838111156133075761330761338d565b610ab4565b613319848484600161321d565b80860482111561332b5761332b61338d565b02949350505050565b600081600019048311821515161561334e5761334e61338d565b500290565b600061ffff8381169083168181101561336e5761336e61338d565b039392505050565b6000828210156133885761338861338d565b500390565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146133b857600080fd5b5056fea2646970667358221220e9d16456cd110ae31dda3cce8bb112616b3ca1da87f0db2796bf1c0ab77d5d1164736f6c63430008000033

Deployed Bytecode Sourcemap

3704:21121:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5454:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6097:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4794:112::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;10591:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;5393:26::-;;;;;;;;;;;;;:::i;5360:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;24700:120::-;;;;;;;;;;-1:-1:-1;24700:120:0;;;;;:::i;:::-;;:::i;11199:161::-;;;;;;;;;;-1:-1:-1;11199:161:0;;;;;:::i;:::-;;:::i;14899:114::-;;;;;;;;;;;;;:::i;10326:83::-;;;;;;;;;;;;;:::i;11686:306::-;;;;;;;;;;-1:-1:-1;11686:306:0;;;;;:::i;:::-;;:::i;14511:264::-;;;;;;;;;;-1:-1:-1;14511:264:0;;;;;:::i;:::-;;:::i;:::-;;6205:33;;;;;;;;;;;;;:::i;12565:141::-;;;;;;;;;;;;;:::i;5104:42::-;;;;;;;;;;;;;:::i;6132:25::-;;;;;;;;;;;;;:::i;10415:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;12714:488::-;;;;;;;;;;-1:-1:-1;12714:488:0;;;;;:::i;:::-;;:::i;12275:140::-;;;;;;;;;;-1:-1:-1;12275:140:0;;;;;:::i;:::-;;:::i;14230:273::-;;;;;;;;;;-1:-1:-1;14230:273:0;;;;;:::i;:::-;;:::i;5426:21::-;;;;;;;;;;;;;:::i;5257:46::-;;;;;;;;;;;;;:::i;16421:134::-;;;;;;;;;;;;;:::i;6372:34::-;;;;;;;;;;;;;:::i;6505:28::-;;;;;;;;;;;;;:::i;15021:189::-;;;;;;;;;;-1:-1:-1;15021:189:0;;;;;:::i;:::-;;:::i;15925:217::-;;;;;;;;;;-1:-1:-1;15925:217:0;;;;;:::i;:::-;;:::i;9084:654::-;;;;;;;;;;-1:-1:-1;9084:654:0;;;;;:::i;:::-;;:::i;12140:127::-;;;;;;;;;;-1:-1:-1;12140:127:0;;;;;:::i;:::-;;:::i;6413:36::-;;;;;;;;;;;;;:::i;24580:108::-;;;;;;;;;;-1:-1:-1;24580:108:0;;;;;:::i;:::-;;:::i;12423:134::-;;;;;;;;;;-1:-1:-1;12423:134:0;;;;;:::i;:::-;;:::i;12000:132::-;;;;;;;;;;-1:-1:-1;12000:132:0;;;;;:::i;:::-;;:::i;14086:136::-;;;;;;;;;;-1:-1:-1;14086:136:0;;;;;:::i;:::-;;:::i;14783:108::-;;;;;;;;;;;;;:::i;10901:117::-;;;;;;;;;;-1:-1:-1;10901:117:0;;;;;:::i;:::-;;:::i;9746:225::-;;;;;;;;;;;;;:::i;13785:293::-;;;;;;;;;;-1:-1:-1;13785:293:0;;;;;:::i;:::-;;:::i;10677:79::-;;;;;;;;;;;;;:::i;22313:399::-;;;;;;;;;;;;;:::i;10501:84::-;;;;;;;;;;;;;:::i;11026:165::-;;;;;;;;;;-1:-1:-1;11026:165:0;;;;;:::i;:::-;;:::i;5153:43::-;;;;;;;;;;;;;:::i;16563:115::-;;;;;;;;;;;;;:::i;6164:34::-;;;;;;;;;;;;;:::i;16150:263::-;;;;;;;;;;-1:-1:-1;16150:263:0;;;;;:::i;:::-;;:::i;4915:180::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;10762:133::-;;;;;;;;;;-1:-1:-1;10762:133:0;;;;;:::i;:::-;;:::i;13210:567::-;;;;;;;;;;-1:-1:-1;13210:567:0;;;;;:::i;:::-;;:::i;6458:38::-;;;;;;;;;;;;;:::i;5714:306::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;24471:97::-;;;;;;;;;;-1:-1:-1;24471:97:0;;;;;:::i;:::-;;:::i;15218:699::-;;;;;;;;;;-1:-1:-1;15218:699:0;;;;;:::i;:::-;;:::i;6540:27::-;;;;;;;;;;;;;:::i;6051:39::-;;;;;;;;;;;;;:::i;5454:73::-;5485:42;5454:73;:::o;6097:28::-;;;;:::o;4794:112::-;;;;;;;;;;;;;;-1:-1:-1;;;4794:112:0;;;;;:::o;10591:80::-;10663:5;;;;;;;;;;;;-1:-1:-1;;;10663:5:0;;;;10591:80;:::o;5393:26::-;;;;;;-1:-1:-1;;;;;5393:26:0;;:::o;5360:::-;;;;;;:::o;24700:120::-;-1:-1:-1;;;;;24798:14:0;;24774:4;24798:14;;;:4;:14;;;;;;;;24700:120;;;;:::o;11199:161::-;11276:4;11293:37;11302:10;11314:7;11323:6;11293:8;:37::i;:::-;-1:-1:-1;11348:4:0;11199:161;;;;:::o;14899:114::-;14946:7;14991:13;4426:1;14991:2;:13;:::i;:::-;14973:14;;:32;;;;:::i;:::-;14966:39;;14899:114;:::o;10326:83::-;10399:7;;10326:83;:::o;11686:306::-;-1:-1:-1;;;;;11807:19:0;;11786:4;11807:19;;;:11;:19;;;;;;;;11827:10;11807:31;;;;;;;;-1:-1:-1;;11807:52:0;11803:126;;-1:-1:-1;;;;;11876:19:0;;;;;;:11;:19;;;;;;;;11896:10;11876:31;;;;;;;:41;;11911:6;;11876:19;:41;;11911:6;;11876:41;:::i;:::-;;;;-1:-1:-1;;11803:126:0;11948:36;11958:6;11966:9;11977:6;11948:9;:36::i;:::-;11941:43;;11686:306;;;;;;:::o;14511:264::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;;;;;;;;;14653:3:::1;14643:7;;:13;;;;:::i;:::-;14631:7;14620;14610;;:17;;;;:::i;:::-;14609:29;;;;:::i;:::-;:48;;14601:109;;;;-1:-1:-1::0;;;14601:109:0::1;;;;;;;:::i;:::-;14760:7;14749;14739;;:17;;;;:::i;:::-;14738:29;;;;:::i;:::-;14721:14;:46:::0;-1:-1:-1;;14511:264:0:o;6205:33::-;;;;:::o;12565:141::-;12618:7;12675:21;12693:1;12675:9;:21::i;:::-;12657:15;5485:42;12657:9;:15::i;:::-;:39;;;;:::i;:::-;12646:7;;:51;;;;:::i;5104:42::-;5142:4;5104:42;:::o;6132:25::-;;;;:::o;10415:80::-;4426:1;10415:80;:::o;12714:488::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;5142:4:::1;12821:6;:21;;;;:65;;;;;5192:4;12863:7;:23;;;;12821:65;:117;;;;;5246:4;12907:11;:31;;;;12821:117;12813:170;;;;-1:-1:-1::0;;;12813:170:0::1;;;;;;;:::i;:::-;5299:4;13002:16;13011:7:::0;13002:6;:16:::1;:::i;:::-;:35;;;;12994:80;;;;-1:-1:-1::0;;;12994:80:0::1;;;;;;;:::i;:::-;13085:9;:25:::0;;-1:-1:-1;;13085:25:0::1;;::::0;;::::1;;-1:-1:-1::0;;13121:27:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13159:35:0::1;-1:-1:-1::0;;;13159:35:0;;;::::1;;::::0;;;::::1;::::0;;12714:488::o;12275:140::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12367:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;12367:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12275:140::o;14230:273::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;14375:4:::1;14361:7;;14371:1;14361:11;;;;:::i;:::-;:18;;;;:::i;:::-;14349:7;14338;14328;;:17;;;;:::i;:::-;14327:29;;;;:::i;:::-;:53;;14319:121;;;;-1:-1:-1::0;;;14319:121:0::1;;;;;;;:::i;:::-;14488:7;14477;14467;;:17;;;;:::i;:::-;14466:29;;;;:::i;:::-;14451:12;:44:::0;-1:-1:-1;;14230:273:0:o;5426:21::-;;;-1:-1:-1;;;;;5426:21:0;;:::o;5257:46::-;5299:4;5257:46;:::o;16421:134::-;16534:13;;;16421:134::o;6372:34::-;;;;;;:::o;6505:28::-;;;;:::o;15021:189::-;15150:6;;15112:7;;5346:5;;15160:21;;15140:17;;-1:-1:-1;;;;;15150:6:0;15140:9;:17::i;:::-;:41;;;;:::i;:::-;15139:62;;;;:::i;:::-;15132:70;15021:189;-1:-1:-1;;15021:189:0:o;15925:217::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;16055:3:::1;16029:22;:29;;16021:64;;;;-1:-1:-1::0;;;16021:64:0::1;;;;;;;:::i;:::-;16096:13;:38:::0;15925:217::o;9084:654::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9163:22:0;::::1;9155:96;;;;-1:-1:-1::0;;;9155:96:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9270:16:0;::::1;5485:42;9270:16;;9262:90;;;;-1:-1:-1::0;;;9262:90:0::1;;;;;;;:::i;:::-;9383:6;::::0;9363:34:::1;::::0;-1:-1:-1;;;;;9383:6:0::1;;9363:19;:34::i;:::-;9408:35;9428:8;9438:4;9408:19;:35::i;:::-;9478:6;::::0;9488:1:::1;::::0;9468:17:::1;::::0;-1:-1:-1;;;;;9478:6:0::1;9468:9;:17::i;:::-;:21;9464:127;;;9523:6;::::0;9506:73:::1;::::0;-1:-1:-1;;;;;9523:6:0::1;9531:8:::0;9541:17:::1;9523:6:::0;9541:9:::1;:17::i;:::-;9560:5;9567::::0;9574:4:::1;9506:16;:73::i;:::-;;9464:127;9630:6;::::0;;-1:-1:-1;;;;;9647:17:0;;::::1;-1:-1:-1::0;;;;;;9647:17:0;::::1;::::0;::::1;::::0;;;9680:40:::1;::::0;9630:6;::::1;::::0;9647:17;9630:6;;9680:40:::1;::::0;9611:16:::1;::::0;9680:40:::1;6985:1;9084:654:::0;:::o;12140:127::-;-1:-1:-1;;;;;12231:28:0;12207:4;12231:28;;;:19;:28;;;;;;;;;12140:127::o;6413:36::-;;;;;;;;;:::o;24580:108::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24658:14:0::1;24675:5;24658:14:::0;;;:4:::1;:14;::::0;;;;:22;;-1:-1:-1;;24658:22:0::1;::::0;;24580:108::o;12423:134::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12511:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;12511:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12423:134::o;12000:132::-;-1:-1:-1;;;;;12094:30:0;12070:4;12094:30;;;:21;:30;;;;;;;;;12000:132::o;14086:136::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;14175:19;:39;;-1:-1:-1;;;;;;14175:39:0::1;-1:-1:-1::0;;;;;14175:39:0;;;::::1;::::0;;;::::1;::::0;;14086:136::o;14783:108::-;14826:7;14869:13;4426:1;14869:2;:13;:::i;:::-;14853:12;;:30;;;;:::i;10901:117::-;-1:-1:-1;;;;;10994:16:0;10967:7;10994:16;;;:7;:16;;;;;;;10901:117::o;9746:225::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;9825:6:::1;::::0;9805:34:::1;::::0;-1:-1:-1;;;;;9825:6:0::1;;9805:19;:34::i;:::-;9869:6;::::0;;-1:-1:-1;;;;;;9886:19:0;::::1;::::0;;;9921:42:::1;::::0;-1:-1:-1;;;;;9869:6:0;;::::1;::::0;9850:16:::1;::::0;9869:6;;9921:42:::1;::::0;9850:16;;9921:42:::1;6985:1;9746:225::o:0;13785:293::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;13918:11:::1;:42:::0;;-1:-1:-1;;;;;13918:42:0;;::::1;-1:-1:-1::0;;;;;;13918:42:0;;::::1;;::::0;;;13971:23;:46;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;14028:21;:42;;;;;::::1;::::0;::::1;;::::0;;13785:293::o;10677:79::-;10747:6;;-1:-1:-1;;;;;10747:6:0;10677:79;:::o;22313:399::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;22375:14:::1;::::0;::::1;;22374:15;22366:52;;;;-1:-1:-1::0;;;22366:52:0::1;;;;;;;:::i;:::-;22437:16;::::0;::::1;::::0;::::1;;;22429:53;;;;-1:-1:-1::0;;;22429:53:0::1;;;;;;;:::i;:::-;22493:14;:21:::0;;-1:-1:-1;;22493:21:0::1;22510:4;22493:21;::::0;;22552:6:::1;::::0;22568:5:::1;::::0;22542:17:::1;::::0;-1:-1:-1;;;;;22552:6:0::1;22542:9;:17::i;:::-;:22;::::0;22562:2:::1;22542:22;:::i;:::-;22541:32;;;;:::i;:::-;22525:13;:48:::0;22608:6:::1;::::0;22624:5:::1;::::0;22598:17:::1;::::0;-1:-1:-1;;;;;22608:6:0::1;22598:9;:17::i;:::-;:22;::::0;22618:2:::1;22598:22;:::i;:::-;22597:32;;;;:::i;:::-;22584:10;:45:::0;22672:9:::1;::::0;22640:62:::1;::::0;22657:4:::1;::::0;22672:9:::1;::::0;::::1;-1:-1:-1::0;;;;;22672:9:0::1;-1:-1:-1::0;;22640:8:0::1;:62::i;:::-;22313:399::o:0;10501:84::-;10575:7;;;;;;;;;;;;-1:-1:-1;;;10575:7:0;;;;10501:84;:::o;11026:165::-;11104:4;11121:40;11131:10;11143:9;11154:6;11121:9;:40::i;:::-;-1:-1:-1;11179:4:0;;11026:165;-1:-1:-1;;;11026:165:0:o;5153:43::-;5192:4;5153:43;:::o;16563:115::-;16658:12;;;16563:115::o;6164:34::-;;;;;;:::o;16150:263::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;16259:19:::1;:33:::0;;-1:-1:-1;;16259:33:0::1;;::::0;::::1;;;;::::0;;16303:22:::1;:47:::0;;-1:-1:-1;;16303:47:0::1;::::0;::::1;;;::::0;;16366:39:::1;::::0;::::1;::::0;::::1;::::0;16259:33;;16366:39:::1;:::i;:::-;;;;;;;;16150:263:::0;;:::o;4915:180::-;;;;;;;;;;;;;;-1:-1:-1;;;4915:180:0;;;;;-1:-1:-1;;;4915:180:0;;;;;-1:-1:-1;;;4915:180:0;;;;;-1:-1:-1;;;4915:180:0;;;;:::o;10762:133::-;-1:-1:-1;;;;;10864:19:0;;;10846:7;10864:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;10762:133::o;13210:567::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;13345:7:::1;:29:::0;;-1:-1:-1;;13345:29:0::1;;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;13385:29:0::1;::::0;;;::::1;;;-1:-1:-1::0;;13425:33:0::1;-1:-1:-1::0;;;13425:33:0;;::::1;;;-1:-1:-1::0;;13469:19:0::1;-1:-1:-1::0;;;13469:19:0;;::::1;;;-1:-1:-1::0;;13499:26:0::1;-1:-1:-1::0;;;13499:26:0;;::::1;::::0;;;::::1;;::::0;;;13425:33;13556:21:::1;13385:29:::0;13345;13556:21:::1;:::i;:::-;:35;;;;:::i;:::-;:46;;;;:::i;:::-;13536:7;:66:::0;;-1:-1:-1;;;;13536:66:0::1;-1:-1:-1::0;;;13536:66:0::1;::::0;;::::1;;;::::0;;:17:::1;13648::::0;-1:-1:-1;;13629:36:0::1;::::0;13648:17;;::::1;::::0;::::1;::::0;13629:16:::1;:36;:::i;:::-;13704:7;:12:::0;13613:52:::1;::::0;;::::1;::::0;-1:-1:-1;13613:52:0;;13684:32:::1;::::0;-1:-1:-1;;;13704:12:0;::::1;::::0;::::1;::::0;-1:-1:-1;;;13684:17:0;;::::1;;:32;:::i;:::-;:41;;;;13676:93;;;;-1:-1:-1::0;;;13676:93:0::1;;;;;;;:::i;:::-;6985:1;13210:567:::0;;;;;:::o;6458:38::-;;;;;;-1:-1:-1;;;;;6458:38:0;;:::o;5714:306::-;;;;;;;;;-1:-1:-1;;;;;5714:306:0;;;;;;;;;;;;;;:::o;24471:97::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24539:14:0::1;;::::0;;;:4:::1;:14;::::0;;;;:21;;-1:-1:-1;;24539:21:0::1;24556:4;24539:21;::::0;;24471:97::o;15218:699::-;6932:6;;-1:-1:-1;;;;;6932:6:0;6942:10;6932:20;6924:50;;;;-1:-1:-1;;;6924:50:0;;;;;;;:::i;:::-;15418:16:::1;15398;15388:7;;:26;;;;:::i;:::-;15387:47;;;;:::i;:::-;15371:13;:63:::0;15459:7:::1;::::0;15486:13;;15459:23:::1;::::0;15469:13;;15459:23:::1;:::i;:::-;15458:41;;;;:::i;:::-;15445:10;:54:::0;;;15518:13:::1;::::0;:27:::1;;15510:73;;;;-1:-1:-1::0;;;15510:73:0::1;;;;;;;:::i;:::-;15627:6;::::0;5346:5:::1;::::0;15617:17:::1;::::0;-1:-1:-1;;;;;15627:6:0::1;15617:9;:17::i;:::-;:23;::::0;15637:3:::1;15617:23;:::i;:::-;15616:44;;;;:::i;:::-;15602:10;;:58;;15594:106;;;;-1:-1:-1::0;;;15594:106:0::1;;;;;;;:::i;:::-;15743:9;15733:7;;:19;;;;:::i;:::-;15719:10;;:33;;15711:92;;;;-1:-1:-1::0;;;15711:92:0::1;;;;;;;:::i;:::-;15849:9;15839:7;;:19;;;;:::i;:::-;15822:13;;:36;;15814:95;;;;-1:-1:-1::0;;;15814:95:0::1;;;;;;;:::i;:::-;15218:699:::0;;;;:::o;6540:27::-;;;;:::o;6051:39::-;;;;;;;;;:::o;11368:310::-;-1:-1:-1;;;;;11463:20:0;;11455:52;;;;-1:-1:-1;;;11455:52:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11526:21:0;;11518:53;;;;-1:-1:-1;;;11518:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11584:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;;:37;;;11637:33;;;;;11615:6;;11637:33;:::i;:::-;;;;;;;;11368:310;;;:::o;17052:1992::-;17131:4;-1:-1:-1;;;;;17156:18:0;;17148:68;;;;-1:-1:-1;;;17148:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17235:16:0;;17227:64;;;;-1:-1:-1;;;17227:64:0;;;;;;;:::i;:::-;17319:1;17310:6;:10;17302:64;;;;-1:-1:-1;;;17302:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17386:10:0;;;;;;:4;:10;;;;;;;;17385:11;:24;;;;-1:-1:-1;;;;;;17401:8:0;;;;;;:4;:8;;;;;;;;17400:9;17385:24;17377:33;;;;;;-1:-1:-1;;;;;17511:13:0;;17423:8;17511:13;;;:7;:13;;;;;;17423:8;;;;17511:13;;17507:162;;;17547:4;17541:10;;17507:162;;;-1:-1:-1;;;;;17573:11:0;;;;;;:7;:11;;;;;;;;17569:100;;;17608:4;17601:11;;17569:100;;;-1:-1:-1;17653:4:0;17569:100;17683:20;17694:4;17700:2;17683:10;:20::i;:::-;17679:644;;;17724:14;;;;17720:89;;17759:34;;-1:-1:-1;;;17759:34:0;;;;;;;:::i;17720:89::-;17827:3;:11;;;;17834:4;17827:11;17823:232;;;-1:-1:-1;;;;;17863:27:0;;;;;;:21;:27;;;;;;;;17862:28;:58;;;;-1:-1:-1;;;;;;17895:25:0;;;;;;:21;:25;;;;;;;;17894:26;17862:58;17858:182;;;17963:12;;17953:6;:22;;17945:75;;;;-1:-1:-1;;;17945:75:0;;;;;;;:::i;:::-;18087:9;;-1:-1:-1;;;;;18073:24:0;;;18087:9;;;;;18073:24;;;;:33;;;18102:4;18101:5;18073:33;18069:243;;;-1:-1:-1;;;;;18132:25:0;;;;;;:21;:25;;;;;;;;18127:170;;18216:14;;18206:6;18190:13;18200:2;18190:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;18182:95;;;;-1:-1:-1;;;18182:95:0;;;;;;;:::i;:::-;18339:4;18335:632;;;18365:6;;;;18360:596;;18396:19;;;;;;;18392:549;;;18440:28;18471:24;18489:4;18471:9;:24::i;:::-;18440:55;;18546:13;;18522:20;:37;18518:404;;18606:10;;18647:22;;;;18643:97;;;18704:13;;18694:6;;5346:5;;18704:13;18684:17;;-1:-1:-1;;;;;18694:6:0;18684:9;:17::i;:::-;:33;;;;:::i;:::-;18683:54;;;;:::i;:::-;18673:64;;18643:97;18794:7;18770:20;:31;18766:72;;18828:7;18805:30;;18766:72;18864:34;18877:20;18864:12;:34::i;:::-;18518:404;;18392:549;;18984:52;19001:4;19007:2;19011:6;19019:3;19024:4;19030:5;18984:16;:52::i;:::-;18977:59;17052:1992;-1:-1:-1;;;;;;;17052:1992:0:o;22720:753::-;22861:16;;22839:4;;22861:16;;;;;22856:228;;22894:28;22913:4;22919:2;22894:18;:28::i;:::-;22942:16;;;;;;;22941:17;:41;;;;;22962:20;22973:4;22979:2;22962:10;:20::i;:::-;22941:51;;;;;22987:5;22986:6;22941:51;22937:136;;;23013:44;;-1:-1:-1;;;23013:44:0;;;;;;;:::i;22937:136::-;-1:-1:-1;;;;;23130:25:0;;23096:12;23130:25;;;:19;:25;;;;;;23111:4;;23130:25;;;:52;;-1:-1:-1;;;;;;23159:23:0;;;;;;:19;:23;;;;;;;;23130:52;23126:99;;;-1:-1:-1;23208:5:0;23126:99;-1:-1:-1;;;;;23237:13:0;;;;;;:7;:13;;;;;:23;;23254:6;;23237:13;:23;;23254:6;;23237:23;:::i;:::-;;;;-1:-1:-1;23271:22:0;;-1:-1:-1;23297:7:0;23296:55;;23345:6;23296:55;;;23308:34;23318:4;23324:3;23329:4;23335:6;23308:9;:34::i;:::-;-1:-1:-1;;;;;23362:11:0;;;;;;:7;:11;;;;;:29;;23271:80;;-1:-1:-1;23271:80:0;;23362:11;;;:29;;23271:80;;23362:29;:::i;:::-;;;;;;;;23424:2;-1:-1:-1;;;;;23409:34:0;23418:4;-1:-1:-1;;;;;23409:34:0;;23428:14;23409:34;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;23461:4:0;;22720:753;-1:-1:-1;;;;;;;;22720:753:0:o;16686:358::-;16787:6;;16755:4;;-1:-1:-1;;;;;16779:14:0;;;16787:6;;16779:14;;;;:43;;-1:-1:-1;16816:6:0;;-1:-1:-1;;;;;16810:12:0;;;16816:6;;16810:12;;16779:43;:79;;;;-1:-1:-1;16852:6:0;;-1:-1:-1;;;;;16852:6:0;16839:9;:19;;16779:79;:118;;;;-1:-1:-1;;;;;;16876:21:0;;;;;;:17;:21;;;;;;;;16875:22;16779:118;:159;;;;-1:-1:-1;;;;;;16915:23:0;;;;;;:17;:23;;;;;;;;16914:24;16779:159;:186;;;;-1:-1:-1;;;;;;16955:10:0;;5485:42;16955:10;;16779:186;:219;;;;-1:-1:-1;;;;;;16982:16:0;;;;16779:219;:257;;;;-1:-1:-1;;;;;;17015:21:0;;17031:4;17015:21;;16772:264;16686:358;-1:-1:-1;;;16686:358:0:o;19052:2347::-;6826:6;:13;;-1:-1:-1;;6826:13:0;6835:4;6826:13;;;19135:30:::1;::::0;;::::1;::::0;::::1;::::0;;19158:7:::1;19135:30:::0;::::1;::::0;;::::1;::::0;;;;::::1;::::0;::::1;;::::0;::::1;::::0;-1:-1:-1;;;19135:30:0;::::1;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;19135:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19135:30:0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;19135:30:0;::::1;::::0;;::::1;::::0;;;;;;19176:60:::1;;19218:7;;;19176:60;19272:4;19252:26;::::0;;;:11:::1;:26;::::0;;;;;;;19287:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19287:9:0::1;19252:46:::0;;;;;;;;-1:-1:-1;;19252:67:0::1;19248:166;;19356:4;19336:26;::::0;;;:11:::1;:26;::::0;;;;;;;19371:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;19371:9:0::1;19336:46:::0;;;;;;;-1:-1:-1;;19336:66:0;;19248:166:::1;19426:17;19511:1;19491:6;:16;;;19447:60;;19471:6;:16;;;19448:39;;:20;:39;;;;:::i;:::-;19447:60;;;;:::i;:::-;19446:66;;;;:::i;:::-;19426:86:::0;-1:-1:-1;19523:15:0::1;19541:32;19426:86:::0;19541:20;:32:::1;:::i;:::-;19618:16;::::0;;19632:1:::1;19618:16:::0;;;;;::::1;::::0;;19523:50;;-1:-1:-1;19594:21:0::1;::::0;19618:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19618:16:0::1;19594:40;;19663:4;19645;19650:1;19645:7;;;;;;-1:-1:-1::0;;;19645:7:0::1;;;;;;;;;;;;;;:23;-1:-1:-1::0;;;;;19645:23:0::1;;;-1:-1:-1::0;;;;;19645:23:0::1;;;::::0;::::1;19689:9;;;;;;;;;-1:-1:-1::0;;;;;19689:9:0::1;-1:-1:-1::0;;;;;19689:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19679:4;19684:1;19679:7;;;;;;-1:-1:-1::0;;;19679:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;19679:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;19722:9:::1;::::0;:186:::1;::::0;-1:-1:-1;;;19722:186:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:186:::1;::::0;19797:7;;19819:1:::1;::::0;19835:4;;19862::::1;::::0;19882:15:::1;::::0;19722:186:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;19718:233;;19933:7;;;;;;19718:233;19984:21;19963:18;20070:7:::0;20044:22:::1;20057:9:::0;19984:21;20044:22:::1;:::i;:::-;20043:34;;;;:::i;:::-;20016:61:::0;-1:-1:-1;20094:13:0;;20090:417:::1;;20128:9;::::0;20297:21;;20128:239:::1;::::0;-1:-1:-1;;;20128:239:0;;-1:-1:-1;;;;;20128:9:0::1;::::0;;::::1;::::0;::::1;::::0;:25:::1;::::0;20161:16;;20128:239:::1;::::0;20205:4:::1;::::0;20229:9;;20257:1:::1;::::0;;;20297:21:::1;::::0;20337:15:::1;::::0;20128:239:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;-1:-1:-1::0;20128:239:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20128:239:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20124:372;;20474:7;;;;;;;;20124:372;;;;20392:40;20404:16;20422:9;20392:40;;;;;;;:::i;:::-;;;;;;;;20124:372;20519:30;20533:16:::0;20519:30;::::1;:::i;:::-;;;20580:6;:16;;;20560:6;:16;;:36;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;20695:16:::1;::::0;::::1;::::0;20673:18:::1;::::0;::::1;::::0;20607:12:::1;::::0;-1:-1:-1;20607:12:0;;20659:52;;::::1;::::0;20660:31:::1;::::0;::::1;:10:::0;:31:::1;:::i;:::-;20659:52;;;;:::i;:::-;20748:7;::::0;20630:81;;-1:-1:-1;20722:22:0::1;::::0;20748:7;;::::1;-1:-1:-1::0;;;;;20748:7:0::1;20747:78;;20824:1;20747:78;;;20805:6;:16;;;20773:48;;20787:6;:14;;;20774:27;;:10;:27;;;;:::i;:::-;20773:48;;;;:::i;:::-;20722:103:::0;-1:-1:-1;20836:24:0::1;20877:35;20722:103:::0;20877:18;:35:::1;:::i;:::-;20863:50;::::0;:10;:50:::1;:::i;:::-;20836:77:::0;-1:-1:-1;20928:20:0;;20924:133:::1;;20978:11;:21:::0;:67:::1;::::0;-1:-1:-1;;;;;20978:21:0;;::::1;::::0;21035:5:::1;::::0;21012:16;;20978:67:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20965:80:0;;-1:-1:-1;;20924:133:0::1;21071:22:::0;;21067:139:::1;;21123:23:::0;;:71:::1;::::0;-1:-1:-1;;;;;21123:23:0;;::::1;::::0;21184:5:::1;::::0;21159:18;;21123:71:::1;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;21110:84:0;;-1:-1:-1;;21067:139:0::1;21220:18:::0;;21216:176:::1;;21265:9;;;;;;;;;-1:-1:-1::0;;;;;21265:9:0::1;-1:-1:-1::0;;;;;21265:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21255:4;21260:1;21255:7;;;;;;-1:-1:-1::0;;;21255:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21255:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;21306:7:::1;::::0;21296;;21306;;;::::1;::::0;;::::1;::::0;21296:4;;21301:1:::1;::::0;21296:7;::::1;;;-1:-1:-1::0;;;21296:7:0::1;;;;;;;;;-1:-1:-1::0;;;;;21296:17:0;;::::1;:7;::::0;;::::1;::::0;;;;;:17;21360:19;;21328:52:::1;::::0;21338:4;;21344:14;;21360:19:::1;21328:9;:52::i;:::-;6850:1;;;;;;;;;;;-1:-1:-1::0;6862:6:0;:14;;-1:-1:-1;;6862:14:0;;;19052:2347::o;21870:435::-;21953:16;;;;;;;21952:17;21944:65;;;;-1:-1:-1;;;21944:65:0;;;;;;;:::i;:::-;22025:20;22036:4;22042:2;22025:10;:20::i;:::-;22024:21;:37;;;;-1:-1:-1;22055:6:0;;-1:-1:-1;;;;;22049:12:0;;;22055:6;;22049:12;22024:37;22020:278;;;-1:-1:-1;;;;;22078:23:0;;;;;;:17;:23;;;;;;;;:30;;22104:4;-1:-1:-1;;22078:30:0;;;;;;;;22123:19;:25;;;;;;;:32;;;;;;;;;;22170:16;:23;;22078:30;-1:-1:-1;;22170:23:0;;;;;;;;22208:19;:26;;;;;;;;;;22254:32;;;;;;:::i;22020:278::-;21870:435;;:::o;23481:982::-;23589:30;;;;;;;;23612:7;23589:30;;;;;;;;;;;;;;;;-1:-1:-1;;;23589:30:0;;;;;;;;;;;-1:-1:-1;;;23589:30:0;;;;;;;;-1:-1:-1;;;23589:30:0;;;;;;;;-1:-1:-1;;;23589:30:0;;;;;;;;;23569:7;;;23659:205;;;;-1:-1:-1;23696:9:0;:16;;;23659:205;;;23734:4;23730:134;;;-1:-1:-1;23768:9:0;:17;;;;;;23730:134;;;-1:-1:-1;23831:9:0;:21;-1:-1:-1;;;23831:21:0;;;;23730:134;23874:17;5346:5;23894:19;23903:10;23894:6;:19;:::i;:::-;:38;;;;:::i;:::-;23874:58;;23943:18;24007:6;:16;;;23993:6;:11;;;:30;;;;:::i;:::-;23964:60;;23977:6;:11;;;23965:23;;:9;:23;;;;:::i;:::-;23964:60;;;;:::i;:::-;23943:81;-1:-1:-1;24035:15:0;24053:22;23943:81;24053:9;:22;:::i;:::-;24035:40;-1:-1:-1;24090:11:0;;24086:135;;24134:4;24118:22;;;;:7;:22;;;;;:33;;24144:7;;24118:22;:33;;24144:7;;24118:33;:::i;:::-;;;;-1:-1:-1;;24171:38:0;;24194:4;;-1:-1:-1;;;;;24171:38:0;;;;;;;24201:7;;24171:38;:::i;:::-;;;;;;;;24086:135;24235:14;;24231:167;;24277:10;24266:7;;:21;;;;;;;:::i;:::-;;;;;;;;24318:10;24302:12;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;24348:38:0;;24371:1;;-1:-1:-1;;;;;24348:38:0;;;;;;;24375:10;;24348:38;:::i;:::-;;;;;;;;24231:167;24437:18;24446:9;24437:6;:18;:::i;:::-;24430:25;23481:982;-1:-1:-1;;;;;;;;;;23481:982:0:o;21407:455::-;21518:9;;:187;;-1:-1:-1;;;21518:187:0;;:9;;;;-1:-1:-1;;;;;21518:9:0;;:60;;21586:6;;21518:187;;21618:1;;21634:4;;21653:11;;21679:15;;21518:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21514:341;;21837:7;;21514:341;21737:7;;;;;;;;;-1:-1:-1;;;;;21737:7:0;-1:-1:-1;;;;;21725:19:0;:4;21730:1;21725:7;;;;;;-1:-1:-1;;;21725:7:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21725:19:0;;21721:83;;;21782:6;21765:13;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;;21721:83:0;21407: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://e9d16456cd110ae31dda3cce8bb112616b3ca1da87f0db2796bf1c0ab77d5d11
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.