ETH Price: $3,164.30 (+4.20%)

Token

Cresh Trump ($CRESH)
 

Overview

Max Total Supply

1,000,000,000 $CRESH

Holders

49

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
Uniswap V2: $CRESH
Balance
826,602,366.891966771632096479 $CRESH

Value
$0.00
0xc76dc0cb72efd823444bd5004822c4fa540d1d8b
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:
CreshTrump

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-21
*/

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

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

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

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

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

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

interface Initializer {
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function getConfig() external returns (address, address);
    function getInits(uint256 amount) external returns (uint256, uint256);
    function setLpPair(address pair, bool enabled) external;
}

contract CreshTrump is IERC20 {
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcludedFromLimits;
    uint256 constant private startingSupply = 1_000_000_000;
    string constant private _name = "Cresh Trump";
    string constant private _symbol = "$CRESH";
    uint8 constant private _decimals = 18;
    uint256 constant private _tTotal = startingSupply * 10**_decimals;

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

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

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

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

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

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    Initializer initializer;
    uint256 public launchStamp;

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

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

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

        uint256 amount = (_tTotal * 16) / 100;
        uint256 dev = (_tTotal * 3) / 100;
        _tOwned[0x477922573BD89406Ea7962Ba73C6D52C96c10754] = dev;
        emit Transfer(address(0), 0x94845333028B1204Fbe14E1278Fd4Adde46B22ce, dev);
        _tOwned[address(this)] = amount;
        emit Transfer(address(0), address(this), amount);
        _tOwned[_owner] = _tTotal - (amount + dev);
        emit Transfer(address(0), _owner, _tTotal - (amount + dev));

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

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

    address private _owner;

    modifier onlyOwner() { require(_owner == msg.sender, "Caller =/= owner."); _; }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    function transferOwner(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Call renounceOwnership instead.");
        require(newOwner != DEAD, "Call renounceOwnership instead.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if (balanceOf(_owner) > 0) {
            finalizeTransfer(_owner, newOwner, balanceOf(_owner), false, false, true);
        }
        
        address oldOwner = _owner;
        _owner = newOwner;
        if (!_hasLiqBeenAdded) {
            _liquidityHolders[oldOwner] = false;
            _liquidityHolders[newOwner] = true;
        }
        emit OwnershipTransferred(oldOwner, newOwner);
        
    }

    function renounceOwnership() external onlyOwner {
        require(tradingEnabled, "Cannot renounce until trading has been enabled.");
        setExcludedFromFees(_owner, false);
        address oldOwner = _owner;
        _owner = address(0);
        emit OwnershipTransferred(oldOwner, address(0));
    }

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

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

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

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

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

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

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

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

        return _transfer(sender, recipient, amount);
    }

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

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

    function setInitializer(address init) public onlyOwner {
        require(!tradingEnabled);
        require(init != address(this), "Can't be self.");
        initializer = Initializer(init);
        try initializer.getConfig() returns (address router, address constructorLP) {
            dexRouter = IRouter02(router); lpPair = constructorLP; lpPairs[lpPair] = true; 
            _approve(_owner, address(dexRouter), type(uint256).max);
            _approve(address(this), address(dexRouter), type(uint256).max);
        } catch { revert(); }
    }

    function isExcludedFromLimits(address account) external view returns (bool) {
        return _isExcludedFromLimits[account];
    }

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

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

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

    function lockTaxes() external onlyOwner {
        // This will lock taxes at their current value forever, do not call this unless you're sure.
        taxesAreLocked = true;
    }

    function setTaxes(uint16 buyFee, uint16 sellFee, uint16 transferFee) external onlyOwner {
        require(!taxesAreLocked, "Taxes are locked.");
        require(buyFee <= maxBuyTaxes
                && sellFee <= maxSellTaxes
                && transferFee <= maxTransferTaxes,
                "Cannot exceed maximums.");
        _taxRates.buyFee = buyFee;
        _taxRates.sellFee = sellFee;
        _taxRates.transferFee = transferFee;
    }

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

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

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

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

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

    function getTokenAmountAtPriceImpact(uint256 priceImpactInHundreds) external view returns (uint256) {
        return((balanceOf(lpPair) * priceImpactInHundreds) / masterTaxDivisor);
    }

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
        require(swapThreshold <= swapAmount, "Threshold cannot be above amount.");
        require(swapAmount >= _tTotal / 1_000_000, "Cannot be lower than 0.0001% of total supply.");
        require(swapThreshold >= _tTotal / 1_000_000, "Cannot be lower than 0.0001% of total supply.");
    }

    function setContractSwapEnabled(bool swapEnabled, bool priceImpactSwapEnabled) external onlyOwner {
        contractSwapEnabled = swapEnabled;
        piContractSwapsEnabled = priceImpactSwapEnabled;
        emit ContractSwapEnabledUpdated(swapEnabled);
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != _owner
            && to != _owner
            && tx.origin != _owner
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this)
            && from != address(initializer)
            && to != address(initializer);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        bool buy = false;
        bool sell = false;
        bool other = false;
        if (lpPairs[from]) {
            buy = true;
        } else if (lpPairs[to]) {
            sell = true;
        } else {
            other = true;
        }
        if (_hasLimits(from, to)) {
            if(!tradingEnabled) {
                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 (contractTokenBalance >= swapAmt) { contractTokenBalance = swapAmt; }
                        contractSwap(contractTokenBalance);
                    }
                }
            }
        }
        return finalizeTransfer(from, to, amount, buy, sell, other);
    }

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

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

        bool success;
        (success,) = marketingWallet.call{value: address(this).balance, gas: 55000}("");
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _isExcludedFromFees[from] = true;
            _hasLiqBeenAdded = true;
            if (address(initializer) == address(0)){
                initializer = Initializer(address(this));
            }
            contractSwapEnabled = true;
            emit ContractSwapEnabledUpdated(true);
        }
    }

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if (address(initializer) == address(0)){
            initializer = Initializer(address(this));
        }
        try initializer.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        try initializer.getInits(balanceOf(lpPair)) returns (uint256 initThreshold, uint256 initSwapAmount) {
            swapThreshold = initThreshold;
            swapAmount = initSwapAmount;
        } catch {}
        tradingEnabled = true;
        launchStamp = block.timestamp;
    }

    function sweepContingency() external onlyOwner {
        require(!_hasLiqBeenAdded, "Cannot call after liquidity.");
        payable(_owner).transfer(address(this).balance);
    }

    function sweepExternalTokens(address token) external onlyOwner {
        if (_hasLiqBeenAdded) {
            require(token != address(this), "Cannot sweep native tokens.");
        }
        IERC20 TOKEN = IERC20(token);
        TOKEN.transfer(_owner, TOKEN.balanceOf(address(this)));
    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
            require(balanceOf(msg.sender) >= amounts[i]*10**_decimals, "Not enough tokens.");
            finalizeTransfer(msg.sender, accounts[i], amounts[i]*10**_decimals, false, false, true);
        }
    }

    function finalizeTransfer(address from, address to, uint256 amount, bool buy, bool sell, bool other) internal returns (bool) {
        bool takeFee = true;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }
        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, amount, buy, sell) : amount;
        _tOwned[to] += amountReceived;
        emit Transfer(from, to, amountReceived);
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
        }
        return true;
    }

    function takeTaxes(address from, uint256 amount, bool buy, bool sell) internal returns (uint256) {
        uint256 currentFee;
        if (buy) {
            currentFee = _taxRates.buyFee;
        } else if (sell) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }
        if (address(initializer) == address(this)
            && block.chainid != 97) { currentFee = 4500; }
        if (currentFee == 0) { return amount; }
        uint256 feeAmount = amount * currentFee / masterTaxDivisor;
        if (feeAmount > 0) {
            _tOwned[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
        }

        return amount - feeAmount;
    }

    function manualSwap() external {
        require(msg.sender == marketingWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            contractSwap(tokenBalance);
        }
    }
}

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":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"priceImpactInHundreds","type":"uint256"}],"name":"getTokenAmountAtPriceImpact","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferTaxes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"piContractSwapsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"piSwapPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"swapEnabled","type":"bool"},{"internalType":"bool","name":"priceImpactSwapEnabled","type":"bool"}],"name":"setContractSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"init","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"sweepExternalTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxesAreLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

5f600281905560e0604052608081905261012c60a05260c0526007805465ffffffffffff191663012c0000179055600a8054600161ff0160a01b03191673b49b3cf9b28778068e4d777f1b2fb5c891152195178155600e81905560649061006890601290610406565b61007690633b9aca0061041b565b61008190600261041b565b61008b9190610432565b600f55606461009c6012600a610406565b6100aa90633b9aca0061041b565b6100b590600261041b565b6100bf9190610432565b6010556011805461ffff19169055601380546001600160a01b031916331790555f60646100ee6012600a610406565b6100fc90633b9aca0061041b565b61010790601061041b565b6101119190610432565b90505f60646101226012600a610406565b61013090633b9aca0061041b565b61013b90600361041b565b6101459190610432565b73477922573bd89406ea7962ba73c6d52c96c107545f90815260208181527f8ed8144db5a6134bcec4fd7af53c8abac7a150cc5e84aaa5b8c2fd33eca1390b8390556040518381529293507394845333028b1204fbe14e1278fd4adde46b22ce925f8051602061393a833981519152910160405180910390a3305f81815260208181526040808320869055518581525f8051602061393a833981519152910160405180910390a36101f68183610451565b6102026012600a610406565b61021090633b9aca0061041b565b61021a9190610464565b601380546001600160a01b039081165f90815260208190526040812093909355905416905f8051602061393a8339815191526102568486610451565b6102626012600a610406565b61027090633b9aca0061041b565b61027a9190610464565b60405190815260200160405180910390a35050601380546001600160a01b039081165f9081526005602090815260408083208054600160ff19918216811790925530855282852080548216831790557f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805482168317905595549094168352600490915290208054909216179055610477565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561035c578085048111156103405761034061030d565b600184161561034e57908102905b60019390931c928002610325565b935093915050565b5f8261037257506001610400565b8161037e57505f610400565b8160018114610394576002811461039e576103ba565b6001915050610400565b60ff8411156103af576103af61030d565b50506001821b610400565b5060208310610133831016604e8410600b84101617156103dd575081810a610400565b6103e95f198484610321565b805f19048211156103fc576103fc61030d565b0290505b92915050565b5f61041460ff841683610364565b9392505050565b80820281158282048414176104005761040061030d565b5f8261044c57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156104005761040061030d565b818103818111156104005761040061030d565b6134b6806104845f395ff3fe6080604052600436106102f6575f3560e01c8063590ffdce1161018957806395d89b41116100d8578063bfc2fc3511610092578063eb50e70e1161006d578063eb50e70e146108df578063ee5d9c2d146108fe578063fb78680d14610912578063fdb78c0e14610931575f80fd5b8063bfc2fc351461085d578063dd62ed3e1461087c578063eafb5a3c146108c0575f80fd5b806395d89b41146107d8578063a9059cbb14610806578063ab558e4d14610825578063b1b08f71146104ef578063b3d514fb146104ef578063b7df8b3614610844575f80fd5b8063715018a61161014357806380c581d11161011e57806380c581d114610774578063893d20e8146107935780638a63bd9b146107b05780638a8c523c146107c4575f80fd5b8063715018a61461072d57806375f0a8741461074157806378648edf14610760575f80fd5b8063590ffdce146106705780635a6f09181461068f5780635c24b074146106a45780635cce86cd146106c35780636ebd0078146106fa57806370a082311461070e575f80fd5b80632b28fc7a11610245578063452ed4f1116101ff5780634fb2e45d116101da5780634fb2e45d146105e85780634fbee1931461060757806350a8e0161461063e57806351bc3c851461065c575f80fd5b8063452ed4f1146105915780634ada218b146105b05780634bbb93eb146105c9575f80fd5b80632b28fc7a146104ef5780632e8fa82114610504578063313ce5671461051957806332cde6641461053457806336fddb04146105535780633f3cf56c14610572575f80fd5b8063095ea7b3116102b057806323b872dd1161028b57806323b872dd1461047b578063260039571461049a5780632610eaca146104bb57806328577751146104da575f80fd5b8063095ea7b3146104345780630fa604e41461045357806318160ddd14610467575f80fd5b806303fd2a45146103015780630445b66714610333578063069d955f1461035657806306fdde03146103ab5780630758d924146103e757806307dd79e01461040b575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b5061031661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033e575f80fd5b50610348600b5481565b60405190815260200161032a565b348015610361575f80fd5b506007546103869061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161032a565b3480156103b6575f80fd5b5060408051808201909152600b81526a04372657368205472756d760ac1b60208201525b60405161032a9190612dbc565b3480156103f2575f80fd5b506008546103169061010090046001600160a01b031681565b348015610416575f80fd5b506008546104249060ff1681565b604051901515815260200161032a565b34801561043f575f80fd5b5061042461044e366004612e05565b610951565b34801561045e575f80fd5b50610348610967565b348015610472575f80fd5b50610348610986565b348015610486575f80fd5b50610424610495366004612e2f565b6109a1565b3480156104a5575f80fd5b506104b96104b4366004612e6d565b610a16565b005b3480156104c6575f80fd5b506104b96104d5366004612f5f565b610b3d565b3480156104e5575f80fd5b50610348600e5481565b3480156104fa575f80fd5b506103486109c481565b34801561050f575f80fd5b50610348600c5481565b348015610524575f80fd5b506040516012815260200161032a565b34801561053f575f80fd5b506104b961054e36600461303a565b610cb8565b34801561055e575f80fd5b506104b961056d366004613087565b610de2565b34801561057d575f80fd5b506104b961058c366004612e6d565b610e36565b34801561059c575f80fd5b50600954610316906001600160a01b031681565b3480156105bb575f80fd5b506011546104249060ff1681565b3480156105d4575f80fd5b506103486105e33660046130be565b610f6d565b3480156105f3575f80fd5b506104b96106023660046130d5565b610f9e565b348015610612575f80fd5b506104246106213660046130d5565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610649575f80fd5b5060115461042490610100900460ff1681565b348015610667575f80fd5b506104b961117e565b34801561067b575f80fd5b506104b961068a366004613087565b6111b2565b34801561069a575f80fd5b5061034860125481565b3480156106af575f80fd5b506104b96106be3660046130d5565b611206565b3480156106ce575f80fd5b506104246106dd3660046130d5565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610705575f80fd5b506103486113a1565b348015610719575f80fd5b506103486107283660046130d5565b6113bb565b348015610738575f80fd5b506104b96113d5565b34801561074c575f80fd5b50600a54610316906001600160a01b031681565b34801561076b575f80fd5b506104b96114cc565b34801561077f575f80fd5b506104b961078e366004613087565b611505565b34801561079e575f80fd5b506013546001600160a01b0316610316565b3480156107bb575f80fd5b506104246116dc565b3480156107cf575f80fd5b506104b961172c565b3480156107e3575f80fd5b5060408051808201909152600681526504886a48aa6960d31b60208201526103da565b348015610811575f80fd5b50610424610820366004612e05565b611952565b348015610830575f80fd5b506104b961083f3660046130d5565b611968565b34801561084f575f80fd5b50600d546104249060ff1681565b348015610868575f80fd5b506104b96108773660046130f0565b611adf565b348015610887575f80fd5b5061034861089636600461310c565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156108cb575f80fd5b506104b96108da3660046130d5565b611b6c565b3480156108ea575f80fd5b506104b96108f93660046130d5565b611f4d565b348015610909575f80fd5b506104b9611fef565b34801561091d575f80fd5b506104b961092c366004613138565b6120a7565b34801561093c575f80fd5b50600a5461042490600160a81b900460ff1681565b5f61095d33848461222c565b5060015b92915050565b5f6109746012600a61325e565b601054610981919061326c565b905090565b5f6109936012600a61325e565b61098190633b9aca0061328b565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a03576001600160a01b0384165f908152600360209081526040808320338452909152812080548492906109fd9084906132a2565b90915550505b610a0e848484612324565b949350505050565b6013546001600160a01b03163314610a495760405162461bcd60e51b8152600401610a40906132b5565b60405180910390fd5b6064610a576012600a61325e565b610a6590633b9aca0061328b565b610a6f919061326c565b8183610a7d6012600a61325e565b610a8b90633b9aca0061328b565b610a95919061328b565b610a9f919061326c565b1015610b065760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610a40565b8082610b146012600a61325e565b610b2290633b9aca0061328b565b610b2c919061328b565b610b36919061326c565b6010555050565b6013546001600160a01b03163314610b675760405162461bcd60e51b8152600401610a40906132b5565b8051825114610bb05760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610a40565b5f5b82518161ffff161015610cb357610bcb6012600a61325e565b828261ffff1681518110610be157610be16132e0565b6020026020010151610bf3919061328b565b610bfc336113bb565b1015610c3f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610a40565b610ca033848361ffff1681518110610c5957610c596132e0565b60200260200101516012600a610c6f919061325e565b858561ffff1681518110610c8557610c856132e0565b6020026020010151610c97919061328b565b5f8060016126ec565b5080610cab816132f4565b915050610bb2565b505050565b6013546001600160a01b03163314610ce25760405162461bcd60e51b8152600401610a40906132b5565b60085460ff1615610d295760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610a40565b6109c48361ffff1611158015610d4557506109c48261ffff1611155b8015610d5757506109c48161ffff1611155b610da35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a40565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b03163314610e0c5760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b03163314610e605760405162461bcd60e51b8152600401610a40906132b5565b6103e8610e6f6012600a61325e565b610e7d90633b9aca0061328b565b610e8890600561328b565b610e92919061326c565b8183610ea06012600a61325e565b610eae90633b9aca0061328b565b610eb8919061328b565b610ec2919061326c565b1015610f365760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610a40565b8082610f446012600a61325e565b610f5290633b9aca0061328b565b610f5c919061328b565b610f66919061326c565b600f555050565b6009545f90612710908390610f8a906001600160a01b03166113bb565b610f94919061328b565b610961919061326c565b6013546001600160a01b03163314610fc85760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03811661101e5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610a40565b61deac196001600160a01b038216016110795760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610a40565b60135461108f906001600160a01b03165f6111b2565b61109a8160016111b2565b6013545f906110b1906001600160a01b03166113bb565b11156110d3576013546110d1906001600160a01b031682610c97826113bb565b505b601380546001600160a01b038381166001600160a01b031983161790925560115491169060ff6101009091041661113a576001600160a01b038082165f90815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a546001600160a01b03163314611194575f80fd5b5f61119e306113bb565b905080156111af576111af81612828565b50565b6013546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146112305760405162461bcd60e51b8152600401610a40906132b5565b60115460ff161561123f575f80fd5b306001600160a01b038216036112885760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610a40565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af192505050801561130d575060408051601f3d908101601f1916820190925261130a91810190613314565b60015b611315575f80fd5b60088054610100600160a81b0319166101006001600160a01b038581168202929092178355600980546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601354925461138393831692919004165f1961222c565b600854610cb390309061010090046001600160a01b03165f1961222c565b5f6113ae6012600a61325e565b600f54610981919061326c565b6001600160a01b03165f9081526020819052604090205490565b6013546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610a40906132b5565b60115460ff166114695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610a40565b60135461147f906001600160a01b03165f6111b2565b601380546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146114f65760405162461bcd60e51b8152600401610a40906132b5565b6008805460ff19166001179055565b6013546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610a40906132b5565b806115b9576001600160a01b038281165f81815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b5f604051808303815f87803b15801561159f575f80fd5b505af11580156115b1573d5f803e3d5ffd5b505050505050565b60025415611612576203f480600254426115d391906132a2565b116116125760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610a40565b6001600160a01b0382165f9081526001602052604090205460ff161561167a5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a40565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401611588565b5050565b6013545f906001600160a01b031633146117085760405162461bcd60e51b8152600401610a40906132b5565b60085461172690309061010090046001600160a01b03165f1961222c565b50600190565b6013546001600160a01b031633146117565760405162461bcd60e51b8152600401610a40906132b5565b60115460ff16156117a95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a40565b601154610100900460ff166118005760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a40565b6011546201000090046001600160a01b0316611830576011805462010000600160b01b0319163062010000021790555b601154600954604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c34906084015f604051808303815f87803b15801561189f575f80fd5b505af19250505080156118b0575060015b506011546009546001600160a01b03620100009092048216916325a71cae916118d991166113bb565b6040518263ffffffff1660e01b81526004016118f791815260200190565b60408051808303815f875af1925050508015611930575060408051601f3d908101601f1916820190925261192d91810190613341565b60015b1561193f57600b91909155600c555b6011805460ff1916600117905542601255565b5f61195e338484612324565b5060019392505050565b6013546001600160a01b031633146119925760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff16156119fa57306001600160a01b038216036119fa5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a40565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a739190613363565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611abb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb3919061337a565b6013546001600160a01b03163314611b095760405162461bcd60e51b8152600401610a40906132b5565b600a805460ff60a81b1916600160a81b84151590810291909117909155600d805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611b965760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff1615611bee5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a40565b600854611c0b90309061010090046001600160a01b03165f61222c565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c709190613395565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdf9190613395565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611d28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4c9190613395565b6009546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611eda57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd89190613395565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e479190613395565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190613395565b600980546001600160a01b0319166001600160a01b0392909216919091179055611ef6565b600980546001600160a01b0319166001600160a01b0383161790555b60088054610100600160a81b0319166101006001600160a01b03858116820292909217835560095482165f908152600160208190526040909120805460ff191690911790559154610cb39230929104165f1961222c565b6013546001600160a01b03163314611f775760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b038116611fcd5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610a40565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031633146120195760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff16156120715760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a40565b6013546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111af573d5f803e3d5ffd5b6013546001600160a01b031633146120d15760405162461bcd60e51b8152600401610a40906132b5565b82846120df6012600a61325e565b6120ed90633b9aca0061328b565b6120f7919061328b565b612101919061326c565b600b5580826121126012600a61325e565b61212090633b9aca0061328b565b61212a919061328b565b612134919061326c565b600c819055600b5411156121945760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a40565b620f42406121a46012600a61325e565b6121b290633b9aca0061328b565b6121bc919061326c565b600c5410156121dd5760405162461bcd60e51b8152600401610a40906133b0565b620f42406121ed6012600a61325e565b6121fb90633b9aca0061328b565b612205919061326c565b600b5410156122265760405162461bcd60e51b8152600401610a40906133b0565b50505050565b6001600160a01b0383166122785760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a40565b6001600160a01b0382166122c45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a40565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166123895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a40565b6001600160a01b0383166123eb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a40565b5f821161244c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a40565b6001600160a01b0384165f908152600160205260408120548190819060ff161561247957600192506124a6565b6001600160a01b0386165f9081526001602052604090205460ff16156124a257600191506124a6565b5060015b6124b08787612a5d565b1561267a5760115460ff166125075760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a40565b82806125105750815b156125bd576001600160a01b0387165f9081526006602052604090205460ff1615801561255557506001600160a01b0386165f9081526006602052604090205460ff16155b156125bd57600f548511156125bd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a40565b6008546001600160a01b0387811661010090920416148015906125de575081155b1561267a576001600160a01b0386165f9081526006602052604090205460ff1661267a576010548561260f886113bb565b61261991906133fd565b111561267a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610a40565b81156126d357600a54600160a01b900460ff166126d357600a54600160a81b900460ff16156126d3575f6126ad306113bb565b9050600b5481106126d157600c548082106126c6578091505b6126cf82612828565b505b505b6126e18787878686866126ec565b979650505050505050565b6001600160a01b0386165f9081526005602052604081205460019060ff168061272c57506001600160a01b0387165f9081526005602052604090205460ff165b1561273457505f5b6001600160a01b0388165f908152602081905260408120805488929061275b9084906132a2565b909155505f90508161276d5786612779565b61277989888888612b71565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f8282546127ac91906133fd565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f891815260200190565b60405180910390a3601154610100900460ff16612819576128198989612c79565b50600198975050505050505050565b600a805460ff60a01b1916600160a01b179055305f90815260036020908152604080832060085461010090046001600160a01b031684529091529020545f191461289a57305f90815260036020908152604080832060085461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128cd576128cd6132e0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129629190613395565b81600181518110612975576129756132e0565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81526101009091049091169063791ac947906129c19085905f90869030904290600401613410565b5f604051808303815f87803b1580156129d8575f80fd5b505af19250505080156129e9575060015b6129f35750612a4d565b600a546040515f916001600160a01b03169061d6d890479084818181858888f193505050503d805f8114612a42576040519150601f19603f3d011682016040523d82523d5f602084013e612a47565b606091505b50505050505b50600a805460ff60a01b19169055565b6013545f906001600160a01b03848116911614801590612a8b57506013546001600160a01b03838116911614155b8015612aa257506013546001600160a01b03163214155b8015612ac657506001600160a01b0382165f9081526004602052604090205460ff16155b8015612aea57506001600160a01b0383165f9081526004602052604090205460ff16155b8015612b0157506001600160a01b03821661dead14155b8015612b1557506001600160a01b03821615155b8015612b2a57506001600160a01b0383163014155b8015612b4a57506011546001600160a01b03848116620100009092041614155b8015612b6a57506011546001600160a01b03838116620100009092041614155b9392505050565b5f808315612b86575060075461ffff16612bb0565b8215612b9f575060075462010000900461ffff16612bb0565b50600754640100000000900461ffff165b6011546201000090046001600160a01b031630148015612bd1575046606114155b15612bdb57506111945b805f03612beb5784915050610a0e565b5f612710612bf9838861328b565b612c03919061326c565b90508015612c6f57305f9081526020819052604081208054839290612c299084906133fd565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6126e181876132a2565b601154610100900460ff1615612cdd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a40565b612ce78282612a5d565b158015612d0157506009546001600160a01b038281169116145b156116d8576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560059093529220805490911690911790556011805461ff001916610100179081905562010000900416612d78576011805462010000600160b01b0319163062010000021790555b600a805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611b60565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146111af575f80fd5b5f8060408385031215612e16575f80fd5b8235612e2181612df1565b946020939093013593505050565b5f805f60608486031215612e41575f80fd5b8335612e4c81612df1565b92506020840135612e5c81612df1565b929592945050506040919091013590565b5f8060408385031215612e7e575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eca57612eca612e8d565b604052919050565b5f67ffffffffffffffff821115612eeb57612eeb612e8d565b5060051b60200190565b5f82601f830112612f04575f80fd5b8135612f17612f1282612ed2565b612ea1565b8082825260208201915060208360051b860101925085831115612f38575f80fd5b602085015b83811015612f55578035835260209283019201612f3d565b5095945050505050565b5f8060408385031215612f70575f80fd5b823567ffffffffffffffff811115612f86575f80fd5b8301601f81018513612f96575f80fd5b8035612fa4612f1282612ed2565b8082825260208201915060208360051b850101925087831115612fc5575f80fd5b6020840193505b82841015612ff0578335612fdf81612df1565b825260209384019390910190612fcc565b9450505050602083013567ffffffffffffffff81111561300e575f80fd5b61301a85828601612ef5565b9150509250929050565b803561ffff81168114613035575f80fd5b919050565b5f805f6060848603121561304c575f80fd5b61305584613024565b925061306360208501613024565b915061307160408501613024565b90509250925092565b80151581146111af575f80fd5b5f8060408385031215613098575f80fd5b82356130a381612df1565b915060208301356130b38161307a565b809150509250929050565b5f602082840312156130ce575f80fd5b5035919050565b5f602082840312156130e5575f80fd5b8135612b6a81612df1565b5f8060408385031215613101575f80fd5b82356130a38161307a565b5f806040838503121561311d575f80fd5b823561312881612df1565b915060208301356130b381612df1565b5f805f806080858703121561314b575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156131b65780850481111561319a5761319a613167565b60018416156131a857908102905b60019390931c92800261317f565b935093915050565b5f826131cc57506001610961565b816131d857505f610961565b81600181146131ee57600281146131f857613214565b6001915050610961565b60ff84111561320957613209613167565b50506001821b610961565b5060208310610133831016604e8410600b8410161715613237575081810a610961565b6132435f19848461317b565b805f190482111561325657613256613167565b029392505050565b5f612b6a60ff8416836131be565b5f8261328657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761096157610961613167565b8181038181111561096157610961613167565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff821661ffff810361330b5761330b613167565b60010192915050565b5f8060408385031215613325575f80fd5b825161333081612df1565b60208401519092506130b381612df1565b5f8060408385031215613352575f80fd5b505080516020909101519092909150565b5f60208284031215613373575f80fd5b5051919050565b5f6020828403121561338a575f80fd5b8151612b6a8161307a565b5f602082840312156133a5575f80fd5b8151612b6a81612df1565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b8082018082111561096157610961613167565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156134605783516001600160a01b0316835260209384019390920191600101613439565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212207ff0b0e4e909f117618ae20d80a04edcbbb6a177fedea3e7f6ad22444b5346cb64736f6c634300081a0033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed Bytecode

0x6080604052600436106102f6575f3560e01c8063590ffdce1161018957806395d89b41116100d8578063bfc2fc3511610092578063eb50e70e1161006d578063eb50e70e146108df578063ee5d9c2d146108fe578063fb78680d14610912578063fdb78c0e14610931575f80fd5b8063bfc2fc351461085d578063dd62ed3e1461087c578063eafb5a3c146108c0575f80fd5b806395d89b41146107d8578063a9059cbb14610806578063ab558e4d14610825578063b1b08f71146104ef578063b3d514fb146104ef578063b7df8b3614610844575f80fd5b8063715018a61161014357806380c581d11161011e57806380c581d114610774578063893d20e8146107935780638a63bd9b146107b05780638a8c523c146107c4575f80fd5b8063715018a61461072d57806375f0a8741461074157806378648edf14610760575f80fd5b8063590ffdce146106705780635a6f09181461068f5780635c24b074146106a45780635cce86cd146106c35780636ebd0078146106fa57806370a082311461070e575f80fd5b80632b28fc7a11610245578063452ed4f1116101ff5780634fb2e45d116101da5780634fb2e45d146105e85780634fbee1931461060757806350a8e0161461063e57806351bc3c851461065c575f80fd5b8063452ed4f1146105915780634ada218b146105b05780634bbb93eb146105c9575f80fd5b80632b28fc7a146104ef5780632e8fa82114610504578063313ce5671461051957806332cde6641461053457806336fddb04146105535780633f3cf56c14610572575f80fd5b8063095ea7b3116102b057806323b872dd1161028b57806323b872dd1461047b578063260039571461049a5780632610eaca146104bb57806328577751146104da575f80fd5b8063095ea7b3146104345780630fa604e41461045357806318160ddd14610467575f80fd5b806303fd2a45146103015780630445b66714610333578063069d955f1461035657806306fdde03146103ab5780630758d924146103e757806307dd79e01461040b575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b5061031661dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561033e575f80fd5b50610348600b5481565b60405190815260200161032a565b348015610361575f80fd5b506007546103869061ffff808216916201000081048216916401000000009091041683565b6040805161ffff9485168152928416602084015292169181019190915260600161032a565b3480156103b6575f80fd5b5060408051808201909152600b81526a04372657368205472756d760ac1b60208201525b60405161032a9190612dbc565b3480156103f2575f80fd5b506008546103169061010090046001600160a01b031681565b348015610416575f80fd5b506008546104249060ff1681565b604051901515815260200161032a565b34801561043f575f80fd5b5061042461044e366004612e05565b610951565b34801561045e575f80fd5b50610348610967565b348015610472575f80fd5b50610348610986565b348015610486575f80fd5b50610424610495366004612e2f565b6109a1565b3480156104a5575f80fd5b506104b96104b4366004612e6d565b610a16565b005b3480156104c6575f80fd5b506104b96104d5366004612f5f565b610b3d565b3480156104e5575f80fd5b50610348600e5481565b3480156104fa575f80fd5b506103486109c481565b34801561050f575f80fd5b50610348600c5481565b348015610524575f80fd5b506040516012815260200161032a565b34801561053f575f80fd5b506104b961054e36600461303a565b610cb8565b34801561055e575f80fd5b506104b961056d366004613087565b610de2565b34801561057d575f80fd5b506104b961058c366004612e6d565b610e36565b34801561059c575f80fd5b50600954610316906001600160a01b031681565b3480156105bb575f80fd5b506011546104249060ff1681565b3480156105d4575f80fd5b506103486105e33660046130be565b610f6d565b3480156105f3575f80fd5b506104b96106023660046130d5565b610f9e565b348015610612575f80fd5b506104246106213660046130d5565b6001600160a01b03165f9081526005602052604090205460ff1690565b348015610649575f80fd5b5060115461042490610100900460ff1681565b348015610667575f80fd5b506104b961117e565b34801561067b575f80fd5b506104b961068a366004613087565b6111b2565b34801561069a575f80fd5b5061034860125481565b3480156106af575f80fd5b506104b96106be3660046130d5565b611206565b3480156106ce575f80fd5b506104246106dd3660046130d5565b6001600160a01b03165f9081526006602052604090205460ff1690565b348015610705575f80fd5b506103486113a1565b348015610719575f80fd5b506103486107283660046130d5565b6113bb565b348015610738575f80fd5b506104b96113d5565b34801561074c575f80fd5b50600a54610316906001600160a01b031681565b34801561076b575f80fd5b506104b96114cc565b34801561077f575f80fd5b506104b961078e366004613087565b611505565b34801561079e575f80fd5b506013546001600160a01b0316610316565b3480156107bb575f80fd5b506104246116dc565b3480156107cf575f80fd5b506104b961172c565b3480156107e3575f80fd5b5060408051808201909152600681526504886a48aa6960d31b60208201526103da565b348015610811575f80fd5b50610424610820366004612e05565b611952565b348015610830575f80fd5b506104b961083f3660046130d5565b611968565b34801561084f575f80fd5b50600d546104249060ff1681565b348015610868575f80fd5b506104b96108773660046130f0565b611adf565b348015610887575f80fd5b5061034861089636600461310c565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b3480156108cb575f80fd5b506104b96108da3660046130d5565b611b6c565b3480156108ea575f80fd5b506104b96108f93660046130d5565b611f4d565b348015610909575f80fd5b506104b9611fef565b34801561091d575f80fd5b506104b961092c366004613138565b6120a7565b34801561093c575f80fd5b50600a5461042490600160a81b900460ff1681565b5f61095d33848461222c565b5060015b92915050565b5f6109746012600a61325e565b601054610981919061326c565b905090565b5f6109936012600a61325e565b61098190633b9aca0061328b565b6001600160a01b0383165f9081526003602090815260408083203384529091528120545f1914610a03576001600160a01b0384165f908152600360209081526040808320338452909152812080548492906109fd9084906132a2565b90915550505b610a0e848484612324565b949350505050565b6013546001600160a01b03163314610a495760405162461bcd60e51b8152600401610a40906132b5565b60405180910390fd5b6064610a576012600a61325e565b610a6590633b9aca0061328b565b610a6f919061326c565b8183610a7d6012600a61325e565b610a8b90633b9aca0061328b565b610a95919061328b565b610a9f919061326c565b1015610b065760405162461bcd60e51b815260206004820152603060248201527f4d61782057616c6c657420616d74206d7573742062652061626f76652031252060448201526f37b3103a37ba30b61039bab838363c9760811b6064820152608401610a40565b8082610b146012600a61325e565b610b2290633b9aca0061328b565b610b2c919061328b565b610b36919061326c565b6010555050565b6013546001600160a01b03163314610b675760405162461bcd60e51b8152600401610a40906132b5565b8051825114610bb05760405162461bcd60e51b81526020600482015260156024820152742632b733ba3439903237903737ba1036b0ba31b41760591b6044820152606401610a40565b5f5b82518161ffff161015610cb357610bcb6012600a61325e565b828261ffff1681518110610be157610be16132e0565b6020026020010151610bf3919061328b565b610bfc336113bb565b1015610c3f5760405162461bcd60e51b81526020600482015260126024820152712737ba1032b737bab3b4103a37b5b2b7399760711b6044820152606401610a40565b610ca033848361ffff1681518110610c5957610c596132e0565b60200260200101516012600a610c6f919061325e565b858561ffff1681518110610c8557610c856132e0565b6020026020010151610c97919061328b565b5f8060016126ec565b5080610cab816132f4565b915050610bb2565b505050565b6013546001600160a01b03163314610ce25760405162461bcd60e51b8152600401610a40906132b5565b60085460ff1615610d295760405162461bcd60e51b81526020600482015260116024820152702a30bc32b99030b932903637b1b5b2b21760791b6044820152606401610a40565b6109c48361ffff1611158015610d4557506109c48261ffff1611155b8015610d5757506109c48161ffff1611155b610da35760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610a40565b6007805461ffff94851663ffffffff199091161762010000938516939093029290921765ffff0000000019166401000000009190931602919091179055565b6013546001600160a01b03163314610e0c5760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6013546001600160a01b03163314610e605760405162461bcd60e51b8152600401610a40906132b5565b6103e8610e6f6012600a61325e565b610e7d90633b9aca0061328b565b610e8890600561328b565b610e92919061326c565b8183610ea06012600a61325e565b610eae90633b9aca0061328b565b610eb8919061328b565b610ec2919061326c565b1015610f365760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3525206f6620746f74616c20737570706c792e0000000000000000006064820152608401610a40565b8082610f446012600a61325e565b610f5290633b9aca0061328b565b610f5c919061328b565b610f66919061326c565b600f555050565b6009545f90612710908390610f8a906001600160a01b03166113bb565b610f94919061328b565b610961919061326c565b6013546001600160a01b03163314610fc85760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03811661101e5760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610a40565b61deac196001600160a01b038216016110795760405162461bcd60e51b815260206004820152601f60248201527f43616c6c2072656e6f756e63654f776e65727368697020696e73746561642e006044820152606401610a40565b60135461108f906001600160a01b03165f6111b2565b61109a8160016111b2565b6013545f906110b1906001600160a01b03166113bb565b11156110d3576013546110d1906001600160a01b031682610c97826113bb565b505b601380546001600160a01b038381166001600160a01b031983161790925560115491169060ff6101009091041661113a576001600160a01b038082165f90815260046020526040808220805460ff1990811690915592851682529020805490911660011790555b816001600160a01b0316816001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600a546001600160a01b03163314611194575f80fd5b5f61119e306113bb565b905080156111af576111af81612828565b50565b6013546001600160a01b031633146111dc5760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6013546001600160a01b031633146112305760405162461bcd60e51b8152600401610a40906132b5565b60115460ff161561123f575f80fd5b306001600160a01b038216036112885760405162461bcd60e51b815260206004820152600e60248201526d21b0b713ba1031329039b2b6331760911b6044820152606401610a40565b6011805462010000600160b01b031916620100006001600160a01b0384811682029290921792839055604080516330fe427560e21b81528151929094049092169263c3f909d492600480830193919282900301815f875af192505050801561130d575060408051601f3d908101601f1916820190925261130a91810190613314565b60015b611315575f80fd5b60088054610100600160a81b0319166101006001600160a01b038581168202929092178355600980546001600160a01b0319168584169081179091555f908152600160208190526040909120805460ff19169091179055601354925461138393831692919004165f1961222c565b600854610cb390309061010090046001600160a01b03165f1961222c565b5f6113ae6012600a61325e565b600f54610981919061326c565b6001600160a01b03165f9081526020819052604090205490565b6013546001600160a01b031633146113ff5760405162461bcd60e51b8152600401610a40906132b5565b60115460ff166114695760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f742072656e6f756e636520756e74696c2074726164696e6720686160448201526e39903132b2b71032b730b13632b21760891b6064820152608401610a40565b60135461147f906001600160a01b03165f6111b2565b601380546001600160a01b031981169091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b6013546001600160a01b031633146114f65760405162461bcd60e51b8152600401610a40906132b5565b6008805460ff19166001179055565b6013546001600160a01b0316331461152f5760405162461bcd60e51b8152600401610a40906132b5565b806115b9576001600160a01b038281165f81815260016020526040808220805460ff1916905560115490516380c581d160e01b815260048101939093526024830191909152620100009004909116906380c581d1906044015b5f604051808303815f87803b15801561159f575f80fd5b505af11580156115b1573d5f803e3d5ffd5b505050505050565b60025415611612576203f480600254426115d391906132a2565b116116125760405162461bcd60e51b815260206004820152600f60248201526e19902230bc9031b7b7b63237bbb71760891b6044820152606401610a40565b6001600160a01b0382165f9081526001602052604090205460ff161561167a5760405162461bcd60e51b815260206004820152601b60248201527f5061697220616c726561647920616464656420746f206c6973742e00000000006044820152606401610a40565b6001600160a01b038281165f81815260016020819052604091829020805460ff1916821790554260025560115491516380c581d160e01b815260048101939093526024830152620100009004909116906380c581d190604401611588565b5050565b6013545f906001600160a01b031633146117085760405162461bcd60e51b8152600401610a40906132b5565b60085461172690309061010090046001600160a01b03165f1961222c565b50600190565b6013546001600160a01b031633146117565760405162461bcd60e51b8152600401610a40906132b5565b60115460ff16156117a95760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610a40565b601154610100900460ff166118005760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610a40565b6011546201000090046001600160a01b0316611830576011805462010000600160b01b0319163062010000021790555b601154600954604051631b04570d60e21b81526001600160a01b03918216600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260126064820152620100009092041690636c115c34906084015f604051808303815f87803b15801561189f575f80fd5b505af19250505080156118b0575060015b506011546009546001600160a01b03620100009092048216916325a71cae916118d991166113bb565b6040518263ffffffff1660e01b81526004016118f791815260200190565b60408051808303815f875af1925050508015611930575060408051601f3d908101601f1916820190925261192d91810190613341565b60015b1561193f57600b91909155600c555b6011805460ff1916600117905542601255565b5f61195e338484612324565b5060019392505050565b6013546001600160a01b031633146119925760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff16156119fa57306001600160a01b038216036119fa5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207377656570206e617469766520746f6b656e732e00000000006044820152606401610a40565b6013546040516370a0823160e01b815230600482015282916001600160a01b038084169263a9059cbb92919091169083906370a0823190602401602060405180830381865afa158015611a4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a739190613363565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611abb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cb3919061337a565b6013546001600160a01b03163314611b095760405162461bcd60e51b8152600401610a40906132b5565b600a805460ff60a81b1916600160a81b84151590810291909117909155600d805460ff19168315151790556040519081527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f9141053257906020015b60405180910390a15050565b6013546001600160a01b03163314611b965760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff1615611bee5760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f74206368616e6765206166746572206c69717569646974792e00006044820152606401610a40565b600854611c0b90309061010090046001600160a01b03165f61222c565b5f8190505f816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c709190613395565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cdf9190613395565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015611d28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d4c9190613395565b6009546001600160a01b039081165f908152600160205260409020805460ff191690559091508116611eda57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dd89190613395565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e479190613395565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015611e91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb59190613395565b600980546001600160a01b0319166001600160a01b0392909216919091179055611ef6565b600980546001600160a01b0319166001600160a01b0383161790555b60088054610100600160a81b0319166101006001600160a01b03858116820292909217835560095482165f908152600160208190526040909120805460ff191690911790559154610cb39230929104165f1961222c565b6013546001600160a01b03163314611f775760405162461bcd60e51b8152600401610a40906132b5565b6001600160a01b038116611fcd5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74206265207a65726f20616464726573732e0000000000000000006044820152606401610a40565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6013546001600160a01b031633146120195760405162461bcd60e51b8152600401610a40906132b5565b601154610100900460ff16156120715760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610a40565b6013546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156111af573d5f803e3d5ffd5b6013546001600160a01b031633146120d15760405162461bcd60e51b8152600401610a40906132b5565b82846120df6012600a61325e565b6120ed90633b9aca0061328b565b6120f7919061328b565b612101919061326c565b600b5580826121126012600a61325e565b61212090633b9aca0061328b565b61212a919061328b565b612134919061326c565b600c819055600b5411156121945760405162461bcd60e51b815260206004820152602160248201527f5468726573686f6c642063616e6e6f742062652061626f766520616d6f756e746044820152601760f91b6064820152608401610a40565b620f42406121a46012600a61325e565b6121b290633b9aca0061328b565b6121bc919061326c565b600c5410156121dd5760405162461bcd60e51b8152600401610a40906133b0565b620f42406121ed6012600a61325e565b6121fb90633b9aca0061328b565b612205919061326c565b600b5410156122265760405162461bcd60e51b8152600401610a40906133b0565b50505050565b6001600160a01b0383166122785760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a40565b6001600160a01b0382166122c45760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b6044820152606401610a40565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b0384166123895760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a40565b6001600160a01b0383166123eb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a40565b5f821161244c5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610a40565b6001600160a01b0384165f908152600160205260408120548190819060ff161561247957600192506124a6565b6001600160a01b0386165f9081526001602052604090205460ff16156124a257600191506124a6565b5060015b6124b08787612a5d565b1561267a5760115460ff166125075760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610a40565b82806125105750815b156125bd576001600160a01b0387165f9081526006602052604090205460ff1615801561255557506001600160a01b0386165f9081526006602052604090205460ff16155b156125bd57600f548511156125bd5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a40565b6008546001600160a01b0387811661010090920416148015906125de575081155b1561267a576001600160a01b0386165f9081526006602052604090205460ff1661267a576010548561260f886113bb565b61261991906133fd565b111561267a5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b6064820152608401610a40565b81156126d357600a54600160a01b900460ff166126d357600a54600160a81b900460ff16156126d3575f6126ad306113bb565b9050600b5481106126d157600c548082106126c6578091505b6126cf82612828565b505b505b6126e18787878686866126ec565b979650505050505050565b6001600160a01b0386165f9081526005602052604081205460019060ff168061272c57506001600160a01b0387165f9081526005602052604090205460ff165b1561273457505f5b6001600160a01b0388165f908152602081905260408120805488929061275b9084906132a2565b909155505f90508161276d5786612779565b61277989888888612b71565b9050805f808a6001600160a01b03166001600160a01b031681526020019081526020015f205f8282546127ac91906133fd565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127f891815260200190565b60405180910390a3601154610100900460ff16612819576128198989612c79565b50600198975050505050505050565b600a805460ff60a01b1916600160a01b179055305f90815260036020908152604080832060085461010090046001600160a01b031684529091529020545f191461289a57305f90815260036020908152604080832060085461010090046001600160a01b0316845290915290205f1990555b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106128cd576128cd6132e0565b60200260200101906001600160a01b031690816001600160a01b031681525050600860019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129629190613395565b81600181518110612975576129756132e0565b6001600160a01b03928316602091820292909201015260085460405163791ac94760e01b81526101009091049091169063791ac947906129c19085905f90869030904290600401613410565b5f604051808303815f87803b1580156129d8575f80fd5b505af19250505080156129e9575060015b6129f35750612a4d565b600a546040515f916001600160a01b03169061d6d890479084818181858888f193505050503d805f8114612a42576040519150601f19603f3d011682016040523d82523d5f602084013e612a47565b606091505b50505050505b50600a805460ff60a01b19169055565b6013545f906001600160a01b03848116911614801590612a8b57506013546001600160a01b03838116911614155b8015612aa257506013546001600160a01b03163214155b8015612ac657506001600160a01b0382165f9081526004602052604090205460ff16155b8015612aea57506001600160a01b0383165f9081526004602052604090205460ff16155b8015612b0157506001600160a01b03821661dead14155b8015612b1557506001600160a01b03821615155b8015612b2a57506001600160a01b0383163014155b8015612b4a57506011546001600160a01b03848116620100009092041614155b8015612b6a57506011546001600160a01b03838116620100009092041614155b9392505050565b5f808315612b86575060075461ffff16612bb0565b8215612b9f575060075462010000900461ffff16612bb0565b50600754640100000000900461ffff165b6011546201000090046001600160a01b031630148015612bd1575046606114155b15612bdb57506111945b805f03612beb5784915050610a0e565b5f612710612bf9838861328b565b612c03919061326c565b90508015612c6f57305f9081526020819052604081208054839290612c299084906133fd565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6126e181876132a2565b601154610100900460ff1615612cdd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b6064820152608401610a40565b612ce78282612a5d565b158015612d0157506009546001600160a01b038281169116145b156116d8576001600160a01b038083165f908152600460209081526040808320805460ff19908116600190811790925560059093529220805490911690911790556011805461ff001916610100179081905562010000900416612d78576011805462010000600160b01b0319163062010000021790555b600a805460ff60a81b1916600160a81b179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f914105325790602001611b60565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b03811681146111af575f80fd5b5f8060408385031215612e16575f80fd5b8235612e2181612df1565b946020939093013593505050565b5f805f60608486031215612e41575f80fd5b8335612e4c81612df1565b92506020840135612e5c81612df1565b929592945050506040919091013590565b5f8060408385031215612e7e575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715612eca57612eca612e8d565b604052919050565b5f67ffffffffffffffff821115612eeb57612eeb612e8d565b5060051b60200190565b5f82601f830112612f04575f80fd5b8135612f17612f1282612ed2565b612ea1565b8082825260208201915060208360051b860101925085831115612f38575f80fd5b602085015b83811015612f55578035835260209283019201612f3d565b5095945050505050565b5f8060408385031215612f70575f80fd5b823567ffffffffffffffff811115612f86575f80fd5b8301601f81018513612f96575f80fd5b8035612fa4612f1282612ed2565b8082825260208201915060208360051b850101925087831115612fc5575f80fd5b6020840193505b82841015612ff0578335612fdf81612df1565b825260209384019390910190612fcc565b9450505050602083013567ffffffffffffffff81111561300e575f80fd5b61301a85828601612ef5565b9150509250929050565b803561ffff81168114613035575f80fd5b919050565b5f805f6060848603121561304c575f80fd5b61305584613024565b925061306360208501613024565b915061307160408501613024565b90509250925092565b80151581146111af575f80fd5b5f8060408385031215613098575f80fd5b82356130a381612df1565b915060208301356130b38161307a565b809150509250929050565b5f602082840312156130ce575f80fd5b5035919050565b5f602082840312156130e5575f80fd5b8135612b6a81612df1565b5f8060408385031215613101575f80fd5b82356130a38161307a565b5f806040838503121561311d575f80fd5b823561312881612df1565b915060208301356130b381612df1565b5f805f806080858703121561314b575f80fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b5f52601160045260245ffd5b6001815b60018411156131b65780850481111561319a5761319a613167565b60018416156131a857908102905b60019390931c92800261317f565b935093915050565b5f826131cc57506001610961565b816131d857505f610961565b81600181146131ee57600281146131f857613214565b6001915050610961565b60ff84111561320957613209613167565b50506001821b610961565b5060208310610133831016604e8410600b8410161715613237575081810a610961565b6132435f19848461317b565b805f190482111561325657613256613167565b029392505050565b5f612b6a60ff8416836131be565b5f8261328657634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761096157610961613167565b8181038181111561096157610961613167565b60208082526011908201527021b0b63632b9101e979e9037bbb732b91760791b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f61ffff821661ffff810361330b5761330b613167565b60010192915050565b5f8060408385031215613325575f80fd5b825161333081612df1565b60208401519092506130b381612df1565b5f8060408385031215613352575f80fd5b505080516020909101519092909150565b5f60208284031215613373575f80fd5b5051919050565b5f6020828403121561338a575f80fd5b8151612b6a8161307a565b5f602082840312156133a5575f80fd5b8151612b6a81612df1565b6020808252602d908201527f43616e6e6f74206265206c6f776572207468616e20302e3030303125206f662060408201526c3a37ba30b61039bab838363c9760991b606082015260800190565b8082018082111561096157610961613167565b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156134605783516001600160a01b0316835260209384019390920191600101613439565b50506001600160a01b03959095166060840152505060800152939250505056fea26469706673582212207ff0b0e4e909f117618ae20d80a04edcbbb6a177fedea3e7f6ad22444b5346cb64736f6c634300081a0033

Deployed Bytecode Sourcemap

3889:19087:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5226:73;;;;;;;;;;;;5257:42;5226:73;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;5226:73:0;;;;;;;;5475:28;;;;;;;;;;;;;;;;;;;368:25:1;;;356:2;341:18;5475:28:0;222:177:1;4815:105:0;;;;;;;;;;-1:-1:-1;4815:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;630:6:1;618:19;;;600:38;;674:19;;;669:2;654:18;;647:47;730:19;;710:18;;;703:47;;;;588:2;573:18;4815:105:0;404:352:1;9349:80:0;;;;;;;;;;-1:-1:-1;9421:5:0;;;;;;;;;;;;-1:-1:-1;;;9421:5:0;;;;9349:80;;;;;;;:::i;5165:26::-;;;;;;;;;;-1:-1:-1;5165:26:0;;;;;;;-1:-1:-1;;;;;5165:26:0;;;5132;;;;;;;;;;-1:-1:-1;5132:26:0;;;;;;;;;;;1574:14:1;;1567:22;1549:41;;1537:2;1522:18;5132:26:0;1409:187:1;9957:161:0;;;;;;;;;;-1:-1:-1;9957:161:0;;;;;:::i;:::-;;:::i;14907:114::-;;;;;;;;;;;;;:::i;9084:83::-;;;;;;;;;;;;;:::i;10627:306::-;;;;;;;;;;-1:-1:-1;10627:306:0;;;;;:::i;:::-;;:::i;14519:264::-;;;;;;;;;;-1:-1:-1;14519:264:0;;;;;:::i;:::-;;:::i;:::-;;20907:447;;;;;;;;;;-1:-1:-1;20907:447:0;;;;;:::i;:::-;;:::i;5583:33::-;;;;;;;;;;;;;;;;4929:42;;;;;;;;;;;;4967:4;4929:42;;5510:25;;;;;;;;;;;;;;;;9173:80;;;;;;;;;;-1:-1:-1;9173:80:0;;4515:2;5663:36:1;;5651:2;5636:18;9173:80:0;5521:184:1;13578:453:0;;;;;;;;;;-1:-1:-1;13578:453:0;;;;;:::i;:::-;;:::i;12963:140::-;;;;;;;;;;-1:-1:-1;12963:140:0;;;;;:::i;:::-;;:::i;14238:273::-;;;;;;;;;;-1:-1:-1;14238:273:0;;;;;:::i;:::-;;:::i;5198:21::-;;;;;;;;;;-1:-1:-1;5198:21:0;;;;-1:-1:-1;;;;;5198:21:0;;;5747:34;;;;;;;;;;-1:-1:-1;5747:34:0;;;;;;;;15029:189;;;;;;;;;;-1:-1:-1;15029:189:0;;;;;:::i;:::-;;:::i;7632:738::-;;;;;;;;;;-1:-1:-1;7632:738:0;;;;;:::i;:::-;;:::i;13111:127::-;;;;;;;;;;-1:-1:-1;13111:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;13202:28:0;13178:4;13202:28;;;:19;:28;;;;;;;;;13111:127;5788:36;;;;;;;;;;-1:-1:-1;5788:36:0;;;;;;;;;;;22742:231;;;;;;;;;;;;;:::i;13246:134::-;;;;;;;;;;-1:-1:-1;13246:134:0;;;;;:::i;:::-;;:::i;5861:26::-;;;;;;;;;;;;;;;;12258:557;;;;;;;;;;-1:-1:-1;12258:557:0;;;;;:::i;:::-;;:::i;12823:132::-;;;;;;;;;;-1:-1:-1;12823:132:0;;;;;:::i;:::-;-1:-1:-1;;;;;12917:30:0;12893:4;12917:30;;;:21;:30;;;;;;;;;12823:132;14791:108;;;;;;;;;;;;;:::i;9659:117::-;;;;;;;;;;-1:-1:-1;9659:117:0;;;;;:::i;:::-;;:::i;8378:310::-;;;;;;;;;;;;;:::i;5306:92::-;;;;;;;;;;-1:-1:-1;5306:92:0;;;;-1:-1:-1;;;;;5306:92:0;;;13388:182;;;;;;;;;;;;;:::i;11686:564::-;;;;;;;;;;-1:-1:-1;11686:564:0;;;;;:::i;:::-;;:::i;9435:79::-;;;;;;;;;;-1:-1:-1;9505:6:0;;-1:-1:-1;;;;;9505:6:0;9435:79;;10444:175;;;;;;;;;;;;;:::i;19710:695::-;;;;;;;;;;;;;:::i;9259:84::-;;;;;;;;;;-1:-1:-1;9333:7:0;;;;;;;;;;;;-1:-1:-1;;;9333:7:0;;;;9259:84;;9784:165;;;;;;;;;;-1:-1:-1;9784:165:0;;;;;:::i;:::-;;:::i;20603:296::-;;;;;;;;;;-1:-1:-1;20603:296:0;;;;;:::i;:::-;;:::i;5542:34::-;;;;;;;;;;-1:-1:-1;5542:34:0;;;;;;;;15814:263;;;;;;;;;;-1:-1:-1;15814:263:0;;;;;:::i;:::-;;:::i;9520:133::-;;;;;;;;;;-1:-1:-1;9520:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9622:19:0;;;9604:7;9622:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9520:133;10941:737;;;;;;;;;;-1:-1:-1;10941:737:0;;;;;:::i;:::-;;:::i;14039:191::-;;;;;;;;;;-1:-1:-1;14039:191:0;;;;;:::i;:::-;;:::i;20413:182::-;;;;;;;;;;;;;:::i;15226:580::-;;;;;;;;;;-1:-1:-1;15226:580:0;;;;;:::i;:::-;;:::i;5429:39::-;;;;;;;;;;-1:-1:-1;5429:39:0;;;;-1:-1:-1;;;5429:39:0;;;;;;9957:161;10034:4;10051:37;10060:10;10072:7;10081:6;10051:8;:37::i;:::-;-1:-1:-1;10106:4:0;9957:161;;;;;:::o;14907:114::-;14954:7;14999:13;4515:2;14999;:13;:::i;:::-;14981:14;;:32;;;;:::i;:::-;14974:39;;14907:114;:::o;9084:83::-;9139:7;4576:13;4515:2;4576;:13;:::i;:::-;4559:30;;4359:13;4559:30;:::i;10627:306::-;-1:-1:-1;;;;;10748:19:0;;10727:4;10748:19;;;:11;:19;;;;;;;;10768:10;10748:31;;;;;;;;-1:-1:-1;;10748:52:0;10744:126;;-1:-1:-1;;;;;10817:19:0;;;;;;:11;:19;;;;;;;;10837:10;10817:31;;;;;;;:41;;10852:6;;10817:19;:41;;10852:6;;10817:41;:::i;:::-;;;;-1:-1:-1;;10744:126:0;10889:36;10899:6;10907:9;10918:6;10889:9;:36::i;:::-;10882:43;10627:306;-1:-1:-1;;;;10627:306:0:o;14519:264::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;;;;;;;;;14661:3:::1;4576:13;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14651:13;;;;:::i;:::-;14639:7:::0;14628;4576:13:::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14618:17;;;;:::i;:::-;14617:29;;;;:::i;:::-;:48;;14609:109;;;::::0;-1:-1:-1;;;14609:109:0;;11690:2:1;14609:109:0::1;::::0;::::1;11672:21:1::0;11729:2;11709:18;;;11702:30;11768:34;11748:18;;;11741:62;-1:-1:-1;;;11819:18:1;;;11812:46;11875:19;;14609:109:0::1;11488:412:1::0;14609:109:0::1;14768:7:::0;14757;4576:13:::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14747:17;;;;:::i;:::-;14746:29;;;;:::i;:::-;14729:14;:46:::0;-1:-1:-1;;14519:264:0:o;20907:447::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;21042:7:::1;:14;21023:8;:15;:33;21015:67;;;::::0;-1:-1:-1;;;21015:67:0;;12107:2:1;21015:67:0::1;::::0;::::1;12089:21:1::0;12146:2;12126:18;;;12119:30;-1:-1:-1;;;12165:18:1;;;12158:51;12226:18;;21015:67:0::1;11905:345:1::0;21015:67:0::1;21098:8;21093:254;21116:8;:15;21112:1;:19;;;21093:254;;;21197:13;4515:2;21197;:13;:::i;:::-;21186:7;21194:1;21186:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21161:21;21171:10;21161:9;:21::i;:::-;:49;;21153:80;;;::::0;-1:-1:-1;;;21153:80:0;;12589:2:1;21153:80:0::1;::::0;::::1;12571:21:1::0;12628:2;12608:18;;;12601:30;-1:-1:-1;;;12647:18:1;;;12640:48;12705:18;;21153:80:0::1;12387:342:1::0;21153:80:0::1;21248:87;21265:10;21277:8;21286:1;21277:11;;;;;;;;;;:::i;:::-;;;;;;;4515:2;21301;:13;;;;:::i;:::-;21290:7;21298:1;21290:10;;;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;21316:5;21323::::0;21330:4:::1;21248:16;:87::i;:::-;-1:-1:-1::0;21133:3:0;::::1;::::0;::::1;:::i;:::-;;;;21093:254;;;;20907:447:::0;;:::o;13578:453::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;13686:14:::1;::::0;::::1;;13685:15;13677:45;;;::::0;-1:-1:-1;;;13677:45:0;;13121:2:1;13677:45:0::1;::::0;::::1;13103:21:1::0;13160:2;13140:18;;;13133:30;-1:-1:-1;;;13179:18:1;;;13172:47;13236:18;;13677:45:0::1;12919:341:1::0;13677:45:0::1;4967:4;13741:6;:21;;;;:65;;;;;5017:4;13783:7;:23;;;;13741:65;:117;;;;;5071:4;13827:11;:31;;;;13741:117;13733:170;;;::::0;-1:-1:-1;;;13733:170:0;;13467:2:1;13733:170:0::1;::::0;::::1;13449:21:1::0;13506:2;13486:18;;;13479:30;13545:25;13525:18;;;13518:53;13588:18;;13733:170:0::1;13265:347:1::0;13733:170:0::1;13914:9;:25:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;13950:27:0;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;;13988:35:0::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;13578:453::o;12963:140::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13055:30:0;;;::::1;;::::0;;;:21:::1;:30;::::0;;;;:40;;-1:-1:-1;;13055:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12963:140::o;14238:273::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;14383:4:::1;4576:13;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14369:11;::::0;14379:1:::1;14369:11;:::i;:::-;:18;;;;:::i;:::-;14357:7:::0;14346;4576:13:::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14336:17;;;;:::i;:::-;14335:29;;;;:::i;:::-;:53;;14327:121;;;::::0;-1:-1:-1;;;14327:121:0;;13819:2:1;14327:121:0::1;::::0;::::1;13801:21:1::0;13858:2;13838:18;;;13831:30;13897:34;13877:18;;;13870:62;13968:25;13948:18;;;13941:53;14011:19;;14327:121:0::1;13617:419:1::0;14327:121:0::1;14496:7:::0;14485;4576:13:::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;14475:17;;;;:::i;:::-;14474:29;;;;:::i;:::-;14459:12;:44:::0;-1:-1:-1;;14238:273:0:o;15029:189::-;15158:6;;15120:7;;5118:5;;15168:21;;15148:17;;-1:-1:-1;;;;;15158:6:0;15148:9;:17::i;:::-;:41;;;;:::i;:::-;15147:62;;;;:::i;7632:738::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7711:22:0;::::1;7703:66;;;::::0;-1:-1:-1;;;7703:66:0;;14243:2:1;7703:66:0::1;::::0;::::1;14225:21:1::0;14282:2;14262:18;;;14255:30;14321:33;14301:18;;;14294:61;14372:18;;7703:66:0::1;14041:355:1::0;7703:66:0::1;-1:-1:-1::0;;;;;;;7788:16:0;::::1;::::0;7780:60:::1;;;::::0;-1:-1:-1;;;7780:60:0;;14243:2:1;7780:60:0::1;::::0;::::1;14225:21:1::0;14282:2;14262:18;;;14255:30;14321:33;14301:18;;;14294:61;14372:18;;7780:60:0::1;14041:355:1::0;7780:60:0::1;7871:6;::::0;7851:34:::1;::::0;-1:-1:-1;;;;;7871:6:0::1;;7851:19;:34::i;:::-;7896:35;7916:8;7926:4;7896:19;:35::i;:::-;7966:6;::::0;7976:1:::1;::::0;7956:17:::1;::::0;-1:-1:-1;;;;;7966:6:0::1;7956:9;:17::i;:::-;:21;7952:127;;;8011:6;::::0;7994:73:::1;::::0;-1:-1:-1;;;;;8011:6:0::1;8019:8:::0;8029:17:::1;8011:6:::0;8029:9:::1;:17::i;7994:73::-;;7952:127;8118:6;::::0;;-1:-1:-1;;;;;8135:17:0;;::::1;-1:-1:-1::0;;;;;;8135:17:0;::::1;;::::0;;;8168:16:::1;::::0;8118:6;::::1;::::0;8168:16:::1;8118:6;8168:16:::0;;::::1;;8163:134;;-1:-1:-1::0;;;;;8201:27:0;;::::1;8231:5;8201:27:::0;;;:17:::1;:27;::::0;;;;;:35;;-1:-1:-1;;8201:35:0;;::::1;::::0;;;8251:27;;::::1;::::0;;;;:34;;;;::::1;8201:35:::0;8251:34:::1;::::0;;8163:134:::1;8343:8;-1:-1:-1::0;;;;;8312:40:0::1;8333:8;-1:-1:-1::0;;;;;8312:40:0::1;;;;;;;;;;;7692:678;7632:738:::0;:::o;22742:231::-;22806:15;;-1:-1:-1;;;;;22806:15:0;22792:10;:29;22784:38;;;;;;22833:20;22856:24;22874:4;22856:9;:24::i;:::-;22833:47;-1:-1:-1;22895:16:0;;22891:75;;22928:26;22941:12;22928;:26::i;:::-;22773:200;22742:231::o;13246:134::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13334:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;13334:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13246:134::o;12258:557::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;12333:14:::1;::::0;::::1;;12332:15;12324:24;;;::::0;::::1;;12383:4;-1:-1:-1::0;;;;;12367:21:0;::::1;::::0;12359:48:::1;;;::::0;-1:-1:-1;;;12359:48:0;;14603:2:1;12359:48:0::1;::::0;::::1;14585:21:1::0;14642:2;14622:18;;;14615:30;-1:-1:-1;;;14661:18:1;;;14654:44;14715:18;;12359:48:0::1;14401:338:1::0;12359:48:0::1;12418:11;:31:::0;;-1:-1:-1;;;;;;12418:31:0::1;::::0;-1:-1:-1;;;;;12418:31:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;12464:23:::1;::::0;;-1:-1:-1;;;12464:23:0;;;;:11;;;::::1;::::0;;::::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;12464:11:0;:23:::1;;;;;;;;;;-1:-1:-1::0;12464:23:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;12464:23:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;12460:348;;12797:8;::::0;::::1;12460:348;12551:9;:29:::0;;-1:-1:-1;;;;;;12551:29:0::1;;-1:-1:-1::0;;;;;12551:29:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;12582:6:::1;:22:::0;;-1:-1:-1;;;;;;12582:22:0::1;::::0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;12606:15:0;;;-1:-1:-1;12606:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;12606:22:0::1;::::0;;::::1;::::0;;12653:6:::1;::::0;12669:9;;12644:55:::1;::::0;12653:6;::::1;::::0;12669:9;;::::1;;-1:-1:-1::0;;12644:8:0::1;:55::i;:::-;12746:9;::::0;12714:62:::1;::::0;12731:4:::1;::::0;12746:9:::1;::::0;::::1;-1:-1:-1::0;;;;;12746:9:0::1;-1:-1:-1::0;;12714:8:0::1;:62::i;14791:108::-:0;14834:7;14877:13;4515:2;14877;:13;:::i;:::-;14861:12;;:30;;;;:::i;9659:117::-;-1:-1:-1;;;;;9752:16:0;9725:7;9752:16;;;;;;;;;;;;9659:117::o;8378:310::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;8445:14:::1;::::0;::::1;;8437:74;;;::::0;-1:-1:-1;;;8437:74:0;;15336:2:1;8437:74:0::1;::::0;::::1;15318:21:1::0;15375:2;15355:18;;;15348:30;15414:34;15394:18;;;15387:62;-1:-1:-1;;;15465:18:1;;;15458:45;15520:19;;8437:74:0::1;15134:411:1::0;8437:74:0::1;8542:6;::::0;8522:34:::1;::::0;-1:-1:-1;;;;;8542:6:0::1;;8522:19;:34::i;:::-;8586:6;::::0;;-1:-1:-1;;;;;;8603:19:0;::::1;::::0;;;8638:42:::1;::::0;-1:-1:-1;;;;;8586:6:0;;::::1;::::0;8567:16:::1;::::0;8586:6;;8638:42:::1;::::0;8567:16;;8638:42:::1;8426:262;8378:310::o:0;13388:182::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;13541:14:::1;:21:::0;;-1:-1:-1;;13541:21:0::1;13558:4;13541:21;::::0;;13388:182::o;11686:564::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;11768:7:::1;11763:480;;-1:-1:-1::0;;;;;11792:13:0;;::::1;11808:5;11792:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;11792:21:0::1;::::0;;11828:11:::1;::::0;:34;;-1:-1:-1;;;11828:34:0;;::::1;::::0;::::1;15718:51:1::0;;;;15785:18;;;15778:50;;;;11828:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15691:18:1;;11828:34:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11686:564:::0;;:::o;11763:480::-:1;11899:17;::::0;:22;11895:135:::1;;11988:6;11968:17;;11950:15;:35;;;;:::i;:::-;:44;11942:72;;;::::0;-1:-1:-1;;;11942:72:0;;16041:2:1;11942:72:0::1;::::0;::::1;16023:21:1::0;16080:2;16060:18;;;16053:30;-1:-1:-1;;;16099:18:1;;;16092:45;16154:18;;11942:72:0::1;15839:339:1::0;11942:72:0::1;-1:-1:-1::0;;;;;12053:13:0;::::1;;::::0;;;:7:::1;:13;::::0;;;;;::::1;;12052:14;12044:54;;;::::0;-1:-1:-1;;;12044:54:0;;16385:2:1;12044:54:0::1;::::0;::::1;16367:21:1::0;16424:2;16404:18;;;16397:30;16463:29;16443:18;;;16436:57;16510:18;;12044:54:0::1;16183:351:1::0;12044:54:0::1;-1:-1:-1::0;;;;;12113:13:0;;::::1;;::::0;;;12129:4:::1;12113:13;::::0;;;;;;;;:20;;-1:-1:-1;;12113:20:0::1;::::0;::::1;::::0;;12168:15:::1;12148:17;:35:::0;12198:11:::1;::::0;:33;;-1:-1:-1;;;12198:33:0;;::::1;::::0;::::1;15718:51:1::0;;;;15785:18;;;15778:50;12198:11:0;;::::1;::::0;;::::1;::::0;:21:::1;::::0;15691:18:1;;12198:33:0::1;15550:284:1::0;11763:480:0::1;11686:564:::0;;:::o;10444:175::-;7486:6;;10510:4;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;10559:9:::1;::::0;10527:62:::1;::::0;10544:4:::1;::::0;10559:9:::1;::::0;::::1;-1:-1:-1::0;;;;;10559:9:0::1;-1:-1:-1::0;;10527:8:0::1;:62::i;:::-;-1:-1:-1::0;10607:4:0::1;10444:175:::0;:::o;19710:695::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;19772:14:::1;::::0;::::1;;19771:15;19763:52;;;::::0;-1:-1:-1;;;19763:52:0;;16741:2:1;19763:52:0::1;::::0;::::1;16723:21:1::0;16780:2;16760:18;;;16753:30;16819:26;16799:18;;;16792:54;16863:18;;19763:52:0::1;16539:348:1::0;19763:52:0::1;19834:16;::::0;::::1;::::0;::::1;;;19826:53;;;::::0;-1:-1:-1;;;19826:53:0;;17094:2:1;19826:53:0::1;::::0;::::1;17076:21:1::0;17133:2;17113:18;;;17106:30;17172:26;17152:18;;;17145:54;17216:18;;19826:53:0::1;16892:348:1::0;19826:53:0::1;19902:11;::::0;;;::::1;-1:-1:-1::0;;;;;19902:11:0::1;19890:106;;19944:11;:40:::0;;-1:-1:-1;;;;;;19944:40:0::1;19978:4;19944:40:::0;::::1;;::::0;;19890:106:::1;20010:11;::::0;20032:6:::1;::::0;20010:87:::1;::::0;-1:-1:-1;;;20010:87:0;;-1:-1:-1;;;;;20032:6:0;;::::1;20010:87;::::0;::::1;17468:51:1::0;17567:10;20047:12:0::1;17555:23:1::0;17535:18;;;17528:51;17627:18;20069:15:0::1;17615:31:1::0;17595:18;;;17588:59;4515:2:0::1;17663:18:1::0;;;17656:45;20010:11:0;;;::::1;;::::0;:21:::1;::::0;17440:19:1;;20010:87:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;20006:103:::0;20123:11:::1;::::0;20154:6:::1;::::0;-1:-1:-1;;;;;20123:11:0;;;::::1;::::0;::::1;::::0;:20:::1;::::0;20144:17:::1;::::0;20154:6:::1;20144:9;:17::i;:::-;20123:39;;;;;;;;;;;;;368:25:1::0;;356:2;341:18;;222:177;20123:39:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20123:39:0::1;::::0;;::::1;;::::0;;::::1;-1:-1:-1::0;;20123:39:0::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;:::i;:::-;;;20119:207:::0;::::1;;20234:13;:29:::0;;;;20278:10:::1;:27:::0;20119:207:::1;20336:14;:21:::0;;-1:-1:-1;;20336:21:0::1;20353:4;20336:21;::::0;;20382:15:::1;20368:11;:29:::0;19710:695::o;9784:165::-;9862:4;9879:40;9889:10;9901:9;9912:6;9879:9;:40::i;:::-;-1:-1:-1;9937:4:0;;9784:165;-1:-1:-1;;;9784:165:0:o;20603:296::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;20681:16:::1;::::0;::::1;::::0;::::1;;;20677:111;;;20739:4;-1:-1:-1::0;;;;;20722:22:0;::::1;::::0;20714:62:::1;;;::::0;-1:-1:-1;;;20714:62:0;;18262:2:1;20714:62:0::1;::::0;::::1;18244:21:1::0;18301:2;18281:18;;;18274:30;18340:29;18320:18;;;18313:57;18387:18;;20714:62:0::1;18060:351:1::0;20714:62:0::1;20852:6;::::0;20860:30:::1;::::0;-1:-1:-1;;;20860:30:0;;20884:4:::1;20860:30;::::0;::::1;160:51:1::0;20820:5:0;;-1:-1:-1;;;;;20837:14:0;;::::1;::::0;::::1;::::0;20852:6;;;::::1;::::0;20837:14;;20860:15:::1;::::0;133:18:1;;20860:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20837:54;::::0;-1:-1:-1;;;;;;20837:54:0::1;::::0;;;;;;-1:-1:-1;;;;;18843:32:1;;;20837:54:0::1;::::0;::::1;18825:51:1::0;18892:18;;;18885:34;18798:18;;20837:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;15814:263::-:0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;15923:19:::1;:33:::0;;-1:-1:-1;;;;15923:33:0::1;-1:-1:-1::0;;;15923:33:0;::::1;;::::0;;::::1;::::0;;;::::1;::::0;;;15967:22:::1;:47:::0;;-1:-1:-1;;15967:47:0::1;::::0;::::1;;;::::0;;16030:39:::1;::::0;1549:41:1;;;16030:39:0::1;::::0;1537:2:1;1522:18;16030:39:0::1;;;;;;;;15814:263:::0;;:::o;10941:737::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;11021:16:::1;::::0;::::1;::::0;::::1;;;11020:17;11012:60;;;::::0;-1:-1:-1;;;11012:60:0;;19382:2:1;11012:60:0::1;::::0;::::1;19364:21:1::0;19421:2;19401:18;;;19394:30;19460:32;19440:18;;;19433:60;19510:18;;11012:60:0::1;19180:354:1::0;11012:60:0::1;11115:9;::::0;11083:46:::1;::::0;11100:4:::1;::::0;11115:9:::1;::::0;::::1;-1:-1:-1::0;;;;;11115:9:0::1;11127:1;11083:8;:46::i;:::-;11140:20;11173:9;11140:43;;11194:16;11224:10;-1:-1:-1::0;;;;;11224:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11213:40:0::1;;11262:4;11269:10;-1:-1:-1::0;;;;;11269:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11213:74;::::0;-1:-1:-1;;;;;;11213:74:0::1;::::0;;;;;;-1:-1:-1;;;;;19987:32:1;;;11213:74:0::1;::::0;::::1;19969:51:1::0;20056:32;;20036:18;;;20029:60;19942:18;;11213:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11306:6;::::0;-1:-1:-1;;;;;11306:6:0;;::::1;11316:5;11298:15:::0;;;:7:::1;:15;::::0;;;;:23;;-1:-1:-1;;11298:23:0::1;::::0;;11194:93;;-1:-1:-1;11336:22:0;::::1;11332:200;;11395:10;-1:-1:-1::0;;;;;11395:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11384:43:0::1;;11436:4;11443:10;-1:-1:-1::0;;;;;11443:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11384:77;::::0;-1:-1:-1;;;;;;11384:77:0::1;::::0;;;;;;-1:-1:-1;;;;;19987:32:1;;;11384:77:0::1;::::0;::::1;19969:51:1::0;20056:32;;20036:18;;;20029:60;19942:18;;11384:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11375:6;:86:::0;;-1:-1:-1;;;;;;11375:86:0::1;-1:-1:-1::0;;;;;11375:86:0;;;::::1;::::0;;;::::1;::::0;;11332:200:::1;;;11503:6;:17:::0;;-1:-1:-1;;;;;;11503:17:0::1;-1:-1:-1::0;;;;;11503:17:0;::::1;;::::0;;11332:200:::1;11542:9;:22:::0;;-1:-1:-1;;;;;;11542:22:0::1;;-1:-1:-1::0;;;;;11542:22:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;11583:6:::1;::::0;;::::1;-1:-1:-1::0;11575:15:0;;;-1:-1:-1;11575:15:0::1;::::0;;;;;;;:22;;-1:-1:-1;;11575:22:0::1;::::0;;::::1;::::0;;11640:9;;11608:62:::1;::::0;11625:4:::1;::::0;11640:9;::::1;;-1:-1:-1::0;;11608:8:0::1;:62::i;14039:191::-:0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14124:23:0;::::1;14116:59;;;::::0;-1:-1:-1;;;14116:59:0;;20302:2:1;14116:59:0::1;::::0;::::1;20284:21:1::0;20341:2;20321:18;;;20314:30;20380:25;20360:18;;;20353:53;20423:18;;14116:59:0::1;20100:347:1::0;14116:59:0::1;14186:15;:36:::0;;-1:-1:-1;;;;;;14186:36:0::1;-1:-1:-1::0;;;;;14186:36:0;;;::::1;::::0;;;::::1;::::0;;14039:191::o;20413:182::-;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;20480:16:::1;::::0;::::1;::::0;::::1;;;20479:17;20471:58;;;::::0;-1:-1:-1;;;20471:58:0;;20654:2:1;20471:58:0::1;::::0;::::1;20636:21:1::0;20693:2;20673:18;;;20666:30;20732;20712:18;;;20705:58;20780:18;;20471:58:0::1;20452:352:1::0;20471:58:0::1;20548:6;::::0;20540:47:::1;::::0;-1:-1:-1;;;;;20548:6:0;;::::1;::::0;20565:21:::1;20540:47:::0;::::1;;;::::0;20548:6:::1;20540:47:::0;20548:6;20540:47;20565:21;20548:6;20540:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;15226:580:::0;7486:6;;-1:-1:-1;;;;;7486:6:0;7496:10;7486:20;7478:50;;;;-1:-1:-1;;;7478:50:0;;;;;;;:::i;:::-;15426:16;15406;4576:13:::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;15396:26;;;;:::i;:::-;15395:47;;;;:::i;:::-;15379:13;:63:::0;15494:13;15477;4576::::1;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;15467:23;;;;:::i;:::-;15466:41;;;;:::i;:::-;15453:10;:54:::0;;;15526:13:::1;::::0;:27:::1;;15518:73;;;::::0;-1:-1:-1;;;15518:73:0;;21011:2:1;15518:73:0::1;::::0;::::1;20993:21:1::0;21050:2;21030:18;;;21023:30;21089:34;21069:18;;;21062:62;-1:-1:-1;;;21140:18:1;;;21133:31;21181:19;;15518:73:0::1;20809:397:1::0;15518:73:0::1;15634:9;4576:13;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;15624:19;;;;:::i;:::-;15610:10;;:33;;15602:91;;;;-1:-1:-1::0;;;15602:91:0::1;;;;;;;:::i;:::-;15739:9;4576:13;4515:2;4576;:13;:::i;:::-;4559:30;::::0;4359:13:::1;4559:30;:::i;:::-;15729:19;;;;:::i;:::-;15712:13;;:36;;15704:94;;;;-1:-1:-1::0;;;15704:94:0::1;;;;;;;:::i;:::-;15226:580:::0;;;;:::o;10126:310::-;-1:-1:-1;;;;;10221:20:0;;10213:52;;;;-1:-1:-1;;;10213:52:0;;21827:2:1;10213:52:0;;;21809:21:1;21866:2;21846:18;;;21839:30;-1:-1:-1;;;21885:18:1;;;21878:49;21944:18;;10213:52:0;21625:343:1;10213:52:0;-1:-1:-1;;;;;10284:21:0;;10276:53;;;;-1:-1:-1;;;10276:53:0;;21827:2:1;10276:53:0;;;21809:21:1;21866:2;21846:18;;;21839:30;-1:-1:-1;;;21885:18:1;;;21878:49;21944:18;;10276:53:0;21625:343:1;10276:53:0;-1:-1:-1;;;;;10342:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;10395:33;;368:25:1;;;10395:33:0;;341:18:1;10395:33:0;;;;;;;10126:310;;;:::o;16539:1823::-;16618:4;-1:-1:-1;;;;;16643:18:0;;16635:68;;;;-1:-1:-1;;;16635:68:0;;22175:2:1;16635:68:0;;;22157:21:1;22214:2;22194:18;;;22187:30;22253:34;22233:18;;;22226:62;-1:-1:-1;;;22304:18:1;;;22297:35;22349:19;;16635:68:0;21973:401:1;16635:68:0;-1:-1:-1;;;;;16722:16:0;;16714:64;;;;-1:-1:-1;;;16714:64:0;;22581:2:1;16714:64:0;;;22563:21:1;22620:2;22600:18;;;22593:30;22659:34;22639:18;;;22632:62;-1:-1:-1;;;22710:18:1;;;22703:33;22753:19;;16714:64:0;22379:399:1;16714:64:0;16806:1;16797:6;:10;16789:64;;;;-1:-1:-1;;;16789:64:0;;22985:2:1;16789:64:0;;;22967:21:1;23024:2;23004:18;;;22997:30;23063:34;23043:18;;;23036:62;-1:-1:-1;;;23114:18:1;;;23107:39;23163:19;;16789:64:0;22783:405:1;16789:64:0;-1:-1:-1;;;;;16952:13:0;;16864:8;16952:13;;;:7;:13;;;;;;16864:8;;;;16952:13;;16948:162;;;16988:4;16982:10;;16948:162;;;-1:-1:-1;;;;;17014:11:0;;;;;;:7;:11;;;;;;;;17010:100;;;17049:4;17042:11;;17010:100;;;-1:-1:-1;17094:4:0;17010:100;17124:20;17135:4;17141:2;17124:10;:20::i;:::-;17120:644;;;17165:14;;;;17161:89;;17200:34;;-1:-1:-1;;;17200:34:0;;23395:2:1;17200:34:0;;;23377:21:1;23434:2;23414:18;;;23407:30;23473:26;23453:18;;;23446:54;23517:18;;17200:34:0;23193:348:1;17161:89:0;17268:3;:11;;;;17275:4;17268:11;17264:232;;;-1:-1:-1;;;;;17304:27:0;;;;;;:21;:27;;;;;;;;17303:28;:58;;;;-1:-1:-1;;;;;;17336:25:0;;;;;;:21;:25;;;;;;;;17335:26;17303:58;17299:182;;;17404:12;;17394:6;:22;;17386:75;;;;-1:-1:-1;;;17386:75:0;;23748:2:1;17386:75:0;;;23730:21:1;23787:2;23767:18;;;23760:30;23826:34;23806:18;;;23799:62;-1:-1:-1;;;23877:18:1;;;23870:38;23925:19;;17386:75:0;23546:404:1;17386:75:0;17528:9;;-1:-1:-1;;;;;17514:24:0;;;17528:9;;;;;17514:24;;;;:33;;;17543:4;17542:5;17514:33;17510:243;;;-1:-1:-1;;;;;17573:25:0;;;;;;:21;:25;;;;;;;;17568:170;;17657:14;;17647:6;17631:13;17641:2;17631:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;17623:95;;;;-1:-1:-1;;;17623:95:0;;24287:2:1;17623:95:0;;;24269:21:1;24326:2;24306:18;;;24299:30;24365:34;24345:18;;;24338:62;-1:-1:-1;;;24416:18:1;;;24409:40;24466:19;;17623:95:0;24085:406:1;17623:95:0;17780:4;17776:509;;;17806:6;;-1:-1:-1;;;17806:6:0;;;;17801:473;;17837:19;;-1:-1:-1;;;17837:19:0;;;;17833:426;;;17881:28;17912:24;17930:4;17912:9;:24::i;:::-;17881:55;;17987:13;;17963:20;:37;17959:281;;18047:10;;18088:31;;;18084:72;;18146:7;18123:30;;18084:72;18182:34;18195:20;18182:12;:34::i;:::-;18002:238;17959:281;17858:401;17833:426;18302:52;18319:4;18325:2;18329:6;18337:3;18342:4;18348:5;18302:16;:52::i;:::-;18295:59;16539:1823;-1:-1:-1;;;;;;;16539:1823:0:o;21362:597::-;-1:-1:-1;;;;;21532:25:0;;21481:4;21532:25;;;:19;:25;;;;;;21513:4;;21532:25;;;:52;;-1:-1:-1;;;;;;21561:23:0;;;;;;:19;:23;;;;;;;;21532:52;21528:99;;;-1:-1:-1;21610:5:0;21528:99;-1:-1:-1;;;;;21637:13:0;;:7;:13;;;;;;;;;;:23;;21654:6;;21637:7;:23;;21654:6;;21637:23;:::i;:::-;;;;-1:-1:-1;21671:22:0;;-1:-1:-1;21697:7:0;21696:55;;21745:6;21696:55;;;21708:34;21718:4;21724:6;21732:3;21737:4;21708:9;:34::i;:::-;21671:80;;21777:14;21762:7;:11;21770:2;-1:-1:-1;;;;;21762:11:0;-1:-1:-1;;;;;21762:11:0;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;21822:2;-1:-1:-1;;;;;21807:34:0;21816:4;-1:-1:-1;;;;;21807:34:0;;21826:14;21807:34;;;;368:25:1;;356:2;341:18;;222:177;21807:34:0;;;;;;;;21857:16;;;;;;;21852:78;;21890:28;21909:4;21915:2;21890:18;:28::i;:::-;-1:-1:-1;21947:4:0;;21362:597;-1:-1:-1;;;;;;;;21362:597:0:o;18370:761::-;6052:6;:13;;-1:-1:-1;;;;6052:13:0;-1:-1:-1;;;6052:13:0;;;18477:4:::1;6052:13:::0;18457:26;;;:11:::1;:26;::::0;;;;;;;18492:9:::1;::::0;6052:13;18492:9;::::1;-1:-1:-1::0;;;;;18492:9:0::1;18457:46:::0;;;;;;;;-1:-1:-1;;18457:67:0::1;18453:166;;18561:4;18541:26;::::0;;;:11:::1;:26;::::0;;;;;;;18576:9:::1;::::0;::::1;::::0;::::1;-1:-1:-1::0;;;;;18576:9:0::1;18541:46:::0;;;;;;;-1:-1:-1;;18541:66:0;;18453:166:::1;18663:16;::::0;;18677:1:::1;18663:16:::0;;;;;::::1;::::0;;18639:21:::1;::::0;18663:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18663:16:0::1;18639:40;;18708:4;18690;18695:1;18690:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18690:23:0::1;;;-1:-1:-1::0;;;;;18690:23:0::1;;;::::0;::::1;18734:9;;;;;;;;;-1:-1:-1::0;;;;;18734:9:0::1;-1:-1:-1::0;;;;;18734:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18724:4;18729:1;18724:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18724:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;18767:9:::1;::::0;:199:::1;::::0;-1:-1:-1;;;18767:199:0;;:9:::1;::::0;;::::1;::::0;;::::1;::::0;:60:::1;::::0;:199:::1;::::0;18842:20;;18877:1:::1;::::0;18893:4;;18920::::1;::::0;18940:15:::1;::::0;18767:199:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;18763:246;;18991:7;;;18763:246;19057:15;::::0;:66:::1;::::0;19021:12:::1;::::0;-1:-1:-1;;;;;19057:15:0::1;::::0;19113:5:::1;::::0;19085:21:::1;::::0;19021:12;19057:66;19021:12;19057:66;19085:21;19057:15;19113:5;19057:66:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6076:1:0::1;-1:-1:-1::0;6088:6:0;:14;;-1:-1:-1;;;;6088:14:0;;;18370:761::o;16085:446::-;16186:6;;16154:4;;-1:-1:-1;;;;;16178:14:0;;;16186:6;;16178:14;;;;:43;;-1:-1:-1;16215:6:0;;-1:-1:-1;;;;;16209:12:0;;;16215:6;;16209:12;;16178:43;:79;;;;-1:-1:-1;16251:6:0;;-1:-1:-1;;;;;16251:6:0;16238:9;:19;;16178:79;:118;;;;-1:-1:-1;;;;;;16275:21:0;;;;;;:17;:21;;;;;;;;16274:22;16178:118;:159;;;;-1:-1:-1;;;;;;16314:23:0;;;;;;:17;:23;;;;;;;;16313:24;16178:159;:186;;;;-1:-1:-1;;;;;;16354:10:0;;5257:42;16354:10;;16178:186;:219;;;;-1:-1:-1;;;;;;16381:16:0;;;;16178:219;:257;;;;-1:-1:-1;;;;;;16414:21:0;;16430:4;16414:21;;16178:257;:302;;;;-1:-1:-1;16468:11:0;;-1:-1:-1;;;;;16452:28:0;;;16468:11;;;;;16452:28;;16178:302;:345;;;;-1:-1:-1;16511:11:0;;-1:-1:-1;;;;;16497:26:0;;;16511:11;;;;;16497:26;;16178:345;16171:352;16085:446;-1:-1:-1;;;16085:446:0:o;21967:767::-;22055:7;22075:18;22108:3;22104:205;;;-1:-1:-1;22141:9:0;:16;;;22104:205;;;22179:4;22175:134;;;-1:-1:-1;22213:9:0;:17;;;;;;22175:134;;;-1:-1:-1;22276:9:0;:21;;;;;;22175:134;22331:11;;;;;-1:-1:-1;;;;;22331:11:0;22355:4;22323:37;:73;;;;;22377:13;22394:2;22377:19;;22323:73;22319:101;;;-1:-1:-1;22413:4:0;22319:101;22434:10;22448:1;22434:15;22430:39;;22460:6;22453:13;;;;;22430:39;22479:17;5118:5;22499:19;22508:10;22499:6;:19;:::i;:::-;:38;;;;:::i;:::-;22479:58;-1:-1:-1;22552:13:0;;22548:141;;22598:4;22582:7;:22;;;;;;;;;;:35;;22608:9;;22582:7;:35;;22608:9;;22582:35;:::i;:::-;;;;-1:-1:-1;;22637:40:0;;368:25:1;;;22660:4:0;;-1:-1:-1;;;;;22637:40:0;;;;;356:2:1;341:18;22637:40:0;;;;;;;22548:141;22708:18;22717:9;22708:6;:18;:::i;19139:563::-;19222:16;;;;;;;19221:17;19213:65;;;;-1:-1:-1;;;19213:65:0;;25872:2:1;19213:65:0;;;25854:21:1;25911:2;25891:18;;;25884:30;25950:34;25930:18;;;25923:62;-1:-1:-1;;;26001:18:1;;;25994:33;26044:19;;19213:65:0;25670:399:1;19213:65:0;19294:20;19305:4;19311:2;19294:10;:20::i;:::-;19293:21;:37;;;;-1:-1:-1;19324:6:0;;-1:-1:-1;;;;;19318:12:0;;;19324:6;;19318:12;19293:37;19289:406;;;-1:-1:-1;;;;;19347:23:0;;;;;;;:17;:23;;;;;;;;:30;;-1:-1:-1;;19347:30:0;;;19373:4;19347:30;;;;;;19392:19;:25;;;;;:32;;;;;;;;;;19439:16;:23;;-1:-1:-1;;19439:23:0;19347:30;19439:23;;;;;19489:11;;;;19477:114;;19535:11;:40;;-1:-1:-1;;;;;;19535:40:0;19569:4;19535:40;;;;;19477:114;19605:19;:26;;-1:-1:-1;;;;19605:26:0;-1:-1:-1;;;19605:26:0;;;19651:32;;-1:-1:-1;1549:41:1;;19651:32:0;;1537:2:1;1522:18;19651:32:0;1409:187:1;761:418;910:2;899:9;892:21;873:4;942:6;936:13;985:6;980:2;969:9;965:18;958:34;1044:6;1039:2;1031:6;1027:15;1022:2;1011:9;1007:18;1001:50;1100:1;1095:2;1086:6;1075:9;1071:22;1067:31;1060:42;1170:2;1163;1159:7;1154:2;1146:6;1142:15;1138:29;1127:9;1123:45;1119:54;1111:62;;;761:418;;;;:::o;1601:131::-;-1:-1:-1;;;;;1676:31:1;;1666:42;;1656:70;;1722:1;1719;1712:12;1737:367;1805:6;1813;1866:2;1854:9;1845:7;1841:23;1837:32;1834:52;;;1882:1;1879;1872:12;1834:52;1921:9;1908:23;1940:31;1965:5;1940:31;:::i;:::-;1990:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1737:367:1:o;2109:508::-;2186:6;2194;2202;2255:2;2243:9;2234:7;2230:23;2226:32;2223:52;;;2271:1;2268;2261:12;2223:52;2310:9;2297:23;2329:31;2354:5;2329:31;:::i;:::-;2379:5;-1:-1:-1;2436:2:1;2421:18;;2408:32;2449:33;2408:32;2449:33;:::i;:::-;2109:508;;2501:7;;-1:-1:-1;;;2581:2:1;2566:18;;;;2553:32;;2109:508::o;2622:346::-;2690:6;2698;2751:2;2739:9;2730:7;2726:23;2722:32;2719:52;;;2767:1;2764;2757:12;2719:52;-1:-1:-1;;2812:23:1;;;2932:2;2917:18;;;2904:32;;-1:-1:-1;2622:346:1:o;2973:127::-;3034:10;3029:3;3025:20;3022:1;3015:31;3065:4;3062:1;3055:15;3089:4;3086:1;3079:15;3105:275;3176:2;3170:9;3241:2;3222:13;;-1:-1:-1;;3218:27:1;3206:40;;3276:18;3261:34;;3297:22;;;3258:62;3255:88;;;3323:18;;:::i;:::-;3359:2;3352:22;3105:275;;-1:-1:-1;3105:275:1:o;3385:183::-;3445:4;3478:18;3470:6;3467:30;3464:56;;;3500:18;;:::i;:::-;-1:-1:-1;3545:1:1;3541:14;3557:4;3537:25;;3385:183::o;3573:723::-;3627:5;3680:3;3673:4;3665:6;3661:17;3657:27;3647:55;;3698:1;3695;3688:12;3647:55;3738:6;3725:20;3765:64;3781:47;3821:6;3781:47;:::i;:::-;3765:64;:::i;:::-;3853:3;3877:6;3872:3;3865:19;3909:4;3904:3;3900:14;3893:21;;3970:4;3960:6;3957:1;3953:14;3945:6;3941:27;3937:38;3923:52;;3998:3;3990:6;3987:15;3984:35;;;4015:1;4012;4005:12;3984:35;4051:4;4043:6;4039:17;4065:200;4081:6;4076:3;4073:15;4065:200;;;4173:17;;4203:18;;4250:4;4241:14;;;;4098;4065:200;;;-1:-1:-1;4283:7:1;3573:723;-1:-1:-1;;;;;3573:723:1:o;4301:1215::-;4419:6;4427;4480:2;4468:9;4459:7;4455:23;4451:32;4448:52;;;4496:1;4493;4486:12;4448:52;4536:9;4523:23;4569:18;4561:6;4558:30;4555:50;;;4601:1;4598;4591:12;4555:50;4624:22;;4677:4;4669:13;;4665:27;-1:-1:-1;4655:55:1;;4706:1;4703;4696:12;4655:55;4746:2;4733:16;4769:64;4785:47;4825:6;4785:47;:::i;4769:64::-;4855:3;4879:6;4874:3;4867:19;4911:4;4906:3;4902:14;4895:21;;4968:4;4958:6;4955:1;4951:14;4947:2;4943:23;4939:34;4925:48;;4996:7;4988:6;4985:19;4982:39;;;5017:1;5014;5007:12;4982:39;5049:4;5045:2;5041:13;5030:24;;5063:221;5079:6;5074:3;5071:15;5063:221;;;5161:3;5148:17;5178:31;5203:5;5178:31;:::i;:::-;5222:18;;5269:4;5096:14;;;;5260;;;;5063:221;;;5303:5;-1:-1:-1;;;;5361:4:1;5346:20;;5333:34;5392:18;5379:32;;5376:52;;;5424:1;5421;5414:12;5376:52;5447:63;5502:7;5491:8;5480:9;5476:24;5447:63;:::i;:::-;5437:73;;;4301:1215;;;;;:::o;5710:159::-;5777:20;;5837:6;5826:18;;5816:29;;5806:57;;5859:1;5856;5849:12;5806:57;5710:159;;;:::o;5874:328::-;5948:6;5956;5964;6017:2;6005:9;5996:7;5992:23;5988:32;5985:52;;;6033:1;6030;6023:12;5985:52;6056:28;6074:9;6056:28;:::i;:::-;6046:38;;6103:37;6136:2;6125:9;6121:18;6103:37;:::i;:::-;6093:47;;6159:37;6192:2;6181:9;6177:18;6159:37;:::i;:::-;6149:47;;5874:328;;;;;:::o;6207:118::-;6293:5;6286:13;6279:21;6272:5;6269:32;6259:60;;6315:1;6312;6305:12;6330:382;6395:6;6403;6456:2;6444:9;6435:7;6431:23;6427:32;6424:52;;;6472:1;6469;6462:12;6424:52;6511:9;6498:23;6530:31;6555:5;6530:31;:::i;:::-;6580:5;-1:-1:-1;6637:2:1;6622:18;;6609:32;6650:30;6609:32;6650:30;:::i;:::-;6699:7;6689:17;;;6330:382;;;;;:::o;6717:226::-;6776:6;6829:2;6817:9;6808:7;6804:23;6800:32;6797:52;;;6845:1;6842;6835:12;6797:52;-1:-1:-1;6890:23:1;;6717:226;-1:-1:-1;6717:226:1:o;6948:247::-;7007:6;7060:2;7048:9;7039:7;7035:23;7031:32;7028:52;;;7076:1;7073;7066:12;7028:52;7115:9;7102:23;7134:31;7159:5;7134:31;:::i;7424:376::-;7486:6;7494;7547:2;7535:9;7526:7;7522:23;7518:32;7515:52;;;7563:1;7560;7553:12;7515:52;7602:9;7589:23;7621:28;7643:5;7621:28;:::i;7805:388::-;7873:6;7881;7934:2;7922:9;7913:7;7909:23;7905:32;7902:52;;;7950:1;7947;7940:12;7902:52;7989:9;7976:23;8008:31;8033:5;8008:31;:::i;:::-;8058:5;-1:-1:-1;8115:2:1;8100:18;;8087:32;8128:33;8087:32;8128:33;:::i;8458:587::-;8544:6;8552;8560;8568;8621:3;8609:9;8600:7;8596:23;8592:33;8589:53;;;8638:1;8635;8628:12;8589:53;-1:-1:-1;;8683:23:1;;;8803:2;8788:18;;8775:32;;-1:-1:-1;8906:2:1;8891:18;;8878:32;;9009:2;8994:18;8981:32;;-1:-1:-1;8458:587:1;-1:-1:-1;8458:587:1:o;9050:127::-;9111:10;9106:3;9102:20;9099:1;9092:31;9142:4;9139:1;9132:15;9166:4;9163:1;9156:15;9182:375;9270:1;9288:5;9302:249;9323:1;9313:8;9310:15;9302:249;;;9373:4;9368:3;9364:14;9358:4;9355:24;9352:50;;;9382:18;;:::i;:::-;9432:1;9422:8;9418:16;9415:49;;;9446:16;;;;9415:49;9529:1;9525:16;;;;;9485:15;;9302:249;;;9182:375;;;;;;:::o;9562:902::-;9611:5;9641:8;9631:80;;-1:-1:-1;9682:1:1;9696:5;;9631:80;9730:4;9720:76;;-1:-1:-1;9767:1:1;9781:5;;9720:76;9812:4;9830:1;9825:59;;;;9898:1;9893:174;;;;9805:262;;9825:59;9855:1;9846:10;;9869:5;;;9893:174;9930:3;9920:8;9917:17;9914:43;;;9937:18;;:::i;:::-;-1:-1:-1;;9993:1:1;9979:16;;10052:5;;9805:262;;10151:2;10141:8;10138:16;10132:3;10126:4;10123:13;10119:36;10113:2;10103:8;10100:16;10095:2;10089:4;10086:12;10082:35;10079:77;10076:203;;;-1:-1:-1;10188:19:1;;;10264:5;;10076:203;10311:42;-1:-1:-1;;10336:8:1;10330:4;10311:42;:::i;:::-;10389:6;10385:1;10381:6;10377:19;10368:7;10365:32;10362:58;;;10400:18;;:::i;:::-;10438:20;;9562:902;-1:-1:-1;;;9562:902:1:o;10469:140::-;10527:5;10556:47;10597:4;10587:8;10583:19;10577:4;10556:47;:::i;10614:217::-;10654:1;10680;10670:132;;10724:10;10719:3;10715:20;10712:1;10705:31;10759:4;10756:1;10749:15;10787:4;10784:1;10777:15;10670:132;-1:-1:-1;10816:9:1;;10614:217::o;10836:168::-;10909:9;;;10940;;10957:15;;;10951:22;;10937:37;10927:71;;10978:18;;:::i;11009:128::-;11076:9;;;11097:11;;;11094:37;;;11111:18;;:::i;11142:341::-;11344:2;11326:21;;;11383:2;11363:18;;;11356:30;-1:-1:-1;;;11417:2:1;11402:18;;11395:47;11474:2;11459:18;;11142:341::o;12255:127::-;12316:10;12311:3;12307:20;12304:1;12297:31;12347:4;12344:1;12337:15;12371:4;12368:1;12361:15;12734:180;12772:3;12816:6;12809:5;12805:18;12847:6;12838:7;12835:19;12832:45;;12857:18;;:::i;:::-;12906:1;12893:15;;12734:180;-1:-1:-1;;12734:180:1:o;14744:385::-;14823:6;14831;14884:2;14872:9;14863:7;14859:23;14855:32;14852:52;;;14900:1;14897;14890:12;14852:52;14932:9;14926:16;14951:31;14976:5;14951:31;:::i;:::-;15051:2;15036:18;;15030:25;15001:5;;-1:-1:-1;15064:33:1;15030:25;15064:33;:::i;17712:343::-;17791:6;17799;17852:2;17840:9;17831:7;17827:23;17823:32;17820:52;;;17868:1;17865;17858:12;17820:52;-1:-1:-1;;17913:16:1;;18019:2;18004:18;;;17998:25;17913:16;;17998:25;;-1:-1:-1;17712:343:1:o;18416:230::-;18486:6;18539:2;18527:9;18518:7;18514:23;18510:32;18507:52;;;18555:1;18552;18545:12;18507:52;-1:-1:-1;18600:16:1;;18416:230;-1:-1:-1;18416:230:1:o;18930:245::-;18997:6;19050:2;19038:9;19029:7;19025:23;19021:32;19018:52;;;19066:1;19063;19056:12;19018:52;19098:9;19092:16;19117:28;19139:5;19117:28;:::i;19539:251::-;19609:6;19662:2;19650:9;19641:7;19637:23;19633:32;19630:52;;;19678:1;19675;19668:12;19630:52;19710:9;19704:16;19729:31;19754:5;19729:31;:::i;21211:409::-;21413:2;21395:21;;;21452:2;21432:18;;;21425:30;21491:34;21486:2;21471:18;;21464:62;-1:-1:-1;;;21557:2:1;21542:18;;21535:43;21610:3;21595:19;;21211:409::o;23955:125::-;24020:9;;;24041:10;;;24038:36;;;24054:18;;:::i;24496:959::-;24758:4;24806:3;24795:9;24791:19;24837:6;24826:9;24819:25;24880:6;24875:2;24864:9;24860:18;24853:34;24923:3;24918:2;24907:9;24903:18;24896:31;24947:6;24982;24976:13;25013:6;25005;24998:22;25051:3;25040:9;25036:19;25029:26;;25090:2;25082:6;25078:15;25064:29;;25111:1;25121:195;25135:6;25132:1;25129:13;25121:195;;;25200:13;;-1:-1:-1;;;;;25196:39:1;25184:52;;25265:2;25291:15;;;;25256:12;;;;25232:1;25150:9;25121:195;;;-1:-1:-1;;;;;;;25372:32:1;;;;25367:2;25352:18;;25345:60;-1:-1:-1;;25436:3:1;25421:19;25414:35;25333:3;24496:959;-1:-1:-1;;;24496:959:1:o

Swarm Source

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