ETH Price: $3,044.90 (+2.56%)
Gas: 15 Gwei

Token

FkCancer (CANCER)
 

Overview

Max Total Supply

1,000,000,000,000 CANCER

Holders

140

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,410,000,000 CANCER

Value
$0.00
0xbc0825296fc28cedae4daf54e9c048783a4344e5
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:
FkCancer

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 5000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-12-20
*/

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

abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

interface IERC20 {
  /**
   * @dev Returns the amount of tokens in existence.
   */
  function totalSupply() external view returns (uint256);

  /**
   * @dev Returns the token decimals.
   */
  function decimals() external view returns (uint8);

  /**
   * @dev Returns the token symbol.
   */
  function symbol() external view returns (string memory);

  /**
  * @dev Returns the token name.
  */
  function name() external view returns (string memory);

  /**
   * @dev Returns the bep token owner.
   */
  function getOwner() external view returns (address);

  /**
   * @dev Returns the amount of tokens owned by `account`.
   */
  function balanceOf(address account) external view returns (uint256);

  /**
   * @dev Moves `amount` tokens from the caller's account to `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Returns the remaining number of tokens that `spender` will be
   * allowed to spend on behalf of `owner` through {transferFrom}. This is
   * zero by default.
   *
   * This value changes when {approve} or {transferFrom} are called.
   */
  function allowance(address _owner, address spender) external view returns (uint256);

  /**
   * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * IMPORTANT: Beware that changing an allowance with this method brings the risk
   * that someone may use both the old and the new allowance by unfortunate
   * transaction ordering. One possible solution to mitigate this race
   * condition is to first reduce the spender's allowance to 0 and set the
   * desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   *
   * Emits an {Approval} event.
   */
  function approve(address spender, uint256 amount) external returns (bool);

  /**
   * @dev Moves `amount` tokens from `sender` to `recipient` using the
   * allowance mechanism. `amount` is then deducted from the caller's
   * allowance.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

  /**
   * @dev Emitted when `value` tokens are moved from one account (`from`) to
   * another (`to`).
   *
   * Note that `value` may be zero.
   */
  event Transfer(address indexed from, address indexed to, uint256 value);

  /**
   * @dev Emitted when the allowance of a `spender` for an `owner` is set by
   * a call to {approve}. `value` is the new allowance.
   */
  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);
}

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 quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    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;
}

interface AntiSnipe {
    function checkUser(address from, address to, uint256 amt) external returns (bool);
    function setLaunch(address _initialLpPair, uint32 _liqAddBlock, uint64 _liqAddStamp, uint8 dec) external;
    function setLpPair(address pair, bool enabled) external;
    function setProtections(bool _as, bool _ag, bool _ab, bool _algo) external;
    function setGasPriceLimit(uint256 gas) external;
    function removeSniper(address account) external;
    function getSniperAmt() external view returns (uint256);
    function removeBlacklisted(address account) external;
    function isBlacklisted(address account) external view returns (bool);
    function transfer(address sender) external;
    function setBlacklistEnabled(address account, bool enabled) external;
    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external;
    function setBuyCooldownEnabled(bool enabled) external;
    function setBuyCooldown(uint256 time) external;
    function getBuyCooldownTime() external view returns (bool, uint256);
}

contract FkCancer is Context, IERC20 {
    // Ownership moved to in-contract for customizability.
    address private _owner;

    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    uint256 private timeSinceLastPair = 0;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    mapping (address => bool) private presaleAddresses;
    bool private allowedPresaleExclusion = true;
    mapping (address => bool) private _liquidityHolders;
   
    uint256 private startingSupply = 1_000_000_000_000;

    string constant private _name = "FkCancer";
    string constant private _symbol = "CANCER";
    uint8 private _decimals = 9;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = startingSupply * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

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

    struct StaticValuesStruct {
        uint16 maxBuyTaxes;
        uint16 maxSellTaxes;
        uint16 maxTransferTaxes;
        uint16 masterTaxDivisor;
    }

    struct Ratios {
        uint16 team;
        uint16 marketing;
        uint16 donation;
        uint16 total;
    }

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

    Ratios public _ratios = Ratios({
        team: 3,
        marketing: 5,
        donation: 2,
        total: 10
        });

    StaticValuesStruct public staticVals = StaticValuesStruct({
        maxBuyTaxes: 2000,
        maxSellTaxes: 2000,
        maxTransferTaxes: 2000,
        masterTaxDivisor: 10000
        });

    IRouter02 public dexRouter;
    address public lpPair;

    address public currentRouter;
    // PCS ROUTER
    address private pcsV2Router = 0x10ED43C718714eb63d5aA57B78B54704E256024E;
    // UNI ROUTER
    address private uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;

    struct TaxWallets {
        address payable marketing;
        address payable team;
        address payable donation;
    }

    TaxWallets public _taxWallets = TaxWallets({
        marketing: payable(0xBDA33274230Db5b221068F134923D7D446a346C5),
        team: payable(0xBDA33274230Db5b221068F134923D7D446a346C5),
        donation: payable(0x307CC8F84eFccb4d22a4e24229c3641808010877)
        });
    
    bool inSwap;
    bool public contractSwapEnabled = false;

    uint256 private _maxTxAmount = (_tTotal * 5) / 1000;
    uint256 private _maxWalletSize = (_tTotal * 2) / 100;

    uint256 private swapThreshold = (_tTotal * 5) / 10000;
    uint256 private swapAmount = (_tTotal * 25) / 10000;

    bool public tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    AntiSnipe antiSnipe;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event ContractSwapEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Caller =/= owner.");
        _;
    }
    
    constructor () payable {
        _tOwned[_msgSender()] = _tTotal;

        // Set the owner.
        _owner = msg.sender;

        if (block.chainid == 56 || block.chainid == 97) {
            currentRouter = pcsV2Router;
        } else if (block.chainid == 1) {
            currentRouter = uniswapV2Router;
        }

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

        _approve(msg.sender, currentRouter, type(uint256).max);
        _approve(address(this), currentRouter, type(uint256).max);

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

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    receive() external payable {}

//===============================================================================================================
//===============================================================================================================
//===============================================================================================================
    // Ownable removed as a lib and added here to allow for custom transfers and renouncements.
    // This allows for removal of ownership privileges from the owner once renounced or transferred.
    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwner(address newOwner) external onlyOwner() {
        require(newOwner != address(0), "Call renounceOwnership to transfer owner to the zero address.");
        require(newOwner != DEAD, "Call renounceOwnership to transfer owner to the zero address.");
        setExcludedFromFees(_owner, false);
        setExcludedFromFees(newOwner, true);
        
        if(balanceOf(_owner) > 0) {
            _transfer(_owner, newOwner, balanceOf(_owner));
        }
        
        _owner = newOwner;
        emit OwnershipTransferred(_owner, newOwner);
        
    }

    function renounceOwnership() public virtual onlyOwner() {
        setExcludedFromFees(_owner, false);
        _owner = address(0);
        emit OwnershipTransferred(_owner, address(0));
    }
//===============================================================================================================
//===============================================================================================================
//===============================================================================================================

    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view 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(_msgSender(), recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) private {
        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() public 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function setNewRouter(address newRouter) public onlyOwner() {
        IRouter02 _newRouter = IRouter02(newRouter);
        address get_pair = IFactoryV2(_newRouter.factory()).getPair(address(this), _newRouter.WETH());
        if (get_pair == address(0)) {
            lpPair = IFactoryV2(_newRouter.factory()).createPair(address(this), _newRouter.WETH());
        }
        else {
            lpPair = get_pair;
        }
        dexRouter = _newRouter;
        _approve(address(this), address(dexRouter), type(uint256).max);
    }

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

    function changeRouterContingency(address router) external onlyOwner {
        require(!_hasLiqBeenAdded);
        currentRouter = router;
    }

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

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

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

    function setInitializer(address initializer) external onlyOwner {
        require(!_hasLiqBeenAdded, "Liquidity is already in.");
        require(initializer != address(this), "Can't be self.");
        antiSnipe = AntiSnipe(initializer);
    }


    function setBlacklistEnabled(address account, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabled(account, enabled);
    }

    function setBlacklistEnabledMultiple(address[] memory accounts, bool enabled) external onlyOwner {
        antiSnipe.setBlacklistEnabledMultiple(accounts, enabled);
    }

    function removeBlacklisted(address account) external onlyOwner {
        antiSnipe.removeBlacklisted(account);
    }

    function isBlacklisted(address account) public view returns (bool) {
        return antiSnipe.isBlacklisted(account);
    }

    function getSniperAmt() public view returns (uint256) {
        return antiSnipe.getSniperAmt();
    }

    function removeSniper(address account) external onlyOwner {
        antiSnipe.removeSniper(account);
    }

    function setProtectionSettings(bool _antiSnipe, bool _antiGas, bool _antiBlock, bool _algo) external onlyOwner {
        antiSnipe.setProtections(_antiSnipe, _antiGas, _antiBlock, _algo);
    }

    function setGasPriceLimit(uint256 gas) external onlyOwner {
        require(gas >= 75, "Too low.");
        antiSnipe.setGasPriceLimit(gas);
    }

    function setBuyCooldownEnabled(bool enabled) external onlyOwner {
        antiSnipe.setBuyCooldownEnabled(enabled);
    }

    function setBuyCooldown(uint256 time) external onlyOwner {
        require(time <= 5 minutes, "Cannot be above 5 min cooldown.");
        antiSnipe.setBuyCooldown(time);
    }

    function getBuyCooldownTime() public view returns (bool, uint256) {
        return antiSnipe.getBuyCooldownTime();
    }

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

    function setRatios(uint16 team, uint16 marketing, uint16 donation) external onlyOwner {
        _ratios.team = team;
        _ratios.marketing = marketing;
        _ratios.donation = donation;
        _ratios.total = team + marketing + donation;
    }

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

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

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

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

    function setSwapSettings(uint256 thresholdPercent, uint256 thresholdDivisor, uint256 amountPercent, uint256 amountDivisor) external onlyOwner {
        swapThreshold = (_tTotal * thresholdPercent) / thresholdDivisor;
        swapAmount = (_tTotal * amountPercent) / amountDivisor;
    }

    function setWallets(address payable marketing) external onlyOwner {
        _taxWallets.marketing = payable(marketing);
    }

    function setContractSwapEnabled(bool _enabled) public onlyOwner {
        contractSwapEnabled = _enabled;
        emit ContractSwapEnabledUpdated(_enabled);
    }

    function _hasLimits(address from, address to) private view returns (bool) {
        return from != owner()
            && to != owner()
            && !_liquidityHolders[to]
            && !_liquidityHolders[from]
            && to != DEAD
            && to != address(0)
            && from != address(this);
    }

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if(lpPairs[from] || lpPairs[to]){
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
            if(to != currentRouter && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }

        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwap
                && contractSwapEnabled
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    contractSwap(contractTokenBalance);
                }
            }      
        } 
        return _finalizeTransfer(from, to, amount, takeFee);
    }

    function contractSwap(uint256 contractTokenBalance) private lockTheSwap {
        if (_ratios.total == 0)
            return;

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );

        if (address(this).balance > 0) {
            uint256 amountBNB = address(this).balance;
            _taxWallets.team.transfer((amountBNB * _ratios.team) / _ratios.total);
            _taxWallets.donation.transfer((amountBNB * _ratios.donation) / _ratios.total);
            _taxWallets.marketing.transfer(address(this).balance);
        }
    }

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

    function enableTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        require(_hasLiqBeenAdded, "Liquidity must be added.");
        if(address(antiSnipe) == address(0)){
            antiSnipe = AntiSnipe(address(this));
        }
        try antiSnipe.setLaunch(lpPair, uint32(block.number), uint64(block.timestamp), _decimals) {} catch {}
        tradingEnabled = true;
    }

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

    function _finalizeTransfer(address from, address to, uint256 amount, bool takeFee) private returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }

        if (_hasLimits(from, to)) {
            bool checked;
            try antiSnipe.checkUser(from, to, amount) returns (bool check) {
                checked = check;
            } catch {
                revert();
            }

            if(!checked) {
                revert();
            }
        }

        _tOwned[from] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(from, to, amount) : amount;
        _tOwned[to] += amountReceived;

        emit Transfer(from, to, amountReceived);
        return true;
    }

    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        uint256 currentFee;
        if (from == lpPair) {
            currentFee = _taxRates.buyFee;
        } else if (to == lpPair) {
            currentFee = _taxRates.sellFee;
        } else {
            currentFee = _taxRates.transferFee;
        }

        uint256 feeAmount = amount * currentFee / staticVals.masterTaxDivisor;

        _tOwned[address(this)] += feeAmount;
        emit Transfer(from, address(this), feeAmount);

        return amount - feeAmount;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ContractSwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ratios","outputs":[{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"},{"internalType":"uint16","name":"total","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRates","outputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxWallets","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"team","type":"address"},{"internalType":"address payable","name":"donation","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"approveContractContingency","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeRouterContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":"getBuyCooldownTime","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxTX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSniperAmt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeSniper","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBlacklistEnabledMultiple","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setBuyCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setBuyCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","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":"uint256","name":"gas","type":"uint256"}],"name":"setGasPriceLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"initializer","type":"address"}],"name":"setInitializer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"},{"internalType":"uint256","name":"divisor","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setNewRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_antiSnipe","type":"bool"},{"internalType":"bool","name":"_antiGas","type":"bool"},{"internalType":"bool","name":"_antiBlock","type":"bool"},{"internalType":"bool","name":"_algo","type":"bool"}],"name":"setProtectionSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"team","type":"uint16"},{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"donation","type":"uint16"}],"name":"setRatios","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"thresholdPercent","type":"uint256"},{"internalType":"uint256","name":"thresholdDivisor","type":"uint256"},{"internalType":"uint256","name":"amountPercent","type":"uint256"},{"internalType":"uint256","name":"amountDivisor","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buyFee","type":"uint16"},{"internalType":"uint16","name":"sellFee","type":"uint16"},{"internalType":"uint16","name":"transferFee","type":"uint16"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketing","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"staticVals","outputs":[{"internalType":"uint16","name":"maxBuyTaxes","type":"uint16"},{"internalType":"uint16","name":"maxSellTaxes","type":"uint16"},{"internalType":"uint16","name":"maxTransferTaxes","type":"uint16"},{"internalType":"uint16","name":"masterTaxDivisor","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sweepContingency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006003556009805460ff19908116600117825564e8d4a51000600b55600c8054909116821790556200003990600a62000810565b600b5462000048919062000828565b600d8190556200005b9060001962000860565b620000699060001962000877565b600e5560408051606080820183526103e88083526020808401829052928401819052600f805465ffffffffffff19166503e803e803e8179055835160808082018652600382526005828601819052600283880152600a92850192909252601080546001600160401b0319908116660a00020005000317909155865191820187526107d080835282870181905282880152612710918501919091526011805490911667271007d007d007d0179055601580547310ed43c718714eb63d5aa57b78b54704e256024e6001600160a01b03199182161790915560168054737a250d5630b4cf539739df2c5dacb4c659f2488d9083161790558551938401865273bda33274230db5b221068f134923d7d446a346c580855294840185905273307cc8f84efccb4d22a4e24229c3641808010877939095018390526017805486168517905560188054861690941790935560198054909416909117909255601a805461ff0019169055600d54620001db9162000828565b620001e7919062000891565b601b556064600d546002620001fd919062000828565b62000209919062000891565b601c55612710600d54600562000220919062000828565b6200022c919062000891565b601d55612710600d54601962000243919062000828565b6200024f919062000891565b601e55601f805461ffff19169055600d543360008181526001602052604081209290925581546001600160a01b0319161790554660381480620002925750466061145b15620002c057601554601480546001600160a01b0319166001600160a01b03909216919091179055620002ed565b4660011415620002ed57601654601480546001600160a01b0319166001600160a01b039092169190911790555b601454601280546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200034a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003709190620008a8565b6001600160a01b031663c9c65396601260009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f89190620008a8565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303816000875af115801562000445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046b9190620008a8565b601380546001600160a01b0319166001600160a01b039283169081179091556000908152600260205260409020805460ff19166001179055601454620004b791339116600019620005fa565b601454620004d39030906001600160a01b0316600019620005fa565b600160056000620004ec6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252812080548316600190811790915561dead82527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba80549093168117909255600a90620005746000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620005a43390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d54604051620005ec91815260200190565b60405180910390a3620008d3565b6001600160a01b0383166200064c5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b60448201526064015b60405180910390fd5b6001600160a01b0382166200069a5760405162461bcd60e51b815260206004820152601360248201527245524332303a205a65726f204164647265737360681b604482015260640162000643565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000752578160001904821115620007365762000736620006fb565b808516156200074457918102915b93841c939080029062000716565b509250929050565b6000826200076b575060016200080a565b816200077a575060006200080a565b81600181146200079357600281146200079e57620007be565b60019150506200080a565b60ff841115620007b257620007b2620006fb565b50506001821b6200080a565b5060208310610133831016604e8410600b8410161715620007e3575081810a6200080a565b620007ef838362000711565b8060001904821115620008065762000806620006fb565b0290505b92915050565b60006200082160ff8416836200075a565b9392505050565b6000816000190483118215151615620008455762000845620006fb565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200087257620008726200084a565b500690565b6000828210156200088c576200088c620006fb565b500390565b600082620008a357620008a36200084a565b500490565b600060208284031215620008bb57600080fd5b81516001600160a01b03811681146200082157600080fd5b613e0480620008e36000396000f3fe60806040526004361061036f5760003560e01c8063590ffdce116101c6578063c29632bd116100f7578063eb50e70e11610095578063f94aa1b41161006f578063f94aa1b414610af8578063fb78680d14610b4f578063fdb78c0e14610b6f578063fe575a8714610b8e57600080fd5b8063eb50e70e14610aa3578063ee5d9c2d14610ac3578063eec2744e14610ad857600080fd5b8063cab5ebea116100d1578063cab5ebea146109e0578063cf84770614610a00578063dd62ed3e14610a3d578063eafb5a3c14610a8357600080fd5b8063c29632bd14610974578063c6a276c214610994578063c7261eb2146109b457600080fd5b80638a63bd9b1161016457806395d89b411161013e57806395d89b41146108ce578063a457c2d714610914578063a9059cbb14610934578063aa22b1721461095457600080fd5b80638a63bd9b146108a45780638a8c523c146108b95780638da5cb5b1461088657600080fd5b806370a08231116101a057806370a082311461081b578063715018a61461085157806380c581d114610866578063893d20e81461088657600080fd5b8063590ffdce146107c65780635c24b074146107e65780636ebd00781461080657600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634fbee193116102185780634fbee1931461073957806350a8e0161461077257806355dbc3691461079157806356c2c6be146107a657600080fd5b8063452ed4f1146106df5780634ada218b146106ff5780634fb2e45d1461071957600080fd5b806333251a0b1161027a57806333251a0b1461065f578063384f36b61461067f578063395093511461069f5780633f3cf56c146106bf57600080fd5b80632b112e4914610608578063313ce5671461061d57806332cde6641461063f57600080fd5b80630fa604e41161030d5780631b6afa2d116102e75780631b6afa2d1461053d57806323b872dd146105a857806326003957146105c857806329dd8798146105e857600080fd5b80630fa604e4146104e5578063122fea3b1461050857806318160ddd1461052857600080fd5b806306fdde031161034957806306fdde03146104265780630758d924146104755780630923160214610495578063095ea7b3146104b557600080fd5b806303fd2a451461037b57806305bbedb6146103ae578063069d955f146103d057600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004613751565b610bae565b005b3480156103dc57600080fd5b50600f546104019061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043257600080fd5b5060408051808201909152600881527f466b43616e63657200000000000000000000000000000000000000000000000060208201525b6040516103a59190613828565b34801561048157600080fd5b50601254610391906001600160a01b031681565b3480156104a157600080fd5b506103ce6104b036600461387d565b610c87565b3480156104c157600080fd5b506104d56104d0366004613896565b610da6565b60405190151581526020016103a5565b3480156104f157600080fd5b506104fa610dbd565b6040519081526020016103a5565b34801561051457600080fd5b50601454610391906001600160a01b031681565b34801561053457600080fd5b50600d546104fa565b34801561054957600080fd5b5060115461057a9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b3480156105b457600080fd5b506104d56105c33660046138c2565b610de3565b3480156105d457600080fd5b506103ce6105e3366004613903565b610e5b565b3480156105f457600080fd5b506103ce610603366004613925565b610f66565b34801561061457600080fd5b506104fa61104f565b34801561062957600080fd5b50600c5460405160ff90911681526020016103a5565b34801561064b57600080fd5b506103ce61065a366004613993565b6110b8565b34801561066b57600080fd5b506103ce61067a3660046139d6565b61120d565b34801561068b57600080fd5b506103ce61069a3660046139d6565b6112ad565b3480156106ab57600080fd5b506104d56106ba366004613896565b61133f565b3480156106cb57600080fd5b506103ce6106da366004613903565b61137b565b3480156106eb57600080fd5b50601354610391906001600160a01b031681565b34801561070b57600080fd5b50601f546104d59060ff1681565b34801561072557600080fd5b506103ce6107343660046139d6565b611486565b34801561074557600080fd5b506104d56107543660046139d6565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077e57600080fd5b50601f546104d590610100900460ff1681565b34801561079d57600080fd5b506104fa611694565b3480156107b257600080fd5b506103ce6107c13660046139f3565b61170d565b3480156107d257600080fd5b506103ce6107e1366004613a10565b6117ab565b3480156107f257600080fd5b506103ce6108013660046139d6565b611824565b34801561081257600080fd5b506104fa611963565b34801561082757600080fd5b506104fa6108363660046139d6565b6001600160a01b031660009081526001602052604090205490565b34801561085d57600080fd5b506103ce611984565b34801561087257600080fd5b506103ce610881366004613a10565b611a34565b34801561089257600080fd5b506000546001600160a01b0316610391565b3480156108b057600080fd5b506104d5611bde565b3480156108c557600080fd5b506103ce611c4d565b3480156108da57600080fd5b5060408051808201909152600681527f43414e43455200000000000000000000000000000000000000000000000000006020820152610468565b34801561092057600080fd5b506104d561092f366004613896565b611e3d565b34801561094057600080fd5b506104d561094f366004613896565b611e74565b34801561096057600080fd5b506103ce61096f366004613993565b611e8b565b34801561098057600080fd5b506103ce61098f36600461387d565b611f9e565b3480156109a057600080fd5b506103ce6109af3660046139d6565b61208d565b3480156109c057600080fd5b506109c961212d565b6040805192151583526020830191909152016103a5565b3480156109ec57600080fd5b506103ce6109fb3660046139f3565b6121ae565b348015610a0c57600080fd5b5060105461057a9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b348015610a4957600080fd5b506104fa610a58366004613a49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a8f57600080fd5b506103ce610a9e3660046139d6565b612250565b348015610aaf57600080fd5b506103ce610abe3660046139d6565b612604565b348015610acf57600080fd5b506103ce612681565b348015610ae457600080fd5b506103ce610af3366004613a10565b612764565b348015610b0457600080fd5b50601754601854601954610b25926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103a5565b348015610b5b57600080fd5b506103ce610b6a366004613a77565b61280c565b348015610b7b57600080fd5b50601a546104d590610100900460ff1681565b348015610b9a57600080fd5b506104d5610ba93660046139d6565b612899565b6000546001600160a01b03163314610c015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601f546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c519085908590600401613aed565b600060405180830381600087803b158015610c6b57600080fd5b505af1158015610c7f573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b604b811015610d265760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf8565b601f546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8b57600080fd5b505af1158015610d9f573d6000803e3d6000fd5b5050505050565b6000610db3338484612927565b5060015b92915050565b600c54600090610dd19060ff16600a613c24565b601c54610dde9190613c33565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e48576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e42908490613c6e565b90915550505b610e53848484612a34565b949350505050565b6000546001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6103e8600d54610eb99190613c33565b8183600d54610ec89190613c85565b610ed29190613c33565b1015610f465760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bf8565b8082600d54610f559190613c85565b610f5f9190613c33565b601c555050565b6000546001600160a01b03163314610fb45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b5050505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916110ab91613ca4565b600d54610dde9190613c6e565b6000546001600160a01b031633146111065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b60115461ffff90811690841611801590611130575060115461ffff62010000909104811690831611155b801561114e575060115461ffff640100000000909104811690821611155b61119a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf8565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b0316331461125b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d71565b6000546001600160a01b031633146112fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff161561131057600080fd5b6014805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610db3918590611376908690613ca4565b612927565b6000546001600160a01b031633146113c95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6103e8600d546113d99190613c33565b8183600d546113e89190613c85565b6113f29190613c33565b10156114665760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf8565b8082600d546114759190613c85565b61147f9190613c33565b601b555050565b6000546001600160a01b031633146114d45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6001600160a01b0381166115505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf8565b6001600160a01b03811661dead14156115d15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf8565b600080546115ea916001600160a01b03909116906117ab565b6115f58160016117ab565b600080546001600160a01b03168152600160205260409020541561163c57600080546001600160a01b0316808252600160205260409091205461163a91908390612a34565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601f60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190613cbc565b6000546001600160a01b0316331461175b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f56c2c6be0000000000000000000000000000000000000000000000000000000081528215156004820152620100009091046001600160a01b0316906356c2c6be90602401610d71565b6000546001600160a01b031633146117f95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff16156118ca5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bf8565b6001600160a01b0381163014156119235760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf8565b601f80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600c546000906119779060ff16600a613c24565b601b54610dde9190613c33565b6000546001600160a01b031633146119d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b600080546119eb916001600160a01b03909116906117ab565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b80611af9576001600160a01b03828116600081815260026020526040808220805460ff19169055601f5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c51565b60035415611b60576203f48060035442611b139190613c6e565b11611b605760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf8565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601f5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c51565b5050565b600080546001600160a01b03163314611c2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601254611c479030906001600160a01b0316600019612927565b50600190565b6000546001600160a01b03163314611c9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f5460ff1615611cee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf8565b601f54610100900460ff16611d455760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf8565b601f546201000090046001600160a01b0316611d8b57601f80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601f54601354600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e1c57600080fd5b505af1925050508015611e2d575060015b50601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610db3918590611376908690613c6e565b6000611e81338484612a34565b5060019392505050565b6000546001600160a01b03163314611ed95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611f518385613cd5565b611f5b9190613cd5565b6010805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611fec5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b61012c81111561203e5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742062652061626f76652035206d696e20636f6f6c646f776e2e006044820152606401610bf8565b601f546040517fc29632bd00000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b03169063c29632bd90602401610d71565b6000546001600160a01b031633146120db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610d71565b600080601f60029054906101000a90046001600160a01b03166001600160a01b031663c7261eb26040518163ffffffff1660e01b81526004016040805180830381865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190613cfb565b915091509091565b6000546001600160a01b031633146121fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061224590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461229e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190613d29565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613d29565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156123db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ff9190613d29565b90506001600160a01b03811661259d57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124719190613d29565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190613d29565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256b9190613d29565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556125c6565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556125ff903090600019612927565b505050565b6000546001600160a01b031633146126525760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146126cf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff16156127275760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf8565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612761573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127b25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c51565b6000546001600160a01b0316331461285a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b8284600d546128699190613c85565b6128739190613c33565b601d55600d548190612886908490613c85565b6128909190613c33565b601e5550505050565b601f546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190613d46565b6001600160a01b03831661297d5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf8565b6001600160a01b0382166129d35760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612ab25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6001600160a01b038316612b2e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf8565b60008211612ba45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf8565b612bae8484612e70565b15612d9e57601f5460ff16612c055760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf8565b6001600160a01b03841660009081526002602052604090205460ff1680612c4457506001600160a01b03831660009081526002602052604090205460ff165b15612cc157601b54821115612cc15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf8565b6014546001600160a01b03848116911614801590612cf857506001600160a01b03831660009081526002602052604090205460ff16155b15612d9e57601c5482612d20856001600160a01b031660009081526001602052604090205490565b612d2a9190613ca4565b1115612d9e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf8565b6001600160a01b03841660009081526005602052604090205460019060ff1680612de057506001600160a01b03841660009081526005602052604090205460ff165b15612de9575060005b6001600160a01b03841660009081526002602052604090205460ff1615612e5b57601a5460ff16158015612e245750601a54610100900460ff165b15612e5b5730600090815260016020526040902054601d548110612e5957601e548110612e505750601e545b612e5981612f2e565b505b612e6785858584613243565b95945050505050565b600080546001600160a01b03848116911614801590612e9d57506000546001600160a01b03838116911614155b8015612ec257506001600160a01b0382166000908152600a602052604090205460ff16155b8015612ee757506001600160a01b0383166000908152600a602052604090205460ff16155b8015612efe57506001600160a01b03821661dead14155b8015612f1257506001600160a01b03821615155b8015612f2757506001600160a01b0383163014155b9392505050565b601a805460ff1916600117905560105461ffff660100000000000090910416612f5657613236565b3060009081526004602090815260408083206012546001600160a01b0316845290915290205460001914612faf573060009081526004602090815260408083206012546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fe457612fe4613d63565b6001600160a01b03928316602091820292909201810191909152601254604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a9190613d29565b8160018151811061308d5761308d613d63565b6001600160a01b0392831660209182029290920101526012546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906130ec908590600090869030904290600401613d92565b600060405180830381600087803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b5050505060004711156132345760185460105447916001600160a01b0316906108fc9061ffff66010000000000008204811691613158911685613c85565b6131629190613c33565b6040518115909202916000818181858888f1935050505015801561318a573d6000803e3d6000fd5b506019546010546001600160a01b03909116906108fc9061ffff660100000000000082048116916131c5916401000000009091041685613c85565b6131cf9190613c33565b6040518115909202916000818181858888f193505050501580156131f7573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613231573d6000803e3d6000fd5b50505b505b50601a805460ff19169055565b601f54600090610100900460ff166132ef5761325f858561347f565b601f54610100900460ff1615801561327c575061327c8585612e70565b156132ef5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6132f98585612e70565b156133ac57601f546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613395575060408051601f3d908101601f1916820190925261339291810190613d46565b60015b61339e57600080fd5b9050806133aa57600080fd5b505b6001600160a01b038516600090815260016020526040812080548592906133d4908490613c6e565b9091555060009050826133e757836133f2565b6133f28686866135dd565b6001600160a01b03861660009081526001602052604081208054929350839290919061341f908490613ca4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346b91815260200190565b60405180910390a350600195945050505050565b601f54610100900460ff16156134fd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6135078282612e70565b15801561352157506013546001600160a01b038281169116145b15611bda576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601f805461ff00191661010017908190556201000090041661359657601f80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60135460009081906001600160a01b03868116911614156136055750600f5461ffff1661363f565b6013546001600160a01b038581169116141561362e5750600f5462010000900461ffff1661363f565b50600f54640100000000900461ffff165b6011546000906601000000000000900461ffff1661365d8386613c85565b6136679190613c33565b3060009081526001602052604081208054929350839290919061368b908490613ca4565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36136da8185613c6e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038116811461276157600080fd5b803561373381613713565b919050565b801515811461276157600080fd5b803561373381613738565b6000806040838503121561376457600080fd5b823567ffffffffffffffff8082111561377c57600080fd5b818501915085601f83011261379057600080fd5b81356020828211156137a4576137a46136e4565b8160051b604051601f19603f830116810181811086821117156137c9576137c96136e4565b6040529283528183019350848101820192898411156137e757600080fd5b948201945b8386101561380c576137fd86613728565b855294820194938201936137ec565b965061381b9050878201613746565b9450505050509250929050565b600060208083528351808285015260005b8181101561385557858101830151858201604001528201613839565b81811115613867576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561388f57600080fd5b5035919050565b600080604083850312156138a957600080fd5b82356138b481613713565b946020939093013593505050565b6000806000606084860312156138d757600080fd5b83356138e281613713565b925060208401356138f281613713565b929592945050506040919091013590565b6000806040838503121561391657600080fd5b50508035926020909101359150565b6000806000806080858703121561393b57600080fd5b843561394681613738565b9350602085013561395681613738565b9250604085013561396681613738565b9150606085013561397681613738565b939692955090935050565b803561ffff8116811461373357600080fd5b6000806000606084860312156139a857600080fd5b6139b184613981565b92506139bf60208501613981565b91506139cd60408501613981565b90509250925092565b6000602082840312156139e857600080fd5b8135612f2781613713565b600060208284031215613a0557600080fd5b8135612f2781613738565b60008060408385031215613a2357600080fd5b8235613a2e81613713565b91506020830135613a3e81613738565b809150509250929050565b60008060408385031215613a5c57600080fd5b8235613a6781613713565b91506020830135613a3e81613713565b60008060008060808587031215613a8d57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613ae25781516001600160a01b031687529582019590820190600101613abd565b509495945050505050565b604081526000613b006040830185613aa9565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b7b578160001904821115613b6157613b61613b11565b80851615613b6e57918102915b93841c9390800290613b45565b509250929050565b600082613b9257506001610db7565b81613b9f57506000610db7565b8160018114613bb55760028114613bbf57613bdb565b6001915050610db7565b60ff841115613bd057613bd0613b11565b50506001821b610db7565b5060208310610133831016604e8410600b8410161715613bfe575081810a610db7565b613c088383613b40565b8060001904821115613c1c57613c1c613b11565b029392505050565b6000612f2760ff841683613b83565b600082613c69577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c8057613c80613b11565b500390565b6000816000190483118215151615613c9f57613c9f613b11565b500290565b60008219821115613cb757613cb7613b11565b500190565b600060208284031215613cce57600080fd5b5051919050565b600061ffff808316818516808303821115613cf257613cf2613b11565b01949350505050565b60008060408385031215613d0e57600080fd5b8251613d1981613738565b6020939093015192949293505050565b600060208284031215613d3b57600080fd5b8151612f2781613713565b600060208284031215613d5857600080fd5b8151612f2781613738565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815284602082015260a060408201526000613db160a0830186613aa9565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220f5a43d6483a1c4b01ecea8cabbb57232386cf45fbee227d17332a18006b6ece364736f6c634300080a0033

Deployed Bytecode

0x60806040526004361061036f5760003560e01c8063590ffdce116101c6578063c29632bd116100f7578063eb50e70e11610095578063f94aa1b41161006f578063f94aa1b414610af8578063fb78680d14610b4f578063fdb78c0e14610b6f578063fe575a8714610b8e57600080fd5b8063eb50e70e14610aa3578063ee5d9c2d14610ac3578063eec2744e14610ad857600080fd5b8063cab5ebea116100d1578063cab5ebea146109e0578063cf84770614610a00578063dd62ed3e14610a3d578063eafb5a3c14610a8357600080fd5b8063c29632bd14610974578063c6a276c214610994578063c7261eb2146109b457600080fd5b80638a63bd9b1161016457806395d89b411161013e57806395d89b41146108ce578063a457c2d714610914578063a9059cbb14610934578063aa22b1721461095457600080fd5b80638a63bd9b146108a45780638a8c523c146108b95780638da5cb5b1461088657600080fd5b806370a08231116101a057806370a082311461081b578063715018a61461085157806380c581d114610866578063893d20e81461088657600080fd5b8063590ffdce146107c65780635c24b074146107e65780636ebd00781461080657600080fd5b80632b112e49116102a0578063452ed4f11161023e5780634fbee193116102185780634fbee1931461073957806350a8e0161461077257806355dbc3691461079157806356c2c6be146107a657600080fd5b8063452ed4f1146106df5780634ada218b146106ff5780634fb2e45d1461071957600080fd5b806333251a0b1161027a57806333251a0b1461065f578063384f36b61461067f578063395093511461069f5780633f3cf56c146106bf57600080fd5b80632b112e4914610608578063313ce5671461061d57806332cde6641461063f57600080fd5b80630fa604e41161030d5780631b6afa2d116102e75780631b6afa2d1461053d57806323b872dd146105a857806326003957146105c857806329dd8798146105e857600080fd5b80630fa604e4146104e5578063122fea3b1461050857806318160ddd1461052857600080fd5b806306fdde031161034957806306fdde03146104265780630758d924146104755780630923160214610495578063095ea7b3146104b557600080fd5b806303fd2a451461037b57806305bbedb6146103ae578063069d955f146103d057600080fd5b3661037657005b600080fd5b34801561038757600080fd5b5061039161dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156103ba57600080fd5b506103ce6103c9366004613751565b610bae565b005b3480156103dc57600080fd5b50600f546104019061ffff808216916201000081048216916401000000009091041683565b6040805161ffff948516815292841660208401529216918101919091526060016103a5565b34801561043257600080fd5b5060408051808201909152600881527f466b43616e63657200000000000000000000000000000000000000000000000060208201525b6040516103a59190613828565b34801561048157600080fd5b50601254610391906001600160a01b031681565b3480156104a157600080fd5b506103ce6104b036600461387d565b610c87565b3480156104c157600080fd5b506104d56104d0366004613896565b610da6565b60405190151581526020016103a5565b3480156104f157600080fd5b506104fa610dbd565b6040519081526020016103a5565b34801561051457600080fd5b50601454610391906001600160a01b031681565b34801561053457600080fd5b50600d546104fa565b34801561054957600080fd5b5060115461057a9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b6040805161ffff958616815293851660208501529184169183019190915290911660608201526080016103a5565b3480156105b457600080fd5b506104d56105c33660046138c2565b610de3565b3480156105d457600080fd5b506103ce6105e3366004613903565b610e5b565b3480156105f457600080fd5b506103ce610603366004613925565b610f66565b34801561061457600080fd5b506104fa61104f565b34801561062957600080fd5b50600c5460405160ff90911681526020016103a5565b34801561064b57600080fd5b506103ce61065a366004613993565b6110b8565b34801561066b57600080fd5b506103ce61067a3660046139d6565b61120d565b34801561068b57600080fd5b506103ce61069a3660046139d6565b6112ad565b3480156106ab57600080fd5b506104d56106ba366004613896565b61133f565b3480156106cb57600080fd5b506103ce6106da366004613903565b61137b565b3480156106eb57600080fd5b50601354610391906001600160a01b031681565b34801561070b57600080fd5b50601f546104d59060ff1681565b34801561072557600080fd5b506103ce6107343660046139d6565b611486565b34801561074557600080fd5b506104d56107543660046139d6565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077e57600080fd5b50601f546104d590610100900460ff1681565b34801561079d57600080fd5b506104fa611694565b3480156107b257600080fd5b506103ce6107c13660046139f3565b61170d565b3480156107d257600080fd5b506103ce6107e1366004613a10565b6117ab565b3480156107f257600080fd5b506103ce6108013660046139d6565b611824565b34801561081257600080fd5b506104fa611963565b34801561082757600080fd5b506104fa6108363660046139d6565b6001600160a01b031660009081526001602052604090205490565b34801561085d57600080fd5b506103ce611984565b34801561087257600080fd5b506103ce610881366004613a10565b611a34565b34801561089257600080fd5b506000546001600160a01b0316610391565b3480156108b057600080fd5b506104d5611bde565b3480156108c557600080fd5b506103ce611c4d565b3480156108da57600080fd5b5060408051808201909152600681527f43414e43455200000000000000000000000000000000000000000000000000006020820152610468565b34801561092057600080fd5b506104d561092f366004613896565b611e3d565b34801561094057600080fd5b506104d561094f366004613896565b611e74565b34801561096057600080fd5b506103ce61096f366004613993565b611e8b565b34801561098057600080fd5b506103ce61098f36600461387d565b611f9e565b3480156109a057600080fd5b506103ce6109af3660046139d6565b61208d565b3480156109c057600080fd5b506109c961212d565b6040805192151583526020830191909152016103a5565b3480156109ec57600080fd5b506103ce6109fb3660046139f3565b6121ae565b348015610a0c57600080fd5b5060105461057a9061ffff808216916201000081048216916401000000008204811691660100000000000090041684565b348015610a4957600080fd5b506104fa610a58366004613a49565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b348015610a8f57600080fd5b506103ce610a9e3660046139d6565b612250565b348015610aaf57600080fd5b506103ce610abe3660046139d6565b612604565b348015610acf57600080fd5b506103ce612681565b348015610ae457600080fd5b506103ce610af3366004613a10565b612764565b348015610b0457600080fd5b50601754601854601954610b25926001600160a01b03908116928116911683565b604080516001600160a01b03948516815292841660208401529216918101919091526060016103a5565b348015610b5b57600080fd5b506103ce610b6a366004613a77565b61280c565b348015610b7b57600080fd5b50601a546104d590610100900460ff1681565b348015610b9a57600080fd5b506104d5610ba93660046139d6565b612899565b6000546001600160a01b03163314610c015760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b60448201526064015b60405180910390fd5b601f546040517f05bbedb6000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b0316906305bbedb690610c519085908590600401613aed565b600060405180830381600087803b158015610c6b57600080fd5b505af1158015610c7f573d6000803e3d6000fd5b505050505050565b6000546001600160a01b03163314610cd55760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b604b811015610d265760405162461bcd60e51b815260206004820152600860248201527f546f6f206c6f772e0000000000000000000000000000000000000000000000006044820152606401610bf8565b601f546040517f0923160200000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b0316906309231602906024015b600060405180830381600087803b158015610d8b57600080fd5b505af1158015610d9f573d6000803e3d6000fd5b5050505050565b6000610db3338484612927565b5060015b92915050565b600c54600090610dd19060ff16600a613c24565b601c54610dde9190613c33565b905090565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001914610e48576001600160a01b038416600090815260046020908152604080832033845290915281208054849290610e42908490613c6e565b90915550505b610e53848484612a34565b949350505050565b6000546001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6103e8600d54610eb99190613c33565b8183600d54610ec89190613c85565b610ed29190613c33565b1015610f465760405162461bcd60e51b815260206004820152603260248201527f4d61782057616c6c657420616d74206d7573742062652061626f766520302e3160448201527f25206f6620746f74616c20737570706c792e00000000000000000000000000006064820152608401610bf8565b8082600d54610f559190613c85565b610f5f9190613c33565b601c555050565b6000546001600160a01b03163314610fb45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f0109da690000000000000000000000000000000000000000000000000000000081528515156004820152841515602482015283151560448201528215156064820152620100009091046001600160a01b031690630109da6990608401600060405180830381600087803b15801561103157600080fd5b505af1158015611045573d6000803e3d6000fd5b5050505050505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead60009081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490916110ab91613ca4565b600d54610dde9190613c6e565b6000546001600160a01b031633146111065760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b60115461ffff90811690841611801590611130575060115461ffff62010000909104811690831611155b801561114e575060115461ffff640100000000909104811690821611155b61119a5760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420657863656564206d6178696d756d732e0000000000000000006044820152606401610bf8565b600f805461ffff9485167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116176201000093851693909302929092177fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff166401000000009190931602919091179055565b6000546001600160a01b0316331461125b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f33251a0b0000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015262010000909204909116906333251a0b90602401610d71565b6000546001600160a01b031633146112fb5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff161561131057600080fd5b6014805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610db3918590611376908690613ca4565b612927565b6000546001600160a01b031633146113c95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6103e8600d546113d99190613c33565b8183600d546113e89190613c85565b6113f29190613c33565b10156114665760405162461bcd60e51b815260206004820152603760248201527f4d6178205472616e73616374696f6e20616d74206d7573742062652061626f7660448201527f6520302e3125206f6620746f74616c20737570706c792e0000000000000000006064820152608401610bf8565b8082600d546114759190613c85565b61147f9190613c33565b601b555050565b6000546001600160a01b031633146114d45760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6001600160a01b0381166115505760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf8565b6001600160a01b03811661dead14156115d15760405162461bcd60e51b815260206004820152603d60248201527f43616c6c2072656e6f756e63654f776e65727368697020746f207472616e736660448201527f6572206f776e657220746f20746865207a65726f20616464726573732e0000006064820152608401610bf8565b600080546115ea916001600160a01b03909116906117ab565b6115f58160016117ab565b600080546001600160a01b03168152600160205260409020541561163c57600080546001600160a01b0316808252600160205260409091205461163a91908390612a34565b505b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6000601f60029054906101000a90046001600160a01b03166001600160a01b03166355dbc3696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116e9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dde9190613cbc565b6000546001600160a01b0316331461175b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517f56c2c6be0000000000000000000000000000000000000000000000000000000081528215156004820152620100009091046001600160a01b0316906356c2c6be90602401610d71565b6000546001600160a01b031633146117f95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146118725760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff16156118ca5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920697320616c726561647920696e2e00000000000000006044820152606401610bf8565b6001600160a01b0381163014156119235760405162461bcd60e51b815260206004820152600e60248201527f43616e27742062652073656c662e0000000000000000000000000000000000006044820152606401610bf8565b601f80546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b600c546000906119779060ff16600a613c24565b601b54610dde9190613c33565b6000546001600160a01b031633146119d25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b600080546119eb916001600160a01b03909116906117ab565b6000805473ffffffffffffffffffffffffffffffffffffffff1916815560405181907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6000546001600160a01b03163314611a825760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b80611af9576001600160a01b03828116600081815260026020526040808220805460ff19169055601f5490517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830191909152620100009004909116906380c581d190604401610c51565b60035415611b60576203f48060035442611b139190613c6e565b11611b605760405162461bcd60e51b815260206004820152601060248201527f332044617920636f6f6c646f776e2e21000000000000000000000000000000006044820152606401610bf8565b6001600160a01b0382811660008181526002602052604090819020805460ff1916600190811790915542600355601f5491517f80c581d100000000000000000000000000000000000000000000000000000000815260048101939093526024830152620100009004909116906380c581d190604401610c51565b5050565b600080546001600160a01b03163314611c2d5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601254611c479030906001600160a01b0316600019612927565b50600190565b6000546001600160a01b03163314611c9b5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f5460ff1615611cee5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c65642100000000000000006044820152606401610bf8565b601f54610100900460ff16611d455760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206d7573742062652061646465642e00000000000000006044820152606401610bf8565b601f546201000090046001600160a01b0316611d8b57601f80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601f54601354600c546040517f6c115c340000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015263ffffffff4316602482015267ffffffffffffffff4216604482015260ff9091166064820152620100009092041690636c115c3490608401600060405180830381600087803b158015611e1c57600080fd5b505af1925050508015611e2d575060015b50601f805460ff19166001179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610db3918590611376908690613c6e565b6000611e81338484612a34565b5060019392505050565b6000546001600160a01b03163314611ed95760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6010805461ffff838116640100000000027fffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffff86831662010000027fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090941692881692909217929092171617905580611f518385613cd5565b611f5b9190613cd5565b6010805461ffff929092166601000000000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000ffffffffffff909216919091179055505050565b6000546001600160a01b03163314611fec5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b61012c81111561203e5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f742062652061626f76652035206d696e20636f6f6c646f776e2e006044820152606401610bf8565b601f546040517fc29632bd00000000000000000000000000000000000000000000000000000000815260048101839052620100009091046001600160a01b03169063c29632bd90602401610d71565b6000546001600160a01b031633146120db5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517fc6a276c20000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152620100009092049091169063c6a276c290602401610d71565b600080601f60029054906101000a90046001600160a01b03166001600160a01b031663c7261eb26040518163ffffffff1660e01b81526004016040805180830381865afa158015612182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a69190613cfb565b915091509091565b6000546001600160a01b031633146121fc5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601a80548215156101000261ff00199091161790556040517f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579061224590831515815260200190565b60405180910390a150565b6000546001600160a01b0316331461229e5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123079190613d29565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123789190613d29565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156123db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ff9190613d29565b90506001600160a01b03811661259d57816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561244d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124719190613d29565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e29190613d29565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015612547573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061256b9190613d29565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03929092169190911790556125c6565b6013805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383161790555b6012805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0384169081179091556125ff903090600019612927565b505050565b6000546001600160a01b031633146126525760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b6017805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000546001600160a01b031633146126cf5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f54610100900460ff16156127275760405162461bcd60e51b815260206004820152601c60248201527f43616e6e6f742063616c6c206166746572206c69717569646974792e000000006044820152606401610bf8565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015612761573d6000803e3d6000fd5b50565b6000546001600160a01b031633146127b25760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b601f546040517feec2744e0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301528315156024830152620100009092049091169063eec2744e90604401610c51565b6000546001600160a01b0316331461285a5760405162461bcd60e51b815260206004820152601160248201527021b0b63632b9101e979e9037bbb732b91760791b6044820152606401610bf8565b8284600d546128699190613c85565b6128739190613c33565b601d55600d548190612886908490613c85565b6128909190613c33565b601e5550505050565b601f546040517ffe575a870000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152600092620100009004169063fe575a8790602401602060405180830381865afa158015612903573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db79190613d46565b6001600160a01b03831661297d5760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf8565b6001600160a01b0382166129d35760405162461bcd60e51b815260206004820152601360248201527f45524332303a205a65726f2041646472657373000000000000000000000000006044820152606401610bf8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b038416612ab25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6001600160a01b038316612b2e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bf8565b60008211612ba45760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610bf8565b612bae8484612e70565b15612d9e57601f5460ff16612c055760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c65642100000000000000006044820152606401610bf8565b6001600160a01b03841660009081526002602052604090205460ff1680612c4457506001600160a01b03831660009081526002602052604090205460ff165b15612cc157601b54821115612cc15760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201527f78416d6f756e742e0000000000000000000000000000000000000000000000006064820152608401610bf8565b6014546001600160a01b03848116911614801590612cf857506001600160a01b03831660009081526002602052604090205460ff16155b15612d9e57601c5482612d20856001600160a01b031660009081526001602052604090205490565b612d2a9190613ca4565b1115612d9e5760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201527f616c6c657453697a652e000000000000000000000000000000000000000000006064820152608401610bf8565b6001600160a01b03841660009081526005602052604090205460019060ff1680612de057506001600160a01b03841660009081526005602052604090205460ff165b15612de9575060005b6001600160a01b03841660009081526002602052604090205460ff1615612e5b57601a5460ff16158015612e245750601a54610100900460ff165b15612e5b5730600090815260016020526040902054601d548110612e5957601e548110612e505750601e545b612e5981612f2e565b505b612e6785858584613243565b95945050505050565b600080546001600160a01b03848116911614801590612e9d57506000546001600160a01b03838116911614155b8015612ec257506001600160a01b0382166000908152600a602052604090205460ff16155b8015612ee757506001600160a01b0383166000908152600a602052604090205460ff16155b8015612efe57506001600160a01b03821661dead14155b8015612f1257506001600160a01b03821615155b8015612f2757506001600160a01b0383163014155b9392505050565b601a805460ff1916600117905560105461ffff660100000000000090910416612f5657613236565b3060009081526004602090815260408083206012546001600160a01b0316845290915290205460001914612faf573060009081526004602090815260408083206012546001600160a01b03168452909152902060001990555b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fe457612fe4613d63565b6001600160a01b03928316602091820292909201810191909152601254604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a9190613d29565b8160018151811061308d5761308d613d63565b6001600160a01b0392831660209182029290920101526012546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac947906130ec908590600090869030904290600401613d92565b600060405180830381600087803b15801561310657600080fd5b505af115801561311a573d6000803e3d6000fd5b5050505060004711156132345760185460105447916001600160a01b0316906108fc9061ffff66010000000000008204811691613158911685613c85565b6131629190613c33565b6040518115909202916000818181858888f1935050505015801561318a573d6000803e3d6000fd5b506019546010546001600160a01b03909116906108fc9061ffff660100000000000082048116916131c5916401000000009091041685613c85565b6131cf9190613c33565b6040518115909202916000818181858888f193505050501580156131f7573d6000803e3d6000fd5b506017546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015613231573d6000803e3d6000fd5b50505b505b50601a805460ff19169055565b601f54600090610100900460ff166132ef5761325f858561347f565b601f54610100900460ff1615801561327c575061327c8585612e70565b156132ef5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e7366657220617420746869732060448201527f74696d652e0000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6132f98585612e70565b156133ac57601f546040517fecd07a530000000000000000000000000000000000000000000000000000000081526001600160a01b038781166004830152868116602483015260448201869052600092620100009004169063ecd07a53906064016020604051808303816000875af1925050508015613395575060408051601f3d908101601f1916820190925261339291810190613d46565b60015b61339e57600080fd5b9050806133aa57600080fd5b505b6001600160a01b038516600090815260016020526040812080548592906133d4908490613c6e565b9091555060009050826133e757836133f2565b6133f28686866135dd565b6001600160a01b03861660009081526001602052604081208054929350839290919061341f908490613ca4565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161346b91815260200190565b60405180910390a350600195945050505050565b601f54610100900460ff16156134fd5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201527f65642e00000000000000000000000000000000000000000000000000000000006064820152608401610bf8565b6135078282612e70565b15801561352157506013546001600160a01b038281169116145b15611bda576001600160a01b038083166000908152600a60205260409020805460ff19166001179055601f805461ff00191661010017908190556201000090041661359657601f80547fffffffffffffffffffff0000000000000000000000000000000000000000ffff163062010000021790555b601a805461ff001916610100179055604051600181527f7b0a47d3b0234280b6c9213c5bbff44c8b6001bea7770b3950280f91410532579060200160405180910390a15050565b60135460009081906001600160a01b03868116911614156136055750600f5461ffff1661363f565b6013546001600160a01b038581169116141561362e5750600f5462010000900461ffff1661363f565b50600f54640100000000900461ffff165b6011546000906601000000000000900461ffff1661365d8386613c85565b6136679190613c33565b3060009081526001602052604081208054929350839290919061368b908490613ca4565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36136da8185613c6e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b038116811461276157600080fd5b803561373381613713565b919050565b801515811461276157600080fd5b803561373381613738565b6000806040838503121561376457600080fd5b823567ffffffffffffffff8082111561377c57600080fd5b818501915085601f83011261379057600080fd5b81356020828211156137a4576137a46136e4565b8160051b604051601f19603f830116810181811086821117156137c9576137c96136e4565b6040529283528183019350848101820192898411156137e757600080fd5b948201945b8386101561380c576137fd86613728565b855294820194938201936137ec565b965061381b9050878201613746565b9450505050509250929050565b600060208083528351808285015260005b8181101561385557858101830151858201604001528201613839565b81811115613867576000604083870101525b50601f01601f1916929092016040019392505050565b60006020828403121561388f57600080fd5b5035919050565b600080604083850312156138a957600080fd5b82356138b481613713565b946020939093013593505050565b6000806000606084860312156138d757600080fd5b83356138e281613713565b925060208401356138f281613713565b929592945050506040919091013590565b6000806040838503121561391657600080fd5b50508035926020909101359150565b6000806000806080858703121561393b57600080fd5b843561394681613738565b9350602085013561395681613738565b9250604085013561396681613738565b9150606085013561397681613738565b939692955090935050565b803561ffff8116811461373357600080fd5b6000806000606084860312156139a857600080fd5b6139b184613981565b92506139bf60208501613981565b91506139cd60408501613981565b90509250925092565b6000602082840312156139e857600080fd5b8135612f2781613713565b600060208284031215613a0557600080fd5b8135612f2781613738565b60008060408385031215613a2357600080fd5b8235613a2e81613713565b91506020830135613a3e81613738565b809150509250929050565b60008060408385031215613a5c57600080fd5b8235613a6781613713565b91506020830135613a3e81613713565b60008060008060808587031215613a8d57600080fd5b5050823594602084013594506040840135936060013592509050565b600081518084526020808501945080840160005b83811015613ae25781516001600160a01b031687529582019590820190600101613abd565b509495945050505050565b604081526000613b006040830185613aa9565b905082151560208301529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613b7b578160001904821115613b6157613b61613b11565b80851615613b6e57918102915b93841c9390800290613b45565b509250929050565b600082613b9257506001610db7565b81613b9f57506000610db7565b8160018114613bb55760028114613bbf57613bdb565b6001915050610db7565b60ff841115613bd057613bd0613b11565b50506001821b610db7565b5060208310610133831016604e8410600b8410161715613bfe575081810a610db7565b613c088383613b40565b8060001904821115613c1c57613c1c613b11565b029392505050565b6000612f2760ff841683613b83565b600082613c69577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082821015613c8057613c80613b11565b500390565b6000816000190483118215151615613c9f57613c9f613b11565b500290565b60008219821115613cb757613cb7613b11565b500190565b600060208284031215613cce57600080fd5b5051919050565b600061ffff808316818516808303821115613cf257613cf2613b11565b01949350505050565b60008060408385031215613d0e57600080fd5b8251613d1981613738565b6020939093015192949293505050565b600060208284031215613d3b57600080fd5b8151612f2781613713565b600060208284031215613d5857600080fd5b8151612f2781613738565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b85815284602082015260a060408201526000613db160a0830186613aa9565b6001600160a01b039490941660608301525060800152939250505056fea2646970667358221220f5a43d6483a1c4b01ecea8cabbb57232386cf45fbee227d17332a18006b6ece364736f6c634300080a0033

Deployed Bytecode Sourcemap

6221:19866:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8416:73;;;;;;;;;;;;8447:42;8416:73;;;;;-1:-1:-1;;;;;178:55:1;;;160:74;;148:2;133:18;8416:73:0;;;;;;;;17022:172;;;;;;;;;;-1:-1:-1;17022:172:0;;;;;:::i;:::-;;:::i;:::-;;7653:116;;;;;;;;;;-1:-1:-1;7653:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;2449:6:1;2482:15;;;2464:34;;2534:15;;;2529:2;2514:18;;2507:43;2586:15;;2566:18;;;2559:43;;;;2427:2;2412:18;7653:116:0;2243:365:1;12925:80:0;;;;;;;;;;-1:-1:-1;12997:5:0;;;;;;;;;;;;;;;;;12925:80;;;;;;;:::i;8116:26::-;;;;;;;;;;-1:-1:-1;8116:26:0;;;;-1:-1:-1;;;;;8116:26:0;;;17892:149;;;;;;;;;;-1:-1:-1;17892:149:0;;;;;:::i;:::-;;:::i;13538:161::-;;;;;;;;;;-1:-1:-1;13538:161:0;;;;;:::i;:::-;;:::i;:::-;;;4192:14:1;;4185:22;4167:41;;4155:2;4140:18;13538:161:0;4027:187:1;19864:112:0;;;;;;;;;;;;;:::i;:::-;;;4365:25:1;;;4353:2;4338:18;19864:112:0;4219:177:1;8179:28:0;;;;;;;;;;-1:-1:-1;8179:28:0;;;;-1:-1:-1;;;;;8179:28:0;;;12660:83;;;;;;;;;;-1:-1:-1;12733:7:0;;12660:83;;7913:194;;;;;;;;;;-1:-1:-1;7913:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4634:6:1;4667:15;;;4649:34;;4719:15;;;4714:2;4699:18;;4692:43;4771:15;;;4751:18;;;4744:43;;;;4823:15;;;4818:2;4803:18;;4796:43;4611:3;4596:19;7913:194:0;4401:444:1;14205:306:0;;;;;;;;;;-1:-1:-1;14205:306:0;;;;;:::i;:::-;;:::i;19475:267::-;;;;;;;;;;-1:-1:-1;19475:267:0;;;;;:::i;:::-;;:::i;17689:195::-;;;;;;;;;;-1:-1:-1;17689:195:0;;;;;:::i;:::-;;:::i;16187:141::-;;;;;;;;;;;;;:::i;12749:80::-;;;;;;;;;;-1:-1:-1;12817:9:0;;12749:80;;12817:9;;;;6358:36:1;;6346:2;6331:18;12749:80:0;6216:184:1;18496:430:0;;;;;;;;;;-1:-1:-1;18496:430:0;;;;;:::i;:::-;;:::i;17573:108::-;;;;;;;;;;-1:-1:-1;17573:108:0;;;;;:::i;:::-;;:::i;16033:146::-;;;;;;;;;;-1:-1:-1;16033:146:0;;;;;:::i;:::-;;:::i;14519:215::-;;;;;;;;;;-1:-1:-1;14519:215:0;;;;;:::i;:::-;;:::i;19198:269::-;;;;;;;;;;-1:-1:-1;19198:269:0;;;;;:::i;:::-;;:::i;8149:21::-;;;;;;;;;;-1:-1:-1;8149:21:0;;;;-1:-1:-1;;;;;8149:21:0;;;9220:34;;;;;;;;;;-1:-1:-1;9220:34:0;;;;;;;;11514:590;;;;;;;;;;-1:-1:-1;11514:590:0;;;;;:::i;:::-;;:::i;16336:125::-;;;;;;;;;;-1:-1:-1;16336:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;16425:28:0;16401:4;16425:28;;;:19;:28;;;;;;;;;16336:125;9261:36;;;;;;;;;;-1:-1:-1;9261:36:0;;;;;;;;;;;17461:104;;;;;;;;;;;;;:::i;18049:123::-;;;;;;;;;;-1:-1:-1;18049:123:0;;;;;:::i;:::-;;:::i;16469:134::-;;;;;;;;;;-1:-1:-1;16469:134:0;;;;;:::i;:::-;;:::i;16611:248::-;;;;;;;;;;-1:-1:-1;16611:248:0;;;;;:::i;:::-;;:::i;19750:106::-;;;;;;;;;;;;;:::i;13238:117::-;;;;;;;;;;-1:-1:-1;13238:117:0;;;;;:::i;:::-;-1:-1:-1;;;;;13331:16:0;13304:7;13331:16;;;:7;:16;;;;;;;13238:117;12112:195;;;;;;;;;;;;;:::i;15525:500::-;;;;;;;;;;-1:-1:-1;15525:500:0;;;;;:::i;:::-;;:::i;13011:80::-;;;;;;;;;;-1:-1:-1;13063:7:0;11492:6;-1:-1:-1;;;;;11492:6:0;13011:80;19864:112;14024:173;;;;;;;;;;;;;:::i;23960:429::-;;;;;;;;;;;;;:::i;12835:84::-;;;;;;;;;;-1:-1:-1;12909:7:0;;;;;;;;;;;;;;;;;12835:84;;14742:225;;;;;;;;;;-1:-1:-1;14742:225:0;;;;;:::i;:::-;;:::i;13363:167::-;;;;;;;;;;-1:-1:-1;13363:167:0;;;;;:::i;:::-;;:::i;18934:256::-;;;;;;;;;;-1:-1:-1;18934:256:0;;;;;:::i;:::-;;:::i;18180:178::-;;;;;;;;;;-1:-1:-1;18180:178:0;;;;;:::i;:::-;;:::i;17202:118::-;;;;;;;;;;-1:-1:-1;17202:118:0;;;;;:::i;:::-;;:::i;18366:122::-;;;;;;;;;;;;;:::i;:::-;;;;7980:14:1;;7973:22;7955:41;;8027:2;8012:18;;8005:34;;;;7928:18;18366:122:0;7787:258:1;20416:165:0;;;;;;;;;;-1:-1:-1;20416:165:0;;;;;:::i;:::-;;:::i;7778:126::-;;;;;;;;;;-1:-1:-1;7778:126:0;;;;;;;;;;;;;;;;;;;;;;;;;;;13097:133;;;;;;;;;;-1:-1:-1;13097:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;13199:19:0;;;13181:7;13199:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;13097:133;14975:542;;;;;;;;;;-1:-1:-1;14975:542:0;;;;;:::i;:::-;;:::i;20281:127::-;;;;;;;;;;-1:-1:-1;20281:127:0;;;;;:::i;:::-;;:::i;24397:183::-;;;;;;;;;;;;;:::i;16869:145::-;;;;;;;;;;-1:-1:-1;16869:145:0;;;;;:::i;:::-;;:::i;8634:268::-;;;;;;;;;;-1:-1:-1;8634:268:0;;;;;;;;-1:-1:-1;;;;;8634:268:0;;;;;;;;;;;;;;-1:-1:-1;;;;;9032:15:1;;;9014:34;;9084:15;;;9079:2;9064:18;;9057:43;9136:15;;9116:18;;;9109:43;;;;8941:2;8926:18;8634:268:0;8703:455:1;19984:289:0;;;;;;;;;;-1:-1:-1;19984:289:0;;;;;:::i;:::-;;:::i;8933:39::-;;;;;;;;;;-1:-1:-1;8933:39:0;;;;;;;;;;;17328:125;;;;;;;;;;-1:-1:-1;17328:125:0;;;;;:::i;:::-;;:::i;17022:172::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;;;;;;;;;17130:9:::1;::::0;:56:::1;::::0;;;;:9;;;::::1;-1:-1:-1::0;;;;;17130:9:0::1;::::0;:37:::1;::::0;:56:::1;::::0;17168:8;;17178:7;;17130:56:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17022:172:::0;;:::o;17892:149::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;17976:2:::1;17969:3;:9;;17961:30;;;::::0;-1:-1:-1;;;17961:30:0;;10937:2:1;17961:30:0::1;::::0;::::1;10919:21:1::0;10976:1;10956:18;;;10949:29;11014:10;10994:18;;;10987:38;11042:18;;17961:30:0::1;10735:331:1::0;17961:30:0::1;18002:9;::::0;:31:::1;::::0;;;;::::1;::::0;::::1;4365:25:1::0;;;18002:9:0;;;::::1;-1:-1:-1::0;;;;;18002:9:0::1;::::0;:26:::1;::::0;4338:18:1;;18002:31:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17892:149:::0;:::o;13538:161::-;13613:4;13630:39;189:10;13653:7;13662:6;13630:8;:39::i;:::-;-1:-1:-1;13687:4:0;13538:161;;;;;:::o;19864:112::-;19958:9;;19909:7;;19954:13;;19958:9;;19954:2;:13;:::i;:::-;19936:14;;:32;;;;:::i;:::-;19929:39;;19864:112;:::o;14205:306::-;-1:-1:-1;;;;;14326:19:0;;14305:4;14326:19;;;:11;:19;;;;;;;;14346:10;14326:31;;;;;;;;-1:-1:-1;;14326:52:0;14322:126;;-1:-1:-1;;;;;14395:19:0;;;;;;:11;:19;;;;;;;;14415:10;14395:31;;;;;;;:41;;14430:6;;14395:19;:41;;14430:6;;14395:41;:::i;:::-;;;;-1:-1:-1;;14322:126:0;14467:36;14477:6;14485:9;14496:6;14467:9;:36::i;:::-;14460:43;14205:306;-1:-1:-1;;;;14205:306:0:o;19475:267::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;19617:4:::1;19607:7;;:14;;;;:::i;:::-;19595:7;19584;19574;;:17;;;;:::i;:::-;19573:29;;;;:::i;:::-;:49;;19565:112;;;::::0;-1:-1:-1;;;19565:112:0;;13607:2:1;19565:112:0::1;::::0;::::1;13589:21:1::0;13646:2;13626:18;;;13619:30;13685:34;13665:18;;;13658:62;13756:20;13736:18;;;13729:48;13794:19;;19565:112:0::1;13405:414:1::0;19565:112:0::1;19727:7;19716;19706;;:17;;;;:::i;:::-;19705:29;;;;:::i;:::-;19688:14;:46:::0;-1:-1:-1;;19475:267:0:o;17689:195::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;17811:9:::1;::::0;:65:::1;::::0;;;;14056:14:1;;14049:22;17811:65:0::1;::::0;::::1;14031:41:1::0;14115:14;;14108:22;14088:18;;;14081:50;14174:14;;14167:22;14147:18;;;14140:50;14233:14;;14226:22;14206:18;;;14199:50;17811:9:0;;;::::1;-1:-1:-1::0;;;;;17811:9:0::1;::::0;:24:::1;::::0;14003:19:1;;17811:65:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17689:195:::0;;;;:::o;16187:141::-;13331:7;:16;;;;8447:42;16240:7;13331:16;;;;;16240:7;;16279:39;;;:::i;:::-;16268:7;;:51;;;;:::i;18496:430::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;18613:10:::1;:22:::0;::::1;::::0;;::::1;18603:32:::0;;::::1;;::::0;::::1;::::0;:87:::1;;-1:-1:-1::0;18666:10:0::1;:24:::0;::::1;::::0;;;::::1;::::0;::::1;18656:34:::0;;::::1;;;18603:87;:150;;;;-1:-1:-1::0;18726:10:0::1;:27:::0;::::1;::::0;;;::::1;::::0;::::1;18711:42:::0;;::::1;;;18603:150;18595:203;;;::::0;-1:-1:-1;;;18595:203:0;;14595:2:1;18595:203:0::1;::::0;::::1;14577:21:1::0;14634:2;14614:18;;;14607:30;14673:25;14653:18;;;14646:53;14716:18;;18595:203:0::1;14393:347:1::0;18595:203:0::1;18809:9;:25:::0;;::::1;::::0;;::::1;18845:27:::0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;18883:35:::0;::::1;::::0;;;;::::1;;::::0;;;::::1;::::0;;18496:430::o;17573:108::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;17642:9:::1;::::0;:31:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;17642:31:0::1;::::0;::::1;160:74:1::0;17642:9:0;;;::::1;::::0;;::::1;::::0;:22:::1;::::0;133:18:1;;17642:31:0::1;14:226:1::0;16033:146:0;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;16121:16:::1;::::0;::::1;::::0;::::1;;;16120:17;16112:26;;;::::0;::::1;;16149:13;:22:::0;;-1:-1:-1;;16149:22:0::1;-1:-1:-1::0;;;;;16149:22:0;;;::::1;::::0;;;::::1;::::0;;16033:146::o;14519:215::-;189:10;14607:4;14656:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14656:34:0;;;;;;;;;;14607:4;;14624:80;;14647:7;;14656:47;;14693:10;;14656:47;:::i;:::-;14624:8;:80::i;19198:269::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;19339:4:::1;19329:7;;:14;;;;:::i;:::-;19317:7;19306;19296;;:17;;;;:::i;:::-;19295:29;;;;:::i;:::-;:49;;19287:117;;;::::0;-1:-1:-1;;;19287:117:0;;14947:2:1;19287:117:0::1;::::0;::::1;14929:21:1::0;14986:2;14966:18;;;14959:30;15025:34;15005:18;;;14998:62;15096:25;15076:18;;;15069:53;15139:19;;19287:117:0::1;14745:419:1::0;19287:117:0::1;19452:7;19441;19431;;:17;;;;:::i;:::-;19430:29;;;;:::i;:::-;19415:12;:44:::0;-1:-1:-1;;19198:269:0:o;11514:590::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;-1:-1:-1;;;;;11595:22:0;::::1;11587:96;;;::::0;-1:-1:-1;;;11587:96:0;;15371:2:1;11587:96:0::1;::::0;::::1;15353:21:1::0;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;15520:31;15500:18;;;15493:59;15569:19;;11587:96:0::1;15169:425:1::0;11587:96:0::1;-1:-1:-1::0;;;;;11702:16:0;::::1;8447:42;11702:16;;11694:90;;;::::0;-1:-1:-1;;;11694:90:0;;15371:2:1;11694:90:0::1;::::0;::::1;15353:21:1::0;15410:2;15390:18;;;15383:30;15449:34;15429:18;;;15422:62;15520:31;15500:18;;;15493:59;15569:19;;11694:90:0::1;15169:425:1::0;11694:90:0::1;11815:6;::::0;;11795:34:::1;::::0;-1:-1:-1;;;;;11815:6:0;;::::1;::::0;11795:19:::1;:34::i;:::-;11840:35;11860:8;11870:4;11840:19;:35::i;:::-;11919:1;11909:6:::0;;-1:-1:-1;;;;;11909:6:0::1;13331:16:::0;;:7;:16;;;;;;11899:21;11896:99:::1;;11947:6;::::0;;-1:-1:-1;;;;;11947:6:0::1;13331:16:::0;;;:7;:16;;;;;;;11937:46:::1;::::0;11947:6;11955:8;;11937:9:::1;:46::i;:::-;;11896:99;12015:6;:17:::0;;-1:-1:-1;;12015:17:0::1;-1:-1:-1::0;;;;;12015:17:0;::::1;::::0;;::::1;::::0;;12048:38:::1;::::0;12015:17;;;;12048:38:::1;::::0;12015:6;12048:38:::1;11514:590:::0;:::o;17461:104::-;17506:7;17533:9;;;;;;;;;-1:-1:-1;;;;;17533:9:0;-1:-1:-1;;;;;17533:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18049:123::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;18124:9:::1;::::0;:40:::1;::::0;;;;4192:14:1;;4185:22;18124:40:0::1;::::0;::::1;4167:41:1::0;18124:9:0;;;::::1;-1:-1:-1::0;;;;;18124:9:0::1;::::0;:31:::1;::::0;4140:18:1;;18124:40:0::1;4027:187:1::0;16469:134:0;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;-1:-1:-1;;;;;16557:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:38;;-1:-1:-1;;16557:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16469:134::o;16611:248::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;16695:16:::1;::::0;::::1;::::0;::::1;;;16694:17;16686:54;;;::::0;-1:-1:-1;;;16686:54:0;;15990:2:1;16686:54:0::1;::::0;::::1;15972:21:1::0;16029:2;16009:18;;;16002:30;16068:26;16048:18;;;16041:54;16112:18;;16686:54:0::1;15788:348:1::0;16686:54:0::1;-1:-1:-1::0;;;;;16759:28:0;::::1;16782:4;16759:28;;16751:55;;;::::0;-1:-1:-1;;;16751:55:0;;16343:2:1;16751:55:0::1;::::0;::::1;16325:21:1::0;16382:2;16362:18;;;16355:30;16421:16;16401:18;;;16394:44;16455:18;;16751:55:0::1;16141:338:1::0;16751:55:0::1;16817:9;:34:::0;;-1:-1:-1;;;;;16817:34:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;16611:248::o;19750:106::-;19838:9;;19791:7;;19834:13;;19838:9;;19834:2;:13;:::i;:::-;19818:12;;:30;;;;:::i;12112:195::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;12199:6:::1;::::0;;12179:34:::1;::::0;-1:-1:-1;;;;;12199:6:0;;::::1;::::0;12179:19:::1;:34::i;:::-;12241:1;12224:19:::0;;-1:-1:-1;;12224:19:0::1;::::0;;12259:40:::1;::::0;12241:1;;12259:40:::1;::::0;12241:1;;12259:40:::1;12112:195::o:0;15525:500::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;15606:16;15602:416:::1;;-1:-1:-1::0;;;;;15639:13:0;;::::1;15655:5;15639:13:::0;;;:7:::1;:13;::::0;;;;;:21;;-1:-1:-1;;15639:21:0::1;::::0;;15675:9:::1;::::0;:32;;;;;::::1;::::0;::::1;16652:74:1::0;;;;16742:18;;;16735:50;;;;15675:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16625:18:1;;15675:32:0::1;16484:307:1::0;15602:416:0::1;15744:17;::::0;:22;15740:136:::1;;15833:6;15813:17;;15795:15;:35;;;;:::i;:::-;:44;15787:73;;;::::0;-1:-1:-1;;;15787:73:0;;16998:2:1;15787:73:0::1;::::0;::::1;16980:21:1::0;17037:2;17017:18;;;17010:30;17076:18;17056;;;17049:46;17112:18;;15787:73:0::1;16796:340:1::0;15787:73:0::1;-1:-1:-1::0;;;;;15890:13:0;;::::1;;::::0;;;:7:::1;:13;::::0;;;;;;:20;;-1:-1:-1;;15890:20:0::1;15906:4;15890:20:::0;;::::1;::::0;;;15945:15:::1;15925:17;:35:::0;15975:9:::1;::::0;:31;;;;;::::1;::::0;::::1;16652:74:1::0;;;;16742:18;;;16735:50;15975:9:0;;::::1;::::0;;::::1;::::0;:19:::1;::::0;16625:18:1;;15975:31:0::1;16484:307:1::0;15602:416:0::1;15525:500:::0;;:::o;14024:173::-;14088:4;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;14137:9:::1;::::0;14105:62:::1;::::0;14122:4:::1;::::0;-1:-1:-1;;;;;14137:9:0::1;-1:-1:-1::0;;14105:8:0::1;:62::i;:::-;-1:-1:-1::0;14185:4:0::1;14024:173:::0;:::o;23960:429::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;24022:14:::1;::::0;::::1;;24021:15;24013:52;;;::::0;-1:-1:-1;;;24013:52:0;;17343:2:1;24013:52:0::1;::::0;::::1;17325:21:1::0;17382:2;17362:18;;;17355:30;17421:26;17401:18;;;17394:54;17465:18;;24013:52:0::1;17141:348:1::0;24013:52:0::1;24084:16;::::0;::::1;::::0;::::1;;;24076:53;;;::::0;-1:-1:-1;;;24076:53:0;;17696:2:1;24076:53:0::1;::::0;::::1;17678:21:1::0;17735:2;17715:18;;;17708:30;17774:26;17754:18;;;17747:54;17818:18;;24076:53:0::1;17494:348:1::0;24076:53:0::1;24151:9;::::0;;;::::1;-1:-1:-1::0;;;;;24151:9:0::1;24140:99;;24191:9;:36:::0;;;::::1;24221:4;24191:36:::0;::::1;;::::0;;24140:99:::1;24253:9;::::0;24273:6:::1;::::0;24328:9:::1;::::0;24253:85:::1;::::0;;;;-1:-1:-1;;;;;24273:6:0;;::::1;24253:85;::::0;::::1;18070:74:1::0;18192:10;24288:12:0::1;18180:23:1::0;18160:18;;;18153:51;18252:18;24310:15:0::1;18240:31:1::0;18220:18;;;18213:59;24328:9:0::1;::::0;;::::1;18288:18:1::0;;;18281:45;24253:9:0;;;::::1;;::::0;:19:::1;::::0;18042::1;;24253:85:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;24249:101:::0;24360:14:::1;:21:::0;;-1:-1:-1;;24360:21:0::1;24377:4;24360:21;::::0;;23960:429::o;14742:225::-;189:10;14835:4;14884:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14884:34:0;;;;;;;;;;14835:4;;14852:85;;14875:7;;14884:52;;14921:15;;14884:52;:::i;13363:167::-;13441:4;13458:42;189:10;13482:9;13493:6;13458:9;:42::i;:::-;-1:-1:-1;13518:4:0;;13363:167;-1:-1:-1;;;13363:167:0:o;18934:256::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;19031:7:::1;:19:::0;;::::1;19101:27:::0;;::::1;::::0;::::1;::::0;19061:29;;::::1;::::0;::::1;::::0;;;;19031:19;;::::1;19061:29:::0;;;;;;;::::1;19101:27;;::::0;;19120:8;19155:16:::1;19081:9:::0;19046:4;19155:16:::1;:::i;:::-;:27;;;;:::i;:::-;19139:7;:43:::0;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;18934:256:0:o;18180:178::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;18264:9:::1;18256:4;:17;;18248:61;;;::::0;-1:-1:-1;;;18248:61:0;;18768:2:1;18248:61:0::1;::::0;::::1;18750:21:1::0;18807:2;18787:18;;;18780:30;18846:33;18826:18;;;18819:61;18897:18;;18248:61:0::1;18566:355:1::0;18248:61:0::1;18320:9;::::0;:30:::1;::::0;;;;::::1;::::0;::::1;4365:25:1::0;;;18320:9:0;;;::::1;-1:-1:-1::0;;;;;18320:9:0::1;::::0;:24:::1;::::0;4338:18:1;;18320:30:0::1;4219:177:1::0;17202:118:0;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;17276:9:::1;::::0;:36:::1;::::0;;;;-1:-1:-1;;;;;178:55:1;;;17276:36:0::1;::::0;::::1;160:74:1::0;17276:9:0;;;::::1;::::0;;::::1;::::0;:27:::1;::::0;133:18:1;;17276:36:0::1;14:226:1::0;18366:122:0;18417:4;18423:7;18450:9;;;;;;;;;-1:-1:-1;;;;;18450:9:0;-1:-1:-1;;;;;18450:28:0;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18443:37;;;;18366:122;;:::o;20416:165::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;20491:19:::1;:30:::0;;;::::1;;;;-1:-1:-1::0;;20491:30:0;;::::1;;::::0;;20537:36:::1;::::0;::::1;::::0;::::1;::::0;20513:8;4192:14:1;4185:22;4167:41;;4155:2;4140:18;;4027:187;20537:36:0::1;;;;;;;;20416:165:::0;:::o;14975:542::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;15046:20:::1;15079:9;15046:43;;15100:16;15130:10;-1:-1:-1::0;;;;;15130:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15119:40:0::1;;15168:4;15175:10;-1:-1:-1::0;;;;;15175:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15119:74;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19746:15:1;;;15119:74:0::1;::::0;::::1;19728:34:1::0;19798:15;;19778:18;;;19771:43;19640:18;;15119:74:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15100:93:::0;-1:-1:-1;;;;;;15208:22:0;::::1;15204:200;;15267:10;-1:-1:-1::0;;;;;15267:18:0::1;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15256:43:0::1;;15308:4;15315:10;-1:-1:-1::0;;;;;15315:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15256:77;::::0;;::::1;::::0;;;;;;-1:-1:-1;;;;;19746:15:1;;;15256:77:0::1;::::0;::::1;19728:34:1::0;19798:15;;19778:18;;;19771:43;19640:18;;15256:77:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15247:6;:86:::0;;-1:-1:-1;;15247:86:0::1;-1:-1:-1::0;;;;;15247:86:0;;;::::1;::::0;;;::::1;::::0;;15204:200:::1;;;15375:6;:17:::0;;-1:-1:-1;;15375:17:0::1;-1:-1:-1::0;;;;;15375:17:0;::::1;;::::0;;15204:200:::1;15414:9;:22:::0;;-1:-1:-1;;15414:22:0::1;-1:-1:-1::0;;;;;15414:22:0;::::1;::::0;;::::1;::::0;;;15447:62:::1;::::0;15464:4:::1;::::0;-1:-1:-1;;15447:8:0::1;:62::i;:::-;15035:482;;14975:542:::0;:::o;20281:127::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;20358:11:::1;:42:::0;;-1:-1:-1;;20358:42:0::1;-1:-1:-1::0;;;;;20358:42:0;;;::::1;::::0;;;::::1;::::0;;20281:127::o;24397:183::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;24464:16:::1;::::0;::::1;::::0;::::1;;;24463:17;24455:58;;;::::0;-1:-1:-1;;;24455:58:0;;20027:2:1;24455:58:0::1;::::0;::::1;20009:21:1::0;20066:2;20046:18;;;20039:30;20105;20085:18;;;20078:58;20153:18;;24455:58:0::1;19825:352:1::0;24455:58:0::1;11465:7:::0;11492:6;;24524:48:::1;::::0;-1:-1:-1;;;;;11492:6:0;;;;24550:21:::1;24524:48:::0;::::1;;;::::0;24550:21;;24524:48;11465:7;24524:48;24550:21;11492:6;24524:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;24397:183::o:0;16869:145::-;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;16959:9:::1;::::0;:47:::1;::::0;;;;-1:-1:-1;;;;;16670:55:1;;;16959:47:0::1;::::0;::::1;16652:74:1::0;16769:14;;16762:22;16742:18;;;16735:50;16959:9:0;;;::::1;::::0;;::::1;::::0;:29:::1;::::0;16625:18:1;;16959:47:0::1;16484:307:1::0;19984:289:0;9868:6;;-1:-1:-1;;;;;9868:6:0;189:10;9868:22;9860:52;;;;-1:-1:-1;;;9860:52:0;;9755:2:1;9860:52:0;;;9737:21:1;9794:2;9774:18;;;9767:30;-1:-1:-1;;;9813:18:1;;;9806:47;9870:18;;9860:52:0;9553:341:1;9860:52:0;20184:16:::1;20164;20154:7;;:26;;;;:::i;:::-;20153:47;;;;:::i;:::-;20137:13;:63:::0;20225:7:::1;::::0;20252:13;;20225:23:::1;::::0;20235:13;;20225:23:::1;:::i;:::-;20224:41;;;;:::i;:::-;20211:10;:54:::0;-1:-1:-1;;;;19984:289:0:o;17328:125::-;17413:9;;:32;;;;;-1:-1:-1;;;;;178:55:1;;;17413:32:0;;;160:74:1;17389:4:0;;17413:9;;;;;:23;;133:18:1;;17413:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13707:309::-;-1:-1:-1;;;;;13801:20:0;;13793:52;;;;-1:-1:-1;;;13793:52:0;;20634:2:1;13793:52:0;;;20616:21:1;20673:2;20653:18;;;20646:30;20712:21;20692:18;;;20685:49;20751:18;;13793:52:0;20432:343:1;13793:52:0;-1:-1:-1;;;;;13864:21:0;;13856:53;;;;-1:-1:-1;;;13856:53:0;;20634:2:1;13856:53:0;;;20616:21:1;20673:2;20653:18;;;20646:30;20712:21;20692:18;;;20685:49;20751:18;;13856:53:0;20432:343:1;13856:53:0;-1:-1:-1;;;;;13922:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;13975:33;;4365:25:1;;;13975:33:0;;4338:18:1;13975:33:0;;;;;;;13707:309;;;:::o;20920:1470::-;20999:4;-1:-1:-1;;;;;21024:18:0;;21016:68;;;;-1:-1:-1;;;21016:68:0;;20982:2:1;21016:68:0;;;20964:21:1;21021:2;21001:18;;;20994:30;21060:34;21040:18;;;21033:62;21131:7;21111:18;;;21104:35;21156:19;;21016:68:0;20780:401:1;21016:68:0;-1:-1:-1;;;;;21103:16:0;;21095:64;;;;-1:-1:-1;;;21095:64:0;;21388:2:1;21095:64:0;;;21370:21:1;21427:2;21407:18;;;21400:30;21466:34;21446:18;;;21439:62;21537:5;21517:18;;;21510:33;21560:19;;21095:64:0;21186:399:1;21095:64:0;21187:1;21178:6;:10;21170:64;;;;-1:-1:-1;;;21170:64:0;;21792:2:1;21170:64:0;;;21774:21:1;21831:2;21811:18;;;21804:30;21870:34;21850:18;;;21843:62;21941:11;21921:18;;;21914:39;21970:19;;21170:64:0;21590:405:1;21170:64:0;21248:20;21259:4;21265:2;21248:10;:20::i;:::-;21245:480;;;21289:14;;;;21285:89;;21324:34;;-1:-1:-1;;;21324:34:0;;22202:2:1;21324:34:0;;;22184:21:1;22241:2;22221:18;;;22214:30;22280:26;22260:18;;;22253:54;22324:18;;21324:34:0;22000:348:1;21285:89:0;-1:-1:-1;;;;;21391:13:0;;;;;;:7;:13;;;;;;;;;:28;;-1:-1:-1;;;;;;21408:11:0;;;;;;:7;:11;;;;;;;;21391:28;21388:142;;;21457:12;;21447:6;:22;;21439:75;;;;-1:-1:-1;;;21439:75:0;;22555:2:1;21439:75:0;;;22537:21:1;22594:2;22574:18;;;22567:30;22633:34;22613:18;;;22606:62;22704:10;22684:18;;;22677:38;22732:19;;21439:75:0;22353:404:1;21439:75:0;21553:13;;-1:-1:-1;;;;;21547:19:0;;;21553:13;;21547:19;;;;:35;;-1:-1:-1;;;;;;21571:11:0;;;;;;:7;:11;;;;;;;;21570:12;21547:35;21544:170;;;21637:14;;21627:6;21611:13;21621:2;-1:-1:-1;;;;;13331:16:0;13304:7;13331:16;;;:7;:16;;;;;;;13238:117;21611:13;:22;;;;:::i;:::-;:40;;21603:95;;;;-1:-1:-1;;;21603:95:0;;22964:2:1;21603:95:0;;;22946:21:1;23003:2;22983:18;;;22976:30;23042:34;23022:18;;;23015:62;23113:12;23093:18;;;23086:40;23143:19;;21603:95:0;22762:406:1;21603:95:0;-1:-1:-1;;;;;21770:25:0;;21737:12;21770:25;;;:19;:25;;;;;;21752:4;;21770:25;;;:52;;-1:-1:-1;;;;;;21799:23:0;;;;;;:19;:23;;;;;;;;21770:52;21767:98;;;-1:-1:-1;21848:5:0;21767:98;-1:-1:-1;;;;;21881:11:0;;;;;;:7;:11;;;;;;;;21877:443;;;21914:6;;;;21913:7;:47;;;;-1:-1:-1;21941:19:0;;;;;;;21913:47;21909:394;;;22044:4;21995:28;13331:16;;;:7;:16;;;;;;22097:13;;22073:37;;22069:219;;22162:10;;22138:20;:34;22135:77;;-1:-1:-1;22199:10:0;;22135:77;22234:34;22247:20;22234:12;:34::i;:::-;21976:327;21909:394;22338:44;22356:4;22362:2;22366:6;22374:7;22338:17;:44::i;:::-;22331:51;20920:1470;-1:-1:-1;;;;;20920:1470:0:o;20589:323::-;20657:4;11492:6;;-1:-1:-1;;;;;20681:15:0;;;11492:6;;20681:15;;;;:45;;-1:-1:-1;11465:7:0;11492:6;-1:-1:-1;;;;;20713:13:0;;;11492:6;;20713:13;;20681:45;:84;;;;-1:-1:-1;;;;;;20744:21:0;;;;;;:17;:21;;;;;;;;20743:22;20681:84;:125;;;;-1:-1:-1;;;;;;20783:23:0;;;;;;:17;:23;;;;;;;;20782:24;20681:125;:152;;;;-1:-1:-1;;;;;;20823:10:0;;8447:42;20823:10;;20681:152;:185;;;;-1:-1:-1;;;;;;20850:16:0;;;;20681:185;:223;;;;-1:-1:-1;;;;;;20883:21:0;;20899:4;20883:21;;20681:223;20674:230;20589:323;-1:-1:-1;;;20589:323:0:o;22398:1038::-;9762:6;:13;;-1:-1:-1;;9762:13:0;9771:4;9762:13;;;22485:7:::1;:13:::0;::::1;::::0;;;::::1;;22481:44;;22518:7;;22481:44;22560:4;22540:26;::::0;;;:11:::1;:26;::::0;;;;;;;22575:9:::1;::::0;-1:-1:-1;;;;;22575:9:0::1;22540:46:::0;;;;;;;;-1:-1:-1;;22540:67:0::1;22537:165;;22644:4;22624:26;::::0;;;:11:::1;:26;::::0;;;;;;;22659:9:::1;::::0;-1:-1:-1;;;;;22659:9:0::1;22624:46:::0;;;;;;;-1:-1:-1;;22624:66:0;;22537:165:::1;22746:16;::::0;;22760:1:::1;22746:16:::0;;;;;::::1;::::0;;22722:21:::1;::::0;22746:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;22746:16:0::1;22722:40;;22791:4;22773;22778:1;22773:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22773:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;22817:9:::1;::::0;:16:::1;::::0;;;;;;;:9;;;::::1;::::0;:14:::1;::::0;:16:::1;::::0;;::::1;::::0;22773:7;;22817:16;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22807:4;22812:1;22807:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22807:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;22846:9:::1;::::0;:227:::1;::::0;;;;:9;::::1;::::0;:60:::1;::::0;:227:::1;::::0;22921:20;;22846:9:::1;::::0;23000:4;;23027::::1;::::0;23047:15:::1;::::0;22846:227:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;23114:1;23090:21;:25;23086:343;;;23188:16:::0;;23243:7:::1;:13:::0;23152:21:::1;::::0;-1:-1:-1;;;;;23188:16:0::1;::::0;:69:::1;::::0;23243:13:::1;::::0;;::::1;::::0;::::1;::::0;23215:24:::1;::::0;23227:12:::1;23152:21:::0;23215:24:::1;:::i;:::-;23214:42;;;;:::i;:::-;23188:69;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23272:20:0;;23335:7:::1;:13:::0;-1:-1:-1;;;;;23272:20:0;;::::1;::::0;:77:::1;::::0;23335:13:::1;::::0;;::::1;::::0;::::1;::::0;23303:28:::1;::::0;23315:16;;;::::1;;23303:9:::0;:28:::1;:::i;:::-;23302:46;;;;:::i;:::-;23272:77;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;23364:11:0::1;:21:::0;:53:::1;::::0;-1:-1:-1;;;;;23364:21:0;;::::1;::::0;23395::::1;23364:53:::0;::::1;;;::::0;:21:::1;:53:::0;:21;:53;23395:21;23364;:53;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;23117:312;23086:343;22470:966;9786:1;-1:-1:-1::0;9798:6:0;:14;;-1:-1:-1;;9798:14:0;;;22398:1038::o;24588:905::-;24710:16;;24688:4;;24710:16;;;;;24705:221;;24743:28;24762:4;24768:2;24743:18;:28::i;:::-;24791:16;;;;;;;24790:17;:41;;;;;24811:20;24822:4;24828:2;24811:10;:20::i;:::-;24786:129;;;24852:47;;-1:-1:-1;;;24852:47:0;;24174:2:1;24852:47:0;;;24156:21:1;24213:2;24193:18;;;24186:30;24252:34;24232:18;;;24225:62;24323:7;24303:18;;;24296:35;24348:19;;24852:47:0;23972:401:1;24786:129:0;24942:20;24953:4;24959:2;24942:10;:20::i;:::-;24938:314;;;25010:9;;:37;;;;;-1:-1:-1;;;;;24659:15:1;;;25010:37:0;;;24641:34:1;24711:15;;;24691:18;;;24684:43;24743:18;;;24736:34;;;24979:12:0;;25010:9;;;;;:19;;24553:18:1;;25010:37:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;25010:37:0;;;;;;;;-1:-1:-1;;25010:37:0;;;;;;;;;;;;:::i;:::-;;;25006:163;;25145:8;;;25006:163;25098:5;-1:-1:-1;25189:7:0;25185:56;;25217:8;;;25185:56;24964:288;24938:314;-1:-1:-1;;;;;25264:13:0;;;;;;:7;:13;;;;;:23;;25281:6;;25264:13;:23;;25281:6;;25264:23;:::i;:::-;;;;-1:-1:-1;25298:22:0;;-1:-1:-1;25324:7:0;25323:48;;25365:6;25323:48;;;25335:27;25345:4;25351:2;25355:6;25335:9;:27::i;:::-;-1:-1:-1;;;;;25382:11:0;;;;;;:7;:11;;;;;:29;;25298:73;;-1:-1:-1;25298:73:0;;25382:11;;;:29;;25298:73;;25382:29;:::i;:::-;;;;;;;;25444:2;-1:-1:-1;;;;;25429:34:0;25438:4;-1:-1:-1;;;;;25429:34:0;;25448:14;25429:34;;;;4365:25:1;;4353:2;4338:18;;4219:177;25429:34:0;;;;;;;;-1:-1:-1;25481:4:0;;24588:905;-1:-1:-1;;;;;24588:905:0:o;23444:508::-;23526:16;;;;;;;23525:17;23517:65;;;;-1:-1:-1;;;23517:65:0;;24983:2:1;23517:65:0;;;24965:21:1;25022:2;25002:18;;;24995:30;25061:34;25041:18;;;25034:62;25132:5;25112:18;;;25105:33;25155:19;;23517:65:0;24781:399:1;23517:65:0;23598:20;23609:4;23615:2;23598:10;:20::i;:::-;23597:21;:37;;;;-1:-1:-1;23628:6:0;;-1:-1:-1;;;;;23622:12:0;;;23628:6;;23622:12;23597:37;23593:352;;;-1:-1:-1;;;;;23651:23:0;;;;;;;:17;:23;;;;;:30;;-1:-1:-1;;23651:30:0;23677:4;23651:30;;;23696:16;:23;;-1:-1:-1;;23696:23:0;23651:30;23696:23;;;;;23745:9;;;;23734:107;;23789:9;:36;;;;23819:4;23789:36;;;;;23734:107;23855:19;:26;;-1:-1:-1;;23855:26:0;;;;;23901:32;;-1:-1:-1;4167:41:1;;23901:32:0;;4155:2:1;4140:18;23901:32:0;;;;;;;23444:508;;:::o;25501:583::-;25641:6;;25580:7;;;;-1:-1:-1;;;;;25633:14:0;;;25641:6;;25633:14;25629:224;;;-1:-1:-1;25677:9:0;:16;;;25629:224;;;25721:6;;-1:-1:-1;;;;;25715:12:0;;;25721:6;;25715:12;25711:142;;;-1:-1:-1;25757:9:0;:17;;;;;;25711:142;;;-1:-1:-1;25820:9:0;:21;;;;;;25711:142;25907:10;:27;25865:17;;25907:27;;;;;25885:19;25894:10;25885:6;:19;:::i;:::-;:49;;;;:::i;:::-;25963:4;25947:22;;;;:7;:22;;;;;:35;;25865:69;;-1:-1:-1;25865:69:0;;25947:22;;;:35;;25865:69;;25947:35;:::i;:::-;;;;-1:-1:-1;;25998:40:0;;4365:25:1;;;26021:4:0;;-1:-1:-1;;;;;25998:40:0;;;;;4353:2:1;4338:18;25998:40:0;;;;;;;26058:18;26067:9;26058:6;:18;:::i;:::-;26051:25;25501:583;-1:-1:-1;;;;;;25501:583:0:o;245:184:1:-;297:77;294:1;287:88;394:4;391:1;384:15;418:4;415:1;408:15;434:154;-1:-1:-1;;;;;513:5:1;509:54;502:5;499:65;489:93;;578:1;575;568:12;593:134;661:20;;690:31;661:20;690:31;:::i;:::-;593:134;;;:::o;732:118::-;818:5;811:13;804:21;797:5;794:32;784:60;;840:1;837;830:12;855:128;920:20;;949:28;920:20;949:28;:::i;988:1250::-;1078:6;1086;1139:2;1127:9;1118:7;1114:23;1110:32;1107:52;;;1155:1;1152;1145:12;1107:52;1195:9;1182:23;1224:18;1265:2;1257:6;1254:14;1251:34;;;1281:1;1278;1271:12;1251:34;1319:6;1308:9;1304:22;1294:32;;1364:7;1357:4;1353:2;1349:13;1345:27;1335:55;;1386:1;1383;1376:12;1335:55;1422:2;1409:16;1444:4;1467:2;1463;1460:10;1457:36;;;1473:18;;:::i;:::-;1519:2;1516:1;1512:10;1551:2;1545:9;-1:-1:-1;;1605:2:1;1601;1597:11;1593:84;1585:6;1581:97;1728:6;1716:10;1713:22;1708:2;1696:10;1693:18;1690:46;1687:72;;;1739:18;;:::i;:::-;1775:2;1768:22;1825:18;;;1859:15;;;;-1:-1:-1;1901:11:1;;;1897:20;;;1929:19;;;1926:39;;;1961:1;1958;1951:12;1926:39;1985:11;;;;2005:148;2021:6;2016:3;2013:15;2005:148;;;2087:23;2106:3;2087:23;:::i;:::-;2075:36;;2038:12;;;;2131;;;;2005:148;;;2172:6;-1:-1:-1;2197:35:1;;-1:-1:-1;2213:18:1;;;2197:35;:::i;:::-;2187:45;;;;;;988:1250;;;;;:::o;2613:656::-;2725:4;2754:2;2783;2772:9;2765:21;2815:6;2809:13;2858:6;2853:2;2842:9;2838:18;2831:34;2883:1;2893:140;2907:6;2904:1;2901:13;2893:140;;;3002:14;;;2998:23;;2992:30;2968:17;;;2987:2;2964:26;2957:66;2922:10;;2893:140;;;3051:6;3048:1;3045:13;3042:91;;;3121:1;3116:2;3107:6;3096:9;3092:22;3088:31;3081:42;3042:91;-1:-1:-1;3185:2:1;3173:15;-1:-1:-1;;3169:88:1;3154:104;;;;3260:2;3150:113;;2613:656;-1:-1:-1;;;2613:656:1:o;3522:180::-;3581:6;3634:2;3622:9;3613:7;3609:23;3605:32;3602:52;;;3650:1;3647;3640:12;3602:52;-1:-1:-1;3673:23:1;;3522:180;-1:-1:-1;3522:180:1:o;3707:315::-;3775:6;3783;3836:2;3824:9;3815:7;3811:23;3807:32;3804:52;;;3852:1;3849;3842:12;3804:52;3891:9;3878:23;3910:31;3935:5;3910:31;:::i;:::-;3960:5;4012:2;3997:18;;;;3984:32;;-1:-1:-1;;;3707:315:1:o;4850:456::-;4927:6;4935;4943;4996:2;4984:9;4975:7;4971:23;4967:32;4964:52;;;5012:1;5009;5002:12;4964:52;5051:9;5038:23;5070:31;5095:5;5070:31;:::i;:::-;5120:5;-1:-1:-1;5177:2:1;5162:18;;5149:32;5190:33;5149:32;5190:33;:::i;:::-;4850:456;;5242:7;;-1:-1:-1;;;5296:2:1;5281:18;;;;5268:32;;4850:456::o;5311:248::-;5379:6;5387;5440:2;5428:9;5419:7;5415:23;5411:32;5408:52;;;5456:1;5453;5446:12;5408:52;-1:-1:-1;;5479:23:1;;;5549:2;5534:18;;;5521:32;;-1:-1:-1;5311:248:1:o;5564:647::-;5638:6;5646;5654;5662;5715:3;5703:9;5694:7;5690:23;5686:33;5683:53;;;5732:1;5729;5722:12;5683:53;5771:9;5758:23;5790:28;5812:5;5790:28;:::i;:::-;5837:5;-1:-1:-1;5894:2:1;5879:18;;5866:32;5907:30;5866:32;5907:30;:::i;:::-;5956:7;-1:-1:-1;6015:2:1;6000:18;;5987:32;6028:30;5987:32;6028:30;:::i;:::-;6077:7;-1:-1:-1;6136:2:1;6121:18;;6108:32;6149:30;6108:32;6149:30;:::i;:::-;5564:647;;;;-1:-1:-1;5564:647:1;;-1:-1:-1;;5564:647:1:o;6405:159::-;6472:20;;6532:6;6521:18;;6511:29;;6501:57;;6554:1;6551;6544:12;6569:328;6643:6;6651;6659;6712:2;6700:9;6691:7;6687:23;6683:32;6680:52;;;6728:1;6725;6718:12;6680:52;6751:28;6769:9;6751:28;:::i;:::-;6741:38;;6798:37;6831:2;6820:9;6816:18;6798:37;:::i;:::-;6788:47;;6854:37;6887:2;6876:9;6872:18;6854:37;:::i;:::-;6844:47;;6569:328;;;;;:::o;6902:247::-;6961:6;7014:2;7002:9;6993:7;6989:23;6985:32;6982:52;;;7030:1;7027;7020:12;6982:52;7069:9;7056:23;7088:31;7113:5;7088:31;:::i;7154:241::-;7210:6;7263:2;7251:9;7242:7;7238:23;7234:32;7231:52;;;7279:1;7276;7269:12;7231:52;7318:9;7305:23;7337:28;7359:5;7337:28;:::i;7400:382::-;7465:6;7473;7526:2;7514:9;7505:7;7501:23;7497:32;7494:52;;;7542:1;7539;7532:12;7494:52;7581:9;7568:23;7600:31;7625:5;7600:31;:::i;:::-;7650:5;-1:-1:-1;7707:2:1;7692:18;;7679:32;7720:30;7679:32;7720:30;:::i;:::-;7769:7;7759:17;;;7400:382;;;;;:::o;8050:388::-;8118:6;8126;8179:2;8167:9;8158:7;8154:23;8150:32;8147:52;;;8195:1;8192;8185:12;8147:52;8234:9;8221:23;8253:31;8278:5;8253:31;:::i;:::-;8303:5;-1:-1:-1;8360:2:1;8345:18;;8332:32;8373:33;8332:32;8373:33;:::i;9163:385::-;9249:6;9257;9265;9273;9326:3;9314:9;9305:7;9301:23;9297:33;9294:53;;;9343:1;9340;9333:12;9294:53;-1:-1:-1;;9366:23:1;;;9436:2;9421:18;;9408:32;;-1:-1:-1;9487:2:1;9472:18;;9459:32;;9538:2;9523:18;9510:32;;-1:-1:-1;9163:385:1;-1:-1:-1;9163:385:1:o;9899:484::-;9952:3;9990:5;9984:12;10017:6;10012:3;10005:19;10043:4;10072:2;10067:3;10063:12;10056:19;;10109:2;10102:5;10098:14;10130:1;10140:218;10154:6;10151:1;10148:13;10140:218;;;10219:13;;-1:-1:-1;;;;;10215:62:1;10203:75;;10298:12;;;;10333:15;;;;10176:1;10169:9;10140:218;;;-1:-1:-1;10374:3:1;;9899:484;-1:-1:-1;;;;;9899:484:1:o;10388:342::-;10589:2;10578:9;10571:21;10552:4;10609:56;10661:2;10650:9;10646:18;10638:6;10609:56;:::i;:::-;10601:64;;10715:6;10708:14;10701:22;10696:2;10685:9;10681:18;10674:50;10388:342;;;;;:::o;11071:184::-;11123:77;11120:1;11113:88;11220:4;11217:1;11210:15;11244:4;11241:1;11234:15;11260:482;11349:1;11392:5;11349:1;11406:330;11427:7;11417:8;11414:21;11406:330;;;11546:4;-1:-1:-1;;11474:77:1;11468:4;11465:87;11462:113;;;11555:18;;:::i;:::-;11605:7;11595:8;11591:22;11588:55;;;11625:16;;;;11588:55;11704:22;;;;11664:15;;;;11406:330;;;11410:3;11260:482;;;;;:::o;11747:866::-;11796:5;11826:8;11816:80;;-1:-1:-1;11867:1:1;11881:5;;11816:80;11915:4;11905:76;;-1:-1:-1;11952:1:1;11966:5;;11905:76;11997:4;12015:1;12010:59;;;;12083:1;12078:130;;;;11990:218;;12010:59;12040:1;12031:10;;12054:5;;;12078:130;12115:3;12105:8;12102:17;12099:43;;;12122:18;;:::i;:::-;-1:-1:-1;;12178:1:1;12164:16;;12193:5;;11990:218;;12292:2;12282:8;12279:16;12273:3;12267:4;12264:13;12260:36;12254:2;12244:8;12241:16;12236:2;12230:4;12227:12;12223:35;12220:77;12217:159;;;-1:-1:-1;12329:19:1;;;12361:5;;12217:159;12408:34;12433:8;12427:4;12408:34;:::i;:::-;12538:6;-1:-1:-1;;12466:79:1;12457:7;12454:92;12451:118;;;12549:18;;:::i;:::-;12587:20;;11747:866;-1:-1:-1;;;11747:866:1:o;12618:140::-;12676:5;12705:47;12746:4;12736:8;12732:19;12726:4;12705:47;:::i;12763:274::-;12803:1;12829;12819:189;;12864:77;12861:1;12854:88;12965:4;12962:1;12955:15;12993:4;12990:1;12983:15;12819:189;-1:-1:-1;13022:9:1;;12763:274::o;13042:125::-;13082:4;13110:1;13107;13104:8;13101:34;;;13115:18;;:::i;:::-;-1:-1:-1;13152:9:1;;13042:125::o;13172:228::-;13212:7;13338:1;-1:-1:-1;;13266:74:1;13263:1;13260:81;13255:1;13248:9;13241:17;13237:105;13234:131;;;13345:18;;:::i;:::-;-1:-1:-1;13385:9:1;;13172:228::o;14260:128::-;14300:3;14331:1;14327:6;14324:1;14321:13;14318:39;;;14337:18;;:::i;:::-;-1:-1:-1;14373:9:1;;14260:128::o;15599:184::-;15669:6;15722:2;15710:9;15701:7;15697:23;15693:32;15690:52;;;15738:1;15735;15728:12;15690:52;-1:-1:-1;15761:16:1;;15599:184;-1:-1:-1;15599:184:1:o;18337:224::-;18376:3;18404:6;18437:2;18434:1;18430:10;18467:2;18464:1;18460:10;18498:3;18494:2;18490:12;18485:3;18482:21;18479:47;;;18506:18;;:::i;:::-;18542:13;;18337:224;-1:-1:-1;;;;18337:224:1:o;18926:306::-;19002:6;19010;19063:2;19051:9;19042:7;19038:23;19034:32;19031:52;;;19079:1;19076;19069:12;19031:52;19111:9;19105:16;19130:28;19152:5;19130:28;:::i;:::-;19222:2;19207:18;;;;19201:25;19177:5;;19201:25;;-1:-1:-1;;;18926:306:1:o;19237:251::-;19307:6;19360:2;19348:9;19339:7;19335:23;19331:32;19328:52;;;19376:1;19373;19366:12;19328:52;19408:9;19402:16;19427:31;19452:5;19427:31;:::i;20182:245::-;20249:6;20302:2;20290:9;20281:7;20277:23;20273:32;20270:52;;;20318:1;20315;20308:12;20270:52;20350:9;20344:16;20369:28;20391:5;20369:28;:::i;23173:184::-;23225:77;23222:1;23215:88;23322:4;23319:1;23312:15;23346:4;23343:1;23336:15;23362:605;23661:6;23650:9;23643:25;23704:6;23699:2;23688:9;23684:18;23677:34;23747:3;23742:2;23731:9;23727:18;23720:31;23624:4;23768:57;23820:3;23809:9;23805:19;23797:6;23768:57;:::i;:::-;-1:-1:-1;;;;;23861:55:1;;;;23856:2;23841:18;;23834:83;-1:-1:-1;23948:3:1;23933:19;23926:35;23760:65;23362:605;-1:-1:-1;;;23362:605:1:o

Swarm Source

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