ETH Price: $3,984.58 (+1.93%)

Token

ERC-20: Dope Coin (DOPE)
 

Overview

Max Total Supply

420,000,000 DOPE

Holders

652

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
390,852 DOPE

Value
$0.00
0x1d4bfcd5af9b777b2309ad328b06d66c6409f4c3
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:
ProofNonReflectionToken

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-16
*/

// File contracts/libraries/Context.sol

// SPDX-License-Identifier: None
pragma solidity = 0.8.17;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File contracts/libraries/ProofNonReflectionTokenFees.sol

pragma solidity = 0.8.17;

library ProofNonReflectionTokenFees {
    struct allFees {
        uint256 mainFee;
        uint256 mainFeeOnSell;
        uint256 lpFee;
        uint256 lpFeeOnSell;
    }
}


// File contracts/interfaces/IFACTORY.sol

pragma solidity = 0.8.17;

interface IFACTORY {
    function factoryRevenue() external payable;
}


// File contracts/interfaces/IUniswapV2Router02.sol

pragma solidity = 0.8.17;

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);
}


// File contracts/libraries/Ownable.sol

pragma solidity = 0.8.17;

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}


// File contracts/interfaces/IUniswapV2Factory.sol

pragma solidity = 0.8.17;

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]

// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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);

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

    /**
     * @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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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


// File contracts/ProofNonReflectiveToken.sol

pragma solidity = 0.8.17;

contract ProofNonReflectionToken is Context, IERC20, IERC20Metadata {
    //This token was created with PROOF, and audited by Solidity Finance https://proofplatform.io/projects
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private constant _name = 'Dope Coin';
    string private constant _symbol = 'DOPE';

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    address public proofAdmin;

    bool public restrictWhales = true;

    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) public isTxLimitExempt;

    uint256 public launchedAt;
    uint256 public proofFee = 2;

    uint256 public mainFee;
    uint256 public lpFee;

    uint256 public mainFeeOnSell;
    uint256 public lpFeeOnSell;

    uint256 public totalFee;
    uint256 public totalFeeIfSelling;

    IUniswapV2Router02 public router;
    address public pair;
    address public tokenOwner;
    address public deployer;
    address private factory;
    address payable public mainWallet;

    bool public inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingStatus = false;

    mapping(address => bool) public bots;

    uint256 public _maxTxAmount;
    uint256 public _walletMax;
    uint256 public swapThreshold;

    constructor(
        uint percentToLP,
        address owner,
        address factory_,
        address main,
        address initialProofAdmin
        ) {
        deployer = msg.sender;
        factory = factory_;
        _totalSupply = 420000000 * 1e9;

        //Tx & Wallet Limits
        require (percentToLP >= 70, "low lp percent");
        _maxTxAmount = _totalSupply;
        _walletMax = _totalSupply;
        swapThreshold = _totalSupply;

        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(
            router.WETH(),
            address(this)
        );

        isFeeExempt[address(this)] = true;
        isFeeExempt[msg.sender] = true;
        isFeeExempt[owner] = true;

        isTxLimitExempt[owner] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        //Fees
        mainFee = 3;
        lpFee = 1;

        mainFeeOnSell = 6;
        lpFeeOnSell = 1;

        totalFee = lpFee + proofFee + mainFee;
        totalFeeIfSelling = lpFeeOnSell +proofFee + mainFeeOnSell;

        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high sell fee");

        tokenOwner = owner;
        mainWallet = payable(main);
        proofAdmin = initialProofAdmin;

        //Initial supply
        uint256 forLP = (_totalSupply * percentToLP) / 100; //95%
        uint256 forOwner = _totalSupply - forLP; //5%

        _balances[msg.sender] += forLP;
        _balances[owner] += forOwner;

        emit Transfer(address(0), msg.sender, forLP);
        emit Transfer(address(0), owner, forOwner);
    }

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    modifier onlyProofAdmin() {
        require(
            proofAdmin == _msgSender(),
            "Ownable: caller is not the proofAdmin"
        );
        _;
    }

    modifier onlyDeployer() {
        require(
            deployer == _msgSender(),
            "Ownable: caller is not the deployer"
        );
        _;
    }

    modifier onlyOwner() {
        require(tokenOwner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    //proofAdmin functions
    function updateProofAdmin(address newAdmin) external virtual onlyProofAdmin {
        proofAdmin = newAdmin;
    }

    function setBots(address[] memory bots_) external onlyProofAdmin {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    //Factory functions
    function swapTradingStatus() external onlyDeployer {
        _maxTxAmount = (_totalSupply * 1) / 1000;
        _walletMax = (_totalSupply * 1) / 1000;
        swapThreshold = (_totalSupply * 5) / 4000;
        setLaunchedAt();
        tradingStatus = !tradingStatus;
    }

    function postLaunchMaxes() external onlyDeployer {
        _maxTxAmount = (_totalSupply * 5) / 1000;
        _walletMax = (_totalSupply * 1) / 100;
    }

    function renounceDeployerAddress() external onlyDeployer {
      deployer = address(0);
    }

    function setLaunchedAt() internal {
        require(launchedAt == 0, "already launched");
        launchedAt = block.timestamp;
    }

    function cancelToken() external onlyProofAdmin {
        isFeeExempt[address(router)] = true;
        isTxLimitExempt[address(router)] = true;
        isTxLimitExempt[tokenOwner] = true;
        tradingStatus = true;
    }

    //Owner functions
    function changeFees(
        uint256 initialMainFee,
        uint256 initialMainFeeOnSell,
        uint256 initialLpFee,
        uint256 initialLpFeeOnSell
    ) external onlyOwner {
        mainFee = initialMainFee;
        lpFee = initialLpFee;

        mainFeeOnSell = initialMainFeeOnSell;
        lpFeeOnSell = initialLpFeeOnSell;

        totalFee = lpFee + proofFee + mainFee;
        totalFeeIfSelling = lpFeeOnSell +proofFee + mainFeeOnSell;

        require(totalFee <= 12, "Too high fee");
        require(totalFeeIfSelling <= 17, "Too high fee");
    }

    function changeTxLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(newLimit >= (_totalSupply * 5) / 1000, "Mmin 0.5% limit");
        require(newLimit <= (_totalSupply * 3) / 100, "Max 3% limit");
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(newLimit >= (_totalSupply * 5) / 1000, "Mmin 0.5% limit");
        require(newLimit <= (_totalSupply * 3) / 100, "Max 3% limit");
        _walletMax = newLimit;
    }

    function changeRestrictWhales(bool newValue) external onlyOwner {
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 24 hours, "too soon");
        restrictWhales = newValue;
    }

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt)
        external
        onlyOwner
    {
        isTxLimitExempt[holder] = exempt;
    }

    function reduceProofFee() external onlyOwner {
        require(proofFee == 2, "!already reduced");
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 72 hours, "too soon");

        proofFee = 1;
        totalFee = lpFee + proofFee + mainFee;
        totalFeeIfSelling = lpFeeOnSell + proofFee + mainFeeOnSell;
    }

    function formatProofFee() external onlyProofAdmin {
        require (proofFee > 0, "already reduced");
        require(launchedAt != 0, "!launched");
        require(block.timestamp >= launchedAt + 72 hours, "too soon");

        totalFee -= proofFee;
        totalFeeIfSelling -= proofFee;
        proofFee = 0;
    }

    function setMainWallet(address payable newMainWallet) external onlyOwner {
        mainWallet = newMainWallet;
    }

    function setOwnerWallet(address payable newOwnerWallet) external onlyOwner {
        tokenOwner = newOwnerWallet;
    }

    function changeSwapBackSettings(
        bool enableSwapBack,
        uint256 newSwapBackLimit
    ) external onlyOwner {
        swapAndLiquifyEnabled = enableSwapBack;
        swapThreshold = newSwapBackLimit;
    }

    function delBot(address notbot) external {
        address sender = _msgSender();
        require (sender == proofAdmin || sender == tokenOwner, "Owanble: caller doesn't have permission");
        bots[notbot] = false;
    }

    function getCirculatingSupply() external view returns (uint256) {
        return _totalSupply - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function name() external view virtual override returns (string memory) {
        return _name;
    }
    function symbol() external view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() external view virtual override returns (uint8) {
        return 9;
    }
    function totalSupply() external view virtual override returns (uint256) {
        return _totalSupply;
    }
    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }
    function transfer(address to, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }
    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount)
        external
        virtual
        override
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }
    function increaseAllowance(address spender, uint256 addedValue)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        _approve(owner, spender, _allowances[owner][spender] + addedValue);
        return true;
    }
    function decreaseAllowance(address spender, uint256 subtractedValue)
        external
        virtual
        returns (bool)
    {
        address owner = _msgSender();
        uint256 currentAllowance = _allowances[owner][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if(isFeeExempt[sender] || isFeeExempt[recipient] || inSwapAndLiquify){
            return _basicTransfer(sender, recipient, amount);
         } else { 
            return _taxedTransfer(sender,recipient,amount);                  
        }
    }

    function _taxedTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(!bots[sender] && !bots[recipient]);
        require(tradingStatus, "Trading Closed");

        if (!isTxLimitExempt[recipient] && restrictWhales) {
        require(
            amount <= _maxTxAmount || isTxLimitExempt[sender],
            "Max TX Amount"
        );
        }

        if (!isTxLimitExempt[recipient] && restrictWhales && recipient != pair) {
            require(
                _balances[recipient] + amount <= _walletMax,
                "Max Wallet Amount"
            );
        }

        if (
            sender != pair &&
            !inSwapAndLiquify &&
            swapAndLiquifyEnabled &&
            _balances[address(this)] >= swapThreshold
        ) {
            swapBack();
        }

        _balances[sender] = _balances[sender] - amount;
        uint256 finalAmount = amount;

        if (sender == pair || recipient == pair) {
            finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient]
                ? takeFee(sender, recipient, amount)
                : amount;
        }
        
        _balances[recipient] = _balances[recipient] + finalAmount;

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Spend `amount` form the allowance of `owner` toward `spender`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        uint256 feeApplicable = pair == recipient
            ? totalFeeIfSelling
            : totalFee;
        uint256 feeAmount = amount * feeApplicable / 100;

        _balances[address(this)] = _balances[address(this)] + feeAmount;
        emit Transfer(sender, address(this), feeAmount);

        return amount - feeAmount;
    }

    function swapBack() internal lockTheSwap {
        uint256 tokensToLiquify = _balances[address(this)];

        uint256 amountToLiquify;
        uint256 proofBalance;
        uint256 amountEthLiquidity;

        // Use sell ratios if buy tax too low
        if (totalFee <= 2) {
            amountToLiquify = tokensToLiquify * lpFeeOnSell / totalFeeIfSelling / 2;
        } else {
            amountToLiquify = tokensToLiquify * lpFee / totalFee / 2;
        }

        uint256 amountToSwap = tokensToLiquify - amountToLiquify;

        _allowances[address(this)][address(router)] = amountToSwap;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        // Use sell ratios if buy tax too low
        if (totalFee <= 2) {
            proofBalance = amountETH * proofFee / totalFeeIfSelling;
            amountEthLiquidity = amountETH * lpFeeOnSell / totalFeeIfSelling / 2;
        } else {
            proofBalance = amountETH * proofFee / totalFee;
            amountEthLiquidity = amountETH * lpFee / totalFee / 2;
        }

        uint256 amountEthMain = amountETH - proofBalance - amountEthLiquidity;

        if (amountETH > 0) {
            IFACTORY(factory).factoryRevenue{value: proofBalance}();
            (bool sent1,)=mainWallet.call{value:amountEthMain}("");
            require (sent1, "ETH transfer failed");
        }

        if (amountToLiquify > 0) {
            _allowances[address(this)][address(router)] = amountToLiquify;
            router.addLiquidityETH{value: amountEthLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                0x000000000000000000000000000000000000dEaD,
                block.timestamp 
            );
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"percentToLP","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"factory_","type":"address"},{"internalType":"address","name":"main","type":"address"},{"internalType":"address","name":"initialProofAdmin","type":"address"}],"stateMutability":"nonpayable","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":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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"initialMainFee","type":"uint256"},{"internalType":"uint256","name":"initialMainFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"initialLpFee","type":"uint256"},{"internalType":"uint256","name":"initialLpFeeOnSell","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"formatProofFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mainWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"postLaunchMaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proofAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proofFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reduceProofFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceDeployerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMainWallet","type":"address"}],"name":"setMainWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwnerWallet","type":"address"}],"name":"setOwnerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"updateProofAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600360146101000a81548160ff02191690831515021790555060026007556001601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff0219169083151502179055503480156200006757600080fd5b506040516200606d3803806200606d83398181016040528101906200008d919062000a50565b33601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506705d423c655aa0000600281905550604685101562000165576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200015c9062000b39565b60405180910390fd5b600254601581905550600254601681905550600254601781905550737a250d5630b4cf539739df2c5dacb4c659f2488d600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000243573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000269919062000b5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000318919062000b5b565b306040518363ffffffff1660e01b81526004016200033892919062000b9e565b6020604051808303816000875af115801562000358573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037e919062000b5b565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600360088190555060016009819055506006600a819055506001600b819055506008546007546009546200065d919062000bfa565b62000669919062000bfa565b600c81905550600a54600754600b5462000684919062000bfa565b62000690919062000bfa565b600d81905550600c80541115620006de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006d59062000c85565b60405180910390fd5b6011600d54111562000727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071e9062000cf7565b60405180910390fd5b83601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000606486600254620007fe919062000d19565b6200080a919062000d93565b90506000816002546200081e919062000dcb565b9050816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000870919062000bfa565b92505081905550806000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008c7919062000bfa565b925050819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516200092e919062000e17565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000996919062000e17565b60405180910390a35050505050505062000e34565b600080fd5b6000819050919050565b620009c581620009b0565b8114620009d157600080fd5b50565b600081519050620009e581620009ba565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1882620009eb565b9050919050565b62000a2a8162000a0b565b811462000a3657600080fd5b50565b60008151905062000a4a8162000a1f565b92915050565b600080600080600060a0868803121562000a6f5762000a6e620009ab565b5b600062000a7f88828901620009d4565b955050602062000a928882890162000a39565b945050604062000aa58882890162000a39565b935050606062000ab88882890162000a39565b925050608062000acb8882890162000a39565b9150509295509295909350565b600082825260208201905092915050565b7f6c6f77206c702070657263656e74000000000000000000000000000000000000600082015250565b600062000b21600e8362000ad8565b915062000b2e8262000ae9565b602082019050919050565b6000602082019050818103600083015262000b548162000b12565b9050919050565b60006020828403121562000b745762000b73620009ab565b5b600062000b848482850162000a39565b91505092915050565b62000b988162000a0b565b82525050565b600060408201905062000bb5600083018562000b8d565b62000bc4602083018462000b8d565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000c0782620009b0565b915062000c1483620009b0565b925082820190508082111562000c2f5762000c2e62000bcb565b5b92915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b600062000c6d600c8362000ad8565b915062000c7a8262000c35565b602082019050919050565b6000602082019050818103600083015262000ca08162000c5e565b9050919050565b7f546f6f20686967682073656c6c20666565000000000000000000000000000000600082015250565b600062000cdf60118362000ad8565b915062000cec8262000ca7565b602082019050919050565b6000602082019050818103600083015262000d128162000cd0565b9050919050565b600062000d2682620009b0565b915062000d3383620009b0565b925082820262000d4381620009b0565b9150828204841483151762000d5d5762000d5c62000bcb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000da082620009b0565b915062000dad83620009b0565b92508262000dc05762000dbf62000d64565b5b828204905092915050565b600062000dd882620009b0565b915062000de583620009b0565b925082820390508181111562000e005762000dff62000bcb565b5b92915050565b62000e1181620009b0565b82525050565b600060208201905062000e2e600083018462000e06565b92915050565b6152298062000e446000396000f3fe6080604052600436106103395760003560e01c8063807c2d9c116101ab578063bfd79284116100f7578063dd62ed3e11610095578063f16fd78d1161006f578063f16fd78d14610be7578063f887ea4014610c10578063fabe628314610c3b578063fbd7575314610c6457610340565b8063dd62ed3e14610b6a578063e66b1d1e14610ba7578063ef92e22214610bd057610340565b8063d0a5eb4e116100d1578063d0a5eb4e14610ac2578063d4fb9a0114610aeb578063d5f3948814610b16578063d920334e14610b4157610340565b8063bfd7928414610a2f578063ca987b0e14610a6c578063cd1e330a14610a9757610340565b8063a3e6761011610164578063a9059cbb1161013e578063a9059cbb14610975578063b515566a146109b2578063bb542ef0146109db578063bf56b37114610a0457610340565b8063a3e67610146108e2578063a457c2d71461090d578063a8aa1b311461094a57610340565b8063807c2d9c146107e45780638760d5391461080f5780638b42507f1461082657806395d89b4114610863578063985b9db01461088e578063a3a2e89e146108b957610340565b80633dab526911610285578063650c42261161022357806370a08231116101fd57806370a08231146107285780637c0ff205146107655780637d1db4a5146107905780637db1342c146107bb57610340565b8063650c4226146106bd5780636bd32389146106e6578063704ce43e146106fd57610340565b80634a74bb021161025f5780634a74bb0214610639578063546a88111461066457806359a51c341461067b5780635bd7d66c146106a657610340565b80633dab5269146105a85780633f4218e0146105d157806344de2e4c1461060e57610340565b8063220f6696116102f2578063273123b7116102cc578063273123b7146104ec5780632b112e4914610515578063313ce56714610540578063395093511461056b57610340565b8063220f66961461045957806323b62b751461048457806323b872dd146104af57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461039b5780630963da6c146103d857806318160ddd146104035780631df4ccfc1461042e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c7b565b6040516103679190613d3c565b60405180910390f35b34801561037c57600080fd5b50610385610c81565b6040516103929190613de7565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190613ea7565b610cbe565b6040516103cf9190613f02565b60405180910390f35b3480156103e457600080fd5b506103ed610ce1565b6040516103fa9190613d3c565b60405180910390f35b34801561040f57600080fd5b50610418610ce7565b6040516104259190613d3c565b60405180910390f35b34801561043a57600080fd5b50610443610cf1565b6040516104509190613d3c565b60405180910390f35b34801561046557600080fd5b5061046e610cf7565b60405161047b9190613f02565b60405180910390f35b34801561049057600080fd5b50610499610d0a565b6040516104a69190613f3e565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613f59565b610d30565b6040516104e39190613f02565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613fac565b610d60565b005b34801561052157600080fd5b5061052a610eb0565b6040516105379190613d3c565b60405180910390f35b34801561054c57600080fd5b50610555610ee3565b6040516105629190613ff5565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613ea7565b610eec565b60405161059f9190613f02565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca919061403c565b610f96565b005b3480156105dd57600080fd5b506105f860048036038101906105f39190613fac565b611052565b6040516106059190613f02565b60405180910390f35b34801561061a57600080fd5b50610623611072565b6040516106309190613f02565b60405180910390f35b34801561064557600080fd5b5061064e611085565b60405161065b9190613f02565b60405180910390f35b34801561067057600080fd5b50610679611098565b005b34801561068757600080fd5b506106906112ba565b60405161069d919061408b565b60405180910390f35b3480156106b257600080fd5b506106bb6112e0565b005b3480156106c957600080fd5b506106e460048036038101906106df91906140a6565b6113bc565b005b3480156106f257600080fd5b506106fb611546565b005b34801561070957600080fd5b50610712611621565b60405161071f9190613d3c565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190613fac565b611627565b60405161075c9190613d3c565b60405180910390f35b34801561077157600080fd5b5061077a61166f565b6040516107879190613d3c565b60405180910390f35b34801561079c57600080fd5b506107a5611675565b6040516107b29190613d3c565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061410d565b61167b565b005b3480156107f057600080fd5b506107f961181c565b6040516108069190613d3c565b60405180910390f35b34801561081b57600080fd5b50610824611822565b005b34801561083257600080fd5b5061084d60048036038101906108489190613fac565b6119d6565b60405161085a9190613f02565b60405180910390f35b34801561086f57600080fd5b506108786119f6565b6040516108859190613de7565b60405180910390f35b34801561089a57600080fd5b506108a3611a33565b6040516108b09190613d3c565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061413a565b611a39565b005b3480156108ee57600080fd5b506108f7611b2b565b604051610904919061408b565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190613ea7565b611b51565b6040516109419190613f02565b60405180910390f35b34801561095657600080fd5b5061095f611c3b565b60405161096c919061408b565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613ea7565b611c61565b6040516109a99190613f02565b60405180910390f35b3480156109be57600080fd5b506109d960048036038101906109d491906142c2565b611c85565b005b3480156109e757600080fd5b50610a0260048036038101906109fd9190614337565b611db1565b005b348015610a1057600080fd5b50610a19611e8c565b604051610a269190613d3c565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a519190613fac565b611e92565b604051610a639190613f02565b60405180910390f35b348015610a7857600080fd5b50610a81611eb2565b604051610a8e9190613d3c565b60405180910390f35b348015610aa357600080fd5b50610aac611eb8565b604051610ab99190613d3c565b60405180910390f35b348015610ace57600080fd5b50610ae96004803603810190610ae49190614337565b611ebe565b005b348015610af757600080fd5b50610b00611f99565b604051610b0d9190613f02565b60405180910390f35b348015610b2257600080fd5b50610b2b611fac565b604051610b38919061408b565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b63919061410d565b611fd2565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190614364565b612173565b604051610b9e9190613d3c565b60405180910390f35b348015610bb357600080fd5b50610bce6004803603810190610bc991906143a4565b6121fa565b005b348015610bdc57600080fd5b50610be5612346565b005b348015610bf357600080fd5b50610c0e6004803603810190610c099190613fac565b61250a565b005b348015610c1c57600080fd5b50610c256125e5565b604051610c329190614430565b60405180910390f35b348015610c4757600080fd5b50610c626004803603810190610c5d919061413a565b61260b565b005b348015610c7057600080fd5b50610c796126fd565b005b60175481565b60606040518060400160405280600981526020017f446f706520436f696e0000000000000000000000000000000000000000000000815250905090565b600080610cc961282e565b9050610cd6818585612836565b600191505092915050565b60085481565b6000600254905090565b600c5481565b601360149054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610d3b61282e565b9050610d488582856129ff565b610d53858585612a8b565b5060019150509392505050565b6000610d6a61282e565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610e155750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b906144bd565b60405180910390fd5b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610ebc6000611627565b610ec761dead611627565b600254610ed4919061450c565b610ede919061450c565b905090565b60006009905090565b600080610ef761282e565b9050610f8b818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f869190614540565b612836565b600191505092915050565b610f9e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906145c0565b60405180910390fd5b81601360156101000a81548160ff021916908315150217905550806017819055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600360149054906101000a900460ff1681565b601360159054906101000a900460ff1681565b6110a061282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690614652565b60405180910390fd5b600160046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112e861282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e906146e4565b60405180910390fd5b6103e860056002546113899190614704565b6113939190614775565b601581905550606460016002546113aa9190614704565b6113b49190614775565b601681905550565b6113c461282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906145c0565b60405180910390fd5b836008819055508160098190555082600a8190555080600b819055506008546007546009546114829190614540565b61148c9190614540565b600c81905550600a54600754600b546114a59190614540565b6114af9190614540565b600d81905550600c805411156114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906147f2565b60405180910390fd5b6011600d541115611540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611537906147f2565b60405180910390fd5b50505050565b61154e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906146e4565b60405180910390fd5b6000601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b60155481565b61168361282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906145c0565b60405180910390fd5b600060065403611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e9061485e565b60405180910390fd5b6103e860056002546117699190614704565b6117739190614775565b8110156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906148ca565b60405180910390fd5b606460036002546117c69190614704565b6117d09190614775565b811115611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614936565b60405180910390fd5b8060168190555050565b60165481565b61182a61282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614652565b60405180910390fd5b6000600754116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906149a2565b60405180910390fd5b600060065403611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061485e565b60405180910390fd5b6203f4806006546119549190614540565b421015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90614a0e565b60405180910390fd5b600754600c60008282546119aa919061450c565b92505081905550600754600d60008282546119c5919061450c565b925050819055506000600781905550565b60056020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f444f504500000000000000000000000000000000000000000000000000000000815250905090565b600a5481565b611a4161282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906145c0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611b5c61282e565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990614aa0565b60405180910390fd5b611c2f8286868403612836565b60019250505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611c6c61282e565b9050611c79818585612a8b565b50600191505092915050565b611c8d61282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614652565b60405180910390fd5b60005b8151811015611dad57600160146000848481518110611d4157611d40614ac0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611da590614aef565b915050611d1f565b5050565b611db961282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f906145c0565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b60146020528060005260406000206000915054906101000a900460ff1681565b600d5481565b60075481565b611ec661282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906145c0565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360169054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fda61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906145c0565b60405180910390fd5b6000600654036120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a59061485e565b60405180910390fd5b6103e860056002546120c09190614704565b6120ca9190614775565b81101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906148ca565b60405180910390fd5b6064600360025461211d9190614704565b6121279190614775565b811115612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614936565b60405180910390fd5b8060158190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220261282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612288906145c0565b60405180910390fd5b6000600654036122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd9061485e565b60405180910390fd5b620151806006546122e79190614540565b421015612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614a0e565b60405180910390fd5b80600360146101000a81548160ff02191690831515021790555050565b61234e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d4906145c0565b60405180910390fd5b600260075414612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614b83565b60405180910390fd5b600060065403612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e9061485e565b60405180910390fd5b6203f4806006546124789190614540565b4210156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614a0e565b60405180910390fd5b60016007819055506008546007546009546124d59190614540565b6124df9190614540565b600c81905550600a54600754600b546124f89190614540565b6125029190614540565b600d81905550565b61251261282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890614652565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61261361282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612699906145c0565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61270561282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278b906146e4565b60405180910390fd5b6103e860016002546127a69190614704565b6127b09190614775565b6015819055506103e860016002546127c89190614704565b6127d29190614775565b601681905550610fa060056002546127ea9190614704565b6127f49190614775565b601781905550612802612b71565b601360169054906101000a900460ff1615601360166101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c90614c15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290b90614ca7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f29190613d3c565b60405180910390a3505050565b6000612a0b8484612173565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a855781811015612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614d13565b60405180910390fd5b612a848484848403612836565b5b50505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b2e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b455750601360149054906101000a900460ff165b15612b5c57612b55848484612bbf565b9050612b6a565b612b67848484612d49565b90505b9392505050565b600060065414612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bad90614d7f565b60405180910390fd5b42600681905550565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0b919061450c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c979190614540565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d369190613d3c565b60405180910390a3600190509392505050565b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612def5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612df857600080fd5b601360169054906101000a900460ff16612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90614deb565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ead5750600360149054906101000a900460ff165b15612f4c5760155482111580612f0c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4290614e57565b60405180910390fd5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fb25750600360149054906101000a900460ff165b801561300c5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156130a057601654826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9190614540565b111561309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309690614ec3565b60405180910390fd5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561310b5750601360149054906101000a900460ff16155b80156131235750601360159054906101000a900460ff165b801561316f57506017546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561317d5761317c613476565b5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c7919061450c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000829050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806132b75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561337957600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133605750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61336a5782613376565b613375858585613b99565b5b90505b806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c39190614540565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134629190613d3c565b60405180910390a360019150509392505050565b6001601360146101000a81548160ff02191690831515021790555060008060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060006002600c5411613511576002600d54600b54866134f69190614704565b6135009190614775565b61350a9190614775565b925061353b565b6002600c54600954866135249190614704565b61352e9190614775565b6135389190614775565b92505b60008385613549919061450c565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561360b5761360a61417f565b5b6040519080825280602002602001820160405280156136395781602001602082028036833780820191505090505b509050308160008151811061365157613650614ac0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371c9190614ef8565b816001815181106137305761372f614ac0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137ce95949392919061501e565b600060405180830381600087803b1580156137e857600080fd5b505af11580156137fc573d6000803e3d6000fd5b5050505060004790506002600c541161385a57600d54600754826138209190614704565b61382a9190614775565b94506002600d54600b548361383f9190614704565b6138499190614775565b6138539190614775565b93506138a1565b600c546007548261386b9190614704565b6138759190614775565b94506002600c546009548361388a9190614704565b6138949190614775565b61389e9190614775565b93505b60008486836138b0919061450c565b6138ba919061450c565b90506000821115613a1857601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ee25ae4876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561392f57600080fd5b505af1158015613943573d6000803e3d6000fd5b50505050506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613990906150a9565b60006040518083038185875af1925050503d80600081146139cd576040519150601f19603f3d011682016040523d82523d6000602084013e6139d2565b606091505b5050905080613a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0d9061510a565b60405180910390fd5b505b6000871115613b745786600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308a60008061dead426040518863ffffffff1660e01b8152600401613b2d9695949392919061512a565b60606040518083038185885af1158015613b4b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7091906151a0565b5050505b50505050505050506000601360146101000a81548160ff021916908315150217905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613bf957600c54613bfd565b600d545b9050600060648285613c0f9190614704565b613c199190614775565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c659190614540565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d049190613d3c565b60405180910390a38084613d18919061450c565b925050509392505050565b6000819050919050565b613d3681613d23565b82525050565b6000602082019050613d516000830184613d2d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d91578082015181840152602081019050613d76565b60008484015250505050565b6000601f19601f8301169050919050565b6000613db982613d57565b613dc38185613d62565b9350613dd3818560208601613d73565b613ddc81613d9d565b840191505092915050565b60006020820190508181036000830152613e018184613dae565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4882613e1d565b9050919050565b613e5881613e3d565b8114613e6357600080fd5b50565b600081359050613e7581613e4f565b92915050565b613e8481613d23565b8114613e8f57600080fd5b50565b600081359050613ea181613e7b565b92915050565b60008060408385031215613ebe57613ebd613e13565b5b6000613ecc85828601613e66565b9250506020613edd85828601613e92565b9150509250929050565b60008115159050919050565b613efc81613ee7565b82525050565b6000602082019050613f176000830184613ef3565b92915050565b6000613f2882613e1d565b9050919050565b613f3881613f1d565b82525050565b6000602082019050613f536000830184613f2f565b92915050565b600080600060608486031215613f7257613f71613e13565b5b6000613f8086828701613e66565b9350506020613f9186828701613e66565b9250506040613fa286828701613e92565b9150509250925092565b600060208284031215613fc257613fc1613e13565b5b6000613fd084828501613e66565b91505092915050565b600060ff82169050919050565b613fef81613fd9565b82525050565b600060208201905061400a6000830184613fe6565b92915050565b61401981613ee7565b811461402457600080fd5b50565b60008135905061403681614010565b92915050565b6000806040838503121561405357614052613e13565b5b600061406185828601614027565b925050602061407285828601613e92565b9150509250929050565b61408581613e3d565b82525050565b60006020820190506140a0600083018461407c565b92915050565b600080600080608085870312156140c0576140bf613e13565b5b60006140ce87828801613e92565b94505060206140df87828801613e92565b93505060406140f087828801613e92565b925050606061410187828801613e92565b91505092959194509250565b60006020828403121561412357614122613e13565b5b600061413184828501613e92565b91505092915050565b6000806040838503121561415157614150613e13565b5b600061415f85828601613e66565b925050602061417085828601614027565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141b782613d9d565b810181811067ffffffffffffffff821117156141d6576141d561417f565b5b80604052505050565b60006141e9613e09565b90506141f582826141ae565b919050565b600067ffffffffffffffff8211156142155761421461417f565b5b602082029050602081019050919050565b600080fd5b600061423e614239846141fa565b6141df565b9050808382526020820190506020840283018581111561426157614260614226565b5b835b8181101561428a57806142768882613e66565b845260208401935050602081019050614263565b5050509392505050565b600082601f8301126142a9576142a861417a565b5b81356142b984826020860161422b565b91505092915050565b6000602082840312156142d8576142d7613e13565b5b600082013567ffffffffffffffff8111156142f6576142f5613e18565b5b61430284828501614294565b91505092915050565b61431481613f1d565b811461431f57600080fd5b50565b6000813590506143318161430b565b92915050565b60006020828403121561434d5761434c613e13565b5b600061435b84828501614322565b91505092915050565b6000806040838503121561437b5761437a613e13565b5b600061438985828601613e66565b925050602061439a85828601613e66565b9150509250929050565b6000602082840312156143ba576143b9613e13565b5b60006143c884828501614027565b91505092915050565b6000819050919050565b60006143f66143f16143ec84613e1d565b6143d1565b613e1d565b9050919050565b6000614408826143db565b9050919050565b600061441a826143fd565b9050919050565b61442a8161440f565b82525050565b60006020820190506144456000830184614421565b92915050565b7f4f77616e626c653a2063616c6c657220646f65736e277420686176652070657260008201527f6d697373696f6e00000000000000000000000000000000000000000000000000602082015250565b60006144a7602783613d62565b91506144b28261444b565b604082019050919050565b600060208201905081810360008301526144d68161449a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061451782613d23565b915061452283613d23565b925082820390508181111561453a576145396144dd565b5b92915050565b600061454b82613d23565b915061455683613d23565b925082820190508082111561456e5761456d6144dd565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145aa602083613d62565b91506145b582614574565b602082019050919050565b600060208201905081810360008301526145d98161459d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660008201527f41646d696e000000000000000000000000000000000000000000000000000000602082015250565b600061463c602583613d62565b9150614647826145e0565b604082019050919050565b6000602082019050818103600083015261466b8161462f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206465706c6f60008201527f7965720000000000000000000000000000000000000000000000000000000000602082015250565b60006146ce602383613d62565b91506146d982614672565b604082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b600061470f82613d23565b915061471a83613d23565b925082820261472881613d23565b9150828204841483151761473f5761473e6144dd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061478082613d23565b915061478b83613d23565b92508261479b5761479a614746565b5b828204905092915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b60006147dc600c83613d62565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f216c61756e636865640000000000000000000000000000000000000000000000600082015250565b6000614848600983613d62565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f4d6d696e20302e3525206c696d69740000000000000000000000000000000000600082015250565b60006148b4600f83613d62565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f4d6178203325206c696d69740000000000000000000000000000000000000000600082015250565b6000614920600c83613d62565b915061492b826148ea565b602082019050919050565b6000602082019050818103600083015261494f81614913565b9050919050565b7f616c726561647920726564756365640000000000000000000000000000000000600082015250565b600061498c600f83613d62565b915061499782614956565b602082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f746f6f20736f6f6e000000000000000000000000000000000000000000000000600082015250565b60006149f8600883613d62565b9150614a03826149c2565b602082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a8a602583613d62565b9150614a9582614a2e565b604082019050919050565b60006020820190508181036000830152614ab981614a7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614afa82613d23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b2c57614b2b6144dd565b5b600182019050919050565b7f21616c7265616479207265647563656400000000000000000000000000000000600082015250565b6000614b6d601083613d62565b9150614b7882614b37565b602082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bff602483613d62565b9150614c0a82614ba3565b604082019050919050565b60006020820190508181036000830152614c2e81614bf2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c91602283613d62565b9150614c9c82614c35565b604082019050919050565b60006020820190508181036000830152614cc081614c84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cfd601d83613d62565b9150614d0882614cc7565b602082019050919050565b60006020820190508181036000830152614d2c81614cf0565b9050919050565b7f616c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614d69601083613d62565b9150614d7482614d33565b602082019050919050565b60006020820190508181036000830152614d9881614d5c565b9050919050565b7f54726164696e6720436c6f736564000000000000000000000000000000000000600082015250565b6000614dd5600e83613d62565b9150614de082614d9f565b602082019050919050565b60006020820190508181036000830152614e0481614dc8565b9050919050565b7f4d617820545820416d6f756e7400000000000000000000000000000000000000600082015250565b6000614e41600d83613d62565b9150614e4c82614e0b565b602082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b7f4d61782057616c6c657420416d6f756e74000000000000000000000000000000600082015250565b6000614ead601183613d62565b9150614eb882614e77565b602082019050919050565b60006020820190508181036000830152614edc81614ea0565b9050919050565b600081519050614ef281613e4f565b92915050565b600060208284031215614f0e57614f0d613e13565b5b6000614f1c84828501614ee3565b91505092915050565b6000819050919050565b6000614f4a614f45614f4084614f25565b6143d1565b613d23565b9050919050565b614f5a81614f2f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f9581613e3d565b82525050565b6000614fa78383614f8c565b60208301905092915050565b6000602082019050919050565b6000614fcb82614f60565b614fd58185614f6b565b9350614fe083614f7c565b8060005b83811015615011578151614ff88882614f9b565b975061500383614fb3565b925050600181019050614fe4565b5085935050505092915050565b600060a0820190506150336000830188613d2d565b6150406020830187614f51565b81810360408301526150528186614fc0565b9050615061606083018561407c565b61506e6080830184613d2d565b9695505050505050565b600081905092915050565b50565b6000615093600083615078565b915061509e82615083565b600082019050919050565b60006150b482615086565b9150819050919050565b7f455448207472616e73666572206661696c656400000000000000000000000000600082015250565b60006150f4601383613d62565b91506150ff826150be565b602082019050919050565b60006020820190508181036000830152615123816150e7565b9050919050565b600060c08201905061513f600083018961407c565b61514c6020830188613d2d565b6151596040830187614f51565b6151666060830186614f51565b615173608083018561407c565b61518060a0830184613d2d565b979650505050505050565b60008151905061519a81613e7b565b92915050565b6000806000606084860312156151b9576151b8613e13565b5b60006151c78682870161518b565b93505060206151d88682870161518b565b92505060406151e98682870161518b565b915050925092509256fea2646970667358221220cb6ee584d0f29733d6115f5ed29937e29b4dad74b30c2139ade4f53b812f29f564736f6c634300081100330000000000000000000000000000000000000000000000000000000000000050000000000000000000000000024a4338a6e712323dcf269b478a1182feb2f3b300000000000000000000000079f5611fa5ff7ddb7bc5bb9008543d45aa0174ef00000000000000000000000092f8be8b54b2223196298710253b12c92b242bf9000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09

Deployed Bytecode

0x6080604052600436106103395760003560e01c8063807c2d9c116101ab578063bfd79284116100f7578063dd62ed3e11610095578063f16fd78d1161006f578063f16fd78d14610be7578063f887ea4014610c10578063fabe628314610c3b578063fbd7575314610c6457610340565b8063dd62ed3e14610b6a578063e66b1d1e14610ba7578063ef92e22214610bd057610340565b8063d0a5eb4e116100d1578063d0a5eb4e14610ac2578063d4fb9a0114610aeb578063d5f3948814610b16578063d920334e14610b4157610340565b8063bfd7928414610a2f578063ca987b0e14610a6c578063cd1e330a14610a9757610340565b8063a3e6761011610164578063a9059cbb1161013e578063a9059cbb14610975578063b515566a146109b2578063bb542ef0146109db578063bf56b37114610a0457610340565b8063a3e67610146108e2578063a457c2d71461090d578063a8aa1b311461094a57610340565b8063807c2d9c146107e45780638760d5391461080f5780638b42507f1461082657806395d89b4114610863578063985b9db01461088e578063a3a2e89e146108b957610340565b80633dab526911610285578063650c42261161022357806370a08231116101fd57806370a08231146107285780637c0ff205146107655780637d1db4a5146107905780637db1342c146107bb57610340565b8063650c4226146106bd5780636bd32389146106e6578063704ce43e146106fd57610340565b80634a74bb021161025f5780634a74bb0214610639578063546a88111461066457806359a51c341461067b5780635bd7d66c146106a657610340565b80633dab5269146105a85780633f4218e0146105d157806344de2e4c1461060e57610340565b8063220f6696116102f2578063273123b7116102cc578063273123b7146104ec5780632b112e4914610515578063313ce56714610540578063395093511461056b57610340565b8063220f66961461045957806323b62b751461048457806323b872dd146104af57610340565b80630445b6671461034557806306fdde0314610370578063095ea7b31461039b5780630963da6c146103d857806318160ddd146104035780631df4ccfc1461042e57610340565b3661034057005b600080fd5b34801561035157600080fd5b5061035a610c7b565b6040516103679190613d3c565b60405180910390f35b34801561037c57600080fd5b50610385610c81565b6040516103929190613de7565b60405180910390f35b3480156103a757600080fd5b506103c260048036038101906103bd9190613ea7565b610cbe565b6040516103cf9190613f02565b60405180910390f35b3480156103e457600080fd5b506103ed610ce1565b6040516103fa9190613d3c565b60405180910390f35b34801561040f57600080fd5b50610418610ce7565b6040516104259190613d3c565b60405180910390f35b34801561043a57600080fd5b50610443610cf1565b6040516104509190613d3c565b60405180910390f35b34801561046557600080fd5b5061046e610cf7565b60405161047b9190613f02565b60405180910390f35b34801561049057600080fd5b50610499610d0a565b6040516104a69190613f3e565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d19190613f59565b610d30565b6040516104e39190613f02565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190613fac565b610d60565b005b34801561052157600080fd5b5061052a610eb0565b6040516105379190613d3c565b60405180910390f35b34801561054c57600080fd5b50610555610ee3565b6040516105629190613ff5565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190613ea7565b610eec565b60405161059f9190613f02565b60405180910390f35b3480156105b457600080fd5b506105cf60048036038101906105ca919061403c565b610f96565b005b3480156105dd57600080fd5b506105f860048036038101906105f39190613fac565b611052565b6040516106059190613f02565b60405180910390f35b34801561061a57600080fd5b50610623611072565b6040516106309190613f02565b60405180910390f35b34801561064557600080fd5b5061064e611085565b60405161065b9190613f02565b60405180910390f35b34801561067057600080fd5b50610679611098565b005b34801561068757600080fd5b506106906112ba565b60405161069d919061408b565b60405180910390f35b3480156106b257600080fd5b506106bb6112e0565b005b3480156106c957600080fd5b506106e460048036038101906106df91906140a6565b6113bc565b005b3480156106f257600080fd5b506106fb611546565b005b34801561070957600080fd5b50610712611621565b60405161071f9190613d3c565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190613fac565b611627565b60405161075c9190613d3c565b60405180910390f35b34801561077157600080fd5b5061077a61166f565b6040516107879190613d3c565b60405180910390f35b34801561079c57600080fd5b506107a5611675565b6040516107b29190613d3c565b60405180910390f35b3480156107c757600080fd5b506107e260048036038101906107dd919061410d565b61167b565b005b3480156107f057600080fd5b506107f961181c565b6040516108069190613d3c565b60405180910390f35b34801561081b57600080fd5b50610824611822565b005b34801561083257600080fd5b5061084d60048036038101906108489190613fac565b6119d6565b60405161085a9190613f02565b60405180910390f35b34801561086f57600080fd5b506108786119f6565b6040516108859190613de7565b60405180910390f35b34801561089a57600080fd5b506108a3611a33565b6040516108b09190613d3c565b60405180910390f35b3480156108c557600080fd5b506108e060048036038101906108db919061413a565b611a39565b005b3480156108ee57600080fd5b506108f7611b2b565b604051610904919061408b565b60405180910390f35b34801561091957600080fd5b50610934600480360381019061092f9190613ea7565b611b51565b6040516109419190613f02565b60405180910390f35b34801561095657600080fd5b5061095f611c3b565b60405161096c919061408b565b60405180910390f35b34801561098157600080fd5b5061099c60048036038101906109979190613ea7565b611c61565b6040516109a99190613f02565b60405180910390f35b3480156109be57600080fd5b506109d960048036038101906109d491906142c2565b611c85565b005b3480156109e757600080fd5b50610a0260048036038101906109fd9190614337565b611db1565b005b348015610a1057600080fd5b50610a19611e8c565b604051610a269190613d3c565b60405180910390f35b348015610a3b57600080fd5b50610a566004803603810190610a519190613fac565b611e92565b604051610a639190613f02565b60405180910390f35b348015610a7857600080fd5b50610a81611eb2565b604051610a8e9190613d3c565b60405180910390f35b348015610aa357600080fd5b50610aac611eb8565b604051610ab99190613d3c565b60405180910390f35b348015610ace57600080fd5b50610ae96004803603810190610ae49190614337565b611ebe565b005b348015610af757600080fd5b50610b00611f99565b604051610b0d9190613f02565b60405180910390f35b348015610b2257600080fd5b50610b2b611fac565b604051610b38919061408b565b60405180910390f35b348015610b4d57600080fd5b50610b686004803603810190610b63919061410d565b611fd2565b005b348015610b7657600080fd5b50610b916004803603810190610b8c9190614364565b612173565b604051610b9e9190613d3c565b60405180910390f35b348015610bb357600080fd5b50610bce6004803603810190610bc991906143a4565b6121fa565b005b348015610bdc57600080fd5b50610be5612346565b005b348015610bf357600080fd5b50610c0e6004803603810190610c099190613fac565b61250a565b005b348015610c1c57600080fd5b50610c256125e5565b604051610c329190614430565b60405180910390f35b348015610c4757600080fd5b50610c626004803603810190610c5d919061413a565b61260b565b005b348015610c7057600080fd5b50610c796126fd565b005b60175481565b60606040518060400160405280600981526020017f446f706520436f696e0000000000000000000000000000000000000000000000815250905090565b600080610cc961282e565b9050610cd6818585612836565b600191505092915050565b60085481565b6000600254905090565b600c5481565b601360149054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080610d3b61282e565b9050610d488582856129ff565b610d53858585612a8b565b5060019150509392505050565b6000610d6a61282e565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480610e155750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b906144bd565b60405180910390fd5b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610ebc6000611627565b610ec761dead611627565b600254610ed4919061450c565b610ede919061450c565b905090565b60006009905090565b600080610ef761282e565b9050610f8b818585600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f869190614540565b612836565b600191505092915050565b610f9e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461102d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611024906145c0565b60405180910390fd5b81601360156101000a81548160ff021916908315150217905550806017819055505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600360149054906101000a900460ff1681565b601360159054906101000a900460ff1681565b6110a061282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112690614652565b60405180910390fd5b600160046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112e861282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e906146e4565b60405180910390fd5b6103e860056002546113899190614704565b6113939190614775565b601581905550606460016002546113aa9190614704565b6113b49190614775565b601681905550565b6113c461282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a906145c0565b60405180910390fd5b836008819055508160098190555082600a8190555080600b819055506008546007546009546114829190614540565b61148c9190614540565b600c81905550600a54600754600b546114a59190614540565b6114af9190614540565b600d81905550600c805411156114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f1906147f2565b60405180910390fd5b6011600d541115611540576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611537906147f2565b60405180910390fd5b50505050565b61154e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d4906146e4565b60405180910390fd5b6000601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60095481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b5481565b60155481565b61168361282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611709906145c0565b60405180910390fd5b600060065403611757576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174e9061485e565b60405180910390fd5b6103e860056002546117699190614704565b6117739190614775565b8110156117b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ac906148ca565b60405180910390fd5b606460036002546117c69190614704565b6117d09190614775565b811115611812576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180990614936565b60405180910390fd5b8060168190555050565b60165481565b61182a61282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b090614652565b60405180910390fd5b6000600754116118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f5906149a2565b60405180910390fd5b600060065403611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a9061485e565b60405180910390fd5b6203f4806006546119549190614540565b421015611996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198d90614a0e565b60405180910390fd5b600754600c60008282546119aa919061450c565b92505081905550600754600d60008282546119c5919061450c565b925050819055506000600781905550565b60056020528060005260406000206000915054906101000a900460ff1681565b60606040518060400160405280600481526020017f444f504500000000000000000000000000000000000000000000000000000000815250905090565b600a5481565b611a4161282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac7906145c0565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611b5c61282e565b90506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905083811015611c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1990614aa0565b60405180910390fd5b611c2f8286868403612836565b60019250505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080611c6c61282e565b9050611c79818585612a8b565b50600191505092915050565b611c8d61282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1390614652565b60405180910390fd5b60005b8151811015611dad57600160146000848481518110611d4157611d40614ac0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611da590614aef565b915050611d1f565b5050565b611db961282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3f906145c0565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60065481565b60146020528060005260406000206000915054906101000a900460ff1681565b600d5481565b60075481565b611ec661282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c906145c0565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601360169054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611fda61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612069576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612060906145c0565b60405180910390fd5b6000600654036120ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a59061485e565b60405180910390fd5b6103e860056002546120c09190614704565b6120ca9190614775565b81101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906148ca565b60405180910390fd5b6064600360025461211d9190614704565b6121279190614775565b811115612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216090614936565b60405180910390fd5b8060158190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61220261282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612288906145c0565b60405180910390fd5b6000600654036122d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cd9061485e565b60405180910390fd5b620151806006546122e79190614540565b421015612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232090614a0e565b60405180910390fd5b80600360146101000a81548160ff02191690831515021790555050565b61234e61282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d4906145c0565b60405180910390fd5b600260075414612422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241990614b83565b60405180910390fd5b600060065403612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e9061485e565b60405180910390fd5b6203f4806006546124789190614540565b4210156124ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b190614a0e565b60405180910390fd5b60016007819055506008546007546009546124d59190614540565b6124df9190614540565b600c81905550600a54600754600b546124f89190614540565b6125029190614540565b600d81905550565b61251261282e565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259890614652565b60405180910390fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61261361282e565b73ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612699906145c0565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b61270561282e565b73ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612794576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278b906146e4565b60405180910390fd5b6103e860016002546127a69190614704565b6127b09190614775565b6015819055506103e860016002546127c89190614704565b6127d29190614775565b601681905550610fa060056002546127ea9190614704565b6127f49190614775565b601781905550612802612b71565b601360169054906101000a900460ff1615601360166101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036128a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289c90614c15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612914576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290b90614ca7565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516129f29190613d3c565b60405180910390a3505050565b6000612a0b8484612173565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612a855781811015612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614d13565b60405180910390fd5b612a848484848403612836565b5b50505050565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b2e5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b455750601360149054906101000a900460ff165b15612b5c57612b55848484612bbf565b9050612b6a565b612b67848484612d49565b90505b9392505050565b600060065414612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bad90614d7f565b60405180910390fd5b42600681905550565b6000816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c0b919061450c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c979190614540565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d369190613d3c565b60405180910390a3600190509392505050565b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612def5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612df857600080fd5b601360169054906101000a900460ff16612e47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e3e90614deb565b60405180910390fd5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612ead5750600360149054906101000a900460ff165b15612f4c5760155482111580612f0c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612f4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4290614e57565b60405180910390fd5b5b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fb25750600360149054906101000a900460ff165b801561300c5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156130a057601654826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461305e9190614540565b111561309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309690614ec3565b60405180910390fd5b5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561310b5750601360149054906101000a900460ff16155b80156131235750601360159054906101000a900460ff165b801561316f57506017546000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561317d5761317c613476565b5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131c7919061450c565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000829050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806132b75750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561337957600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133605750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61336a5782613376565b613375858585613b99565b5b90505b806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133c39190614540565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516134629190613d3c565b60405180910390a360019150509392505050565b6001601360146101000a81548160ff02191690831515021790555060008060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008060006002600c5411613511576002600d54600b54866134f69190614704565b6135009190614775565b61350a9190614775565b925061353b565b6002600c54600954866135249190614704565b61352e9190614775565b6135389190614775565b92505b60008385613549919061450c565b905080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561360b5761360a61417f565b5b6040519080825280602002602001820160405280156136395781602001602082028036833780820191505090505b509050308160008151811061365157613650614ac0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156136f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371c9190614ef8565b816001815181106137305761372f614ac0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016137ce95949392919061501e565b600060405180830381600087803b1580156137e857600080fd5b505af11580156137fc573d6000803e3d6000fd5b5050505060004790506002600c541161385a57600d54600754826138209190614704565b61382a9190614775565b94506002600d54600b548361383f9190614704565b6138499190614775565b6138539190614775565b93506138a1565b600c546007548261386b9190614704565b6138759190614775565b94506002600c546009548361388a9190614704565b6138949190614775565b61389e9190614775565b93505b60008486836138b0919061450c565b6138ba919061450c565b90506000821115613a1857601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639ee25ae4876040518263ffffffff1660e01b81526004016000604051808303818588803b15801561392f57600080fd5b505af1158015613943573d6000803e3d6000fd5b50505050506000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613990906150a9565b60006040518083038185875af1925050503d80600081146139cd576040519150601f19603f3d011682016040523d82523d6000602084013e6139d2565b606091505b5050905080613a16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a0d9061510a565b60405180910390fd5b505b6000871115613b745786600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308a60008061dead426040518863ffffffff1660e01b8152600401613b2d9695949392919061512a565b60606040518083038185885af1158015613b4b573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613b7091906151a0565b5050505b50505050505050506000601360146101000a81548160ff021916908315150217905550565b6000808373ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613bf957600c54613bfd565b600d545b9050600060648285613c0f9190614704565b613c199190614775565b9050806000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c659190614540565b6000803073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d049190613d3c565b60405180910390a38084613d18919061450c565b925050509392505050565b6000819050919050565b613d3681613d23565b82525050565b6000602082019050613d516000830184613d2d565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613d91578082015181840152602081019050613d76565b60008484015250505050565b6000601f19601f8301169050919050565b6000613db982613d57565b613dc38185613d62565b9350613dd3818560208601613d73565b613ddc81613d9d565b840191505092915050565b60006020820190508181036000830152613e018184613dae565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613e4882613e1d565b9050919050565b613e5881613e3d565b8114613e6357600080fd5b50565b600081359050613e7581613e4f565b92915050565b613e8481613d23565b8114613e8f57600080fd5b50565b600081359050613ea181613e7b565b92915050565b60008060408385031215613ebe57613ebd613e13565b5b6000613ecc85828601613e66565b9250506020613edd85828601613e92565b9150509250929050565b60008115159050919050565b613efc81613ee7565b82525050565b6000602082019050613f176000830184613ef3565b92915050565b6000613f2882613e1d565b9050919050565b613f3881613f1d565b82525050565b6000602082019050613f536000830184613f2f565b92915050565b600080600060608486031215613f7257613f71613e13565b5b6000613f8086828701613e66565b9350506020613f9186828701613e66565b9250506040613fa286828701613e92565b9150509250925092565b600060208284031215613fc257613fc1613e13565b5b6000613fd084828501613e66565b91505092915050565b600060ff82169050919050565b613fef81613fd9565b82525050565b600060208201905061400a6000830184613fe6565b92915050565b61401981613ee7565b811461402457600080fd5b50565b60008135905061403681614010565b92915050565b6000806040838503121561405357614052613e13565b5b600061406185828601614027565b925050602061407285828601613e92565b9150509250929050565b61408581613e3d565b82525050565b60006020820190506140a0600083018461407c565b92915050565b600080600080608085870312156140c0576140bf613e13565b5b60006140ce87828801613e92565b94505060206140df87828801613e92565b93505060406140f087828801613e92565b925050606061410187828801613e92565b91505092959194509250565b60006020828403121561412357614122613e13565b5b600061413184828501613e92565b91505092915050565b6000806040838503121561415157614150613e13565b5b600061415f85828601613e66565b925050602061417085828601614027565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6141b782613d9d565b810181811067ffffffffffffffff821117156141d6576141d561417f565b5b80604052505050565b60006141e9613e09565b90506141f582826141ae565b919050565b600067ffffffffffffffff8211156142155761421461417f565b5b602082029050602081019050919050565b600080fd5b600061423e614239846141fa565b6141df565b9050808382526020820190506020840283018581111561426157614260614226565b5b835b8181101561428a57806142768882613e66565b845260208401935050602081019050614263565b5050509392505050565b600082601f8301126142a9576142a861417a565b5b81356142b984826020860161422b565b91505092915050565b6000602082840312156142d8576142d7613e13565b5b600082013567ffffffffffffffff8111156142f6576142f5613e18565b5b61430284828501614294565b91505092915050565b61431481613f1d565b811461431f57600080fd5b50565b6000813590506143318161430b565b92915050565b60006020828403121561434d5761434c613e13565b5b600061435b84828501614322565b91505092915050565b6000806040838503121561437b5761437a613e13565b5b600061438985828601613e66565b925050602061439a85828601613e66565b9150509250929050565b6000602082840312156143ba576143b9613e13565b5b60006143c884828501614027565b91505092915050565b6000819050919050565b60006143f66143f16143ec84613e1d565b6143d1565b613e1d565b9050919050565b6000614408826143db565b9050919050565b600061441a826143fd565b9050919050565b61442a8161440f565b82525050565b60006020820190506144456000830184614421565b92915050565b7f4f77616e626c653a2063616c6c657220646f65736e277420686176652070657260008201527f6d697373696f6e00000000000000000000000000000000000000000000000000602082015250565b60006144a7602783613d62565b91506144b28261444b565b604082019050919050565b600060208201905081810360008301526144d68161449a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061451782613d23565b915061452283613d23565b925082820390508181111561453a576145396144dd565b5b92915050565b600061454b82613d23565b915061455683613d23565b925082820190508082111561456e5761456d6144dd565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006145aa602083613d62565b91506145b582614574565b602082019050919050565b600060208201905081810360008301526145d98161459d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f74207468652070726f6f6660008201527f41646d696e000000000000000000000000000000000000000000000000000000602082015250565b600061463c602583613d62565b9150614647826145e0565b604082019050919050565b6000602082019050818103600083015261466b8161462f565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206465706c6f60008201527f7965720000000000000000000000000000000000000000000000000000000000602082015250565b60006146ce602383613d62565b91506146d982614672565b604082019050919050565b600060208201905081810360008301526146fd816146c1565b9050919050565b600061470f82613d23565b915061471a83613d23565b925082820261472881613d23565b9150828204841483151761473f5761473e6144dd565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061478082613d23565b915061478b83613d23565b92508261479b5761479a614746565b5b828204905092915050565b7f546f6f2068696768206665650000000000000000000000000000000000000000600082015250565b60006147dc600c83613d62565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f216c61756e636865640000000000000000000000000000000000000000000000600082015250565b6000614848600983613d62565b915061485382614812565b602082019050919050565b600060208201905081810360008301526148778161483b565b9050919050565b7f4d6d696e20302e3525206c696d69740000000000000000000000000000000000600082015250565b60006148b4600f83613d62565b91506148bf8261487e565b602082019050919050565b600060208201905081810360008301526148e3816148a7565b9050919050565b7f4d6178203325206c696d69740000000000000000000000000000000000000000600082015250565b6000614920600c83613d62565b915061492b826148ea565b602082019050919050565b6000602082019050818103600083015261494f81614913565b9050919050565b7f616c726561647920726564756365640000000000000000000000000000000000600082015250565b600061498c600f83613d62565b915061499782614956565b602082019050919050565b600060208201905081810360008301526149bb8161497f565b9050919050565b7f746f6f20736f6f6e000000000000000000000000000000000000000000000000600082015250565b60006149f8600883613d62565b9150614a03826149c2565b602082019050919050565b60006020820190508181036000830152614a27816149eb565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000614a8a602583613d62565b9150614a9582614a2e565b604082019050919050565b60006020820190508181036000830152614ab981614a7d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614afa82613d23565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614b2c57614b2b6144dd565b5b600182019050919050565b7f21616c7265616479207265647563656400000000000000000000000000000000600082015250565b6000614b6d601083613d62565b9150614b7882614b37565b602082019050919050565b60006020820190508181036000830152614b9c81614b60565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614bff602483613d62565b9150614c0a82614ba3565b604082019050919050565b60006020820190508181036000830152614c2e81614bf2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c91602283613d62565b9150614c9c82614c35565b604082019050919050565b60006020820190508181036000830152614cc081614c84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614cfd601d83613d62565b9150614d0882614cc7565b602082019050919050565b60006020820190508181036000830152614d2c81614cf0565b9050919050565b7f616c7265616479206c61756e6368656400000000000000000000000000000000600082015250565b6000614d69601083613d62565b9150614d7482614d33565b602082019050919050565b60006020820190508181036000830152614d9881614d5c565b9050919050565b7f54726164696e6720436c6f736564000000000000000000000000000000000000600082015250565b6000614dd5600e83613d62565b9150614de082614d9f565b602082019050919050565b60006020820190508181036000830152614e0481614dc8565b9050919050565b7f4d617820545820416d6f756e7400000000000000000000000000000000000000600082015250565b6000614e41600d83613d62565b9150614e4c82614e0b565b602082019050919050565b60006020820190508181036000830152614e7081614e34565b9050919050565b7f4d61782057616c6c657420416d6f756e74000000000000000000000000000000600082015250565b6000614ead601183613d62565b9150614eb882614e77565b602082019050919050565b60006020820190508181036000830152614edc81614ea0565b9050919050565b600081519050614ef281613e4f565b92915050565b600060208284031215614f0e57614f0d613e13565b5b6000614f1c84828501614ee3565b91505092915050565b6000819050919050565b6000614f4a614f45614f4084614f25565b6143d1565b613d23565b9050919050565b614f5a81614f2f565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f9581613e3d565b82525050565b6000614fa78383614f8c565b60208301905092915050565b6000602082019050919050565b6000614fcb82614f60565b614fd58185614f6b565b9350614fe083614f7c565b8060005b83811015615011578151614ff88882614f9b565b975061500383614fb3565b925050600181019050614fe4565b5085935050505092915050565b600060a0820190506150336000830188613d2d565b6150406020830187614f51565b81810360408301526150528186614fc0565b9050615061606083018561407c565b61506e6080830184613d2d565b9695505050505050565b600081905092915050565b50565b6000615093600083615078565b915061509e82615083565b600082019050919050565b60006150b482615086565b9150819050919050565b7f455448207472616e73666572206661696c656400000000000000000000000000600082015250565b60006150f4601383613d62565b91506150ff826150be565b602082019050919050565b60006020820190508181036000830152615123816150e7565b9050919050565b600060c08201905061513f600083018961407c565b61514c6020830188613d2d565b6151596040830187614f51565b6151666060830186614f51565b615173608083018561407c565b61518060a0830184613d2d565b979650505050505050565b60008151905061519a81613e7b565b92915050565b6000806000606084860312156151b9576151b8613e13565b5b60006151c78682870161518b565b93505060206151d88682870161518b565b92505060406151e98682870161518b565b915050925092509256fea2646970667358221220cb6ee584d0f29733d6115f5ed29937e29b4dad74b30c2139ade4f53b812f29f564736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000050000000000000000000000000024a4338a6e712323dcf269b478a1182feb2f3b300000000000000000000000079f5611fa5ff7ddb7bc5bb9008543d45aa0174ef00000000000000000000000092f8be8b54b2223196298710253b12c92b242bf9000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09

-----Decoded View---------------
Arg [0] : percentToLP (uint256): 80
Arg [1] : owner (address): 0x024A4338A6E712323DcF269B478a1182fEb2F3B3
Arg [2] : factory_ (address): 0x79f5611fa5FF7DDb7bc5BB9008543D45Aa0174Ef
Arg [3] : main (address): 0x92F8BE8b54B2223196298710253b12C92B242Bf9
Arg [4] : initialProofAdmin (address): 0xacfB878960bcda38782d854eFB2E687b57E31f09

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000050
Arg [1] : 000000000000000000000000024a4338a6e712323dcf269b478a1182feb2f3b3
Arg [2] : 00000000000000000000000079f5611fa5ff7ddb7bc5bb9008543d45aa0174ef
Arg [3] : 00000000000000000000000092f8be8b54b2223196298710253b12c92b242bf9
Arg [4] : 000000000000000000000000acfb878960bcda38782d854efb2e687b57e31f09


Deployed Bytecode Sourcemap

8193:17591:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9669:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16712:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17780:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9036:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17032:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9164:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9434:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9392:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18032:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16330:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16566:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16932:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18335:274;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16099:223;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8862:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8820:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9469:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13146:227;;;;;;;;;;;;;:::i;:::-;;8786:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12735:156;;;;;;;;;;;;;:::i;:::-;;13404:581;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12899:95;;;;;;;;;;;;;:::i;:::-;;9065:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17148:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9129:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9603:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14299:300;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9637:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15510:326;;;;;;;;;;;;;:::i;:::-;;8912:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16820:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9094:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14843:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9300:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:509;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9274:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17331:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12242:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15970:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8968:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9194:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9000:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15844:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9516:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9332:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13993:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17573:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14607:228;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15134:368;;;;;;;;;;;;;:::i;:::-;;12118:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9235:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14973:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12449:278;;;;;;;;;;;;;:::i;:::-;;9669:28;;;;:::o;16712:102::-;16768:13;16801:5;;;;;;;;;;;;;;;;;16794:12;;16712:102;:::o;17780:244::-;17901:4;17923:13;17939:12;:10;:12::i;:::-;17923:28;;17962:32;17971:5;17978:7;17987:6;17962:8;:32::i;:::-;18012:4;18005:11;;;17780:244;;;;:::o;9036:22::-;;;;:::o;17032:110::-;17095:7;17122:12;;17115:19;;17032:110;:::o;9164:23::-;;;;:::o;9434:28::-;;;;;;;;;;;;;:::o;9392:33::-;;;;;;;;;;;;;:::o;18032:297::-;18165:4;18182:15;18200:12;:10;:12::i;:::-;18182:30;;18223:38;18239:4;18245:7;18254:6;18223:15;:38::i;:::-;18272:27;18282:4;18288:2;18292:6;18272:9;:27::i;:::-;;18317:4;18310:11;;;18032:297;;;;;:::o;16330:228::-;16382:14;16399:12;:10;:12::i;:::-;16382:29;;16441:10;;;;;;;;;;;16431:20;;:6;:20;;;:44;;;;16465:10;;;;;;;;;;;16455:20;;:6;:20;;;16431:44;16422:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;16545:5;16530:4;:12;16535:6;16530:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16371:187;16330:228;:::o;16566:138::-;16621:7;16681:15;8737:42;16681:9;:15::i;:::-;16663;8664:42;16663:9;:15::i;:::-;16648:12;;:30;;;;:::i;:::-;:48;;;;:::i;:::-;16641:55;;16566:138;:::o;16932:94::-;16992:5;17017:1;17010:8;;16932:94;:::o;18335:274::-;18452:4;18474:13;18490:12;:10;:12::i;:::-;18474:28;;18513:66;18522:5;18529:7;18568:10;18538:11;:18;18550:5;18538:18;;;;;;;;;;;;;;;:27;18557:7;18538:27;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;18513:8;:66::i;:::-;18597:4;18590:11;;;18335:274;;;;:::o;16099:223::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16257:14:::1;16233:21;;:38;;;;;;;;;;;;;;;;;;16298:16;16282:13;:32;;;;16099:223:::0;;:::o;8862:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8820:33::-;;;;;;;;;;;;;:::o;9469:40::-;;;;;;;;;;;;;:::o;13146:227::-;11682:12;:10;:12::i;:::-;11668:26;;:10;;;;;;;;;;;:26;;;11646:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;13235:4:::1;13204:11;:28;13224:6;;;;;;;;;;;13204:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;13285:4;13250:15;:32;13274:6;;;;;;;;;;;13250:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;13330:4;13300:15;:27;13316:10;;;;;;;;;;;13300:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13361:4;13345:13;;:20;;;;;;;;;;;;;;;;;;13146:227::o:0;8786:25::-;;;;;;;;;;;;;:::o;12735:156::-;11856:12;:10;:12::i;:::-;11844:24;;:8;;;;;;;;;;;:24;;;11822:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12831:4:::1;12826:1;12811:12;;:16;;;;:::i;:::-;12810:25;;;;:::i;:::-;12795:12;:40;;;;12880:3;12875:1;12860:12;;:16;;;;:::i;:::-;12859:24;;;;:::i;:::-;12846:10;:37;;;;12735:156::o:0;13404:581::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13611:14:::1;13601:7;:24;;;;13644:12;13636:5;:20;;;;13685;13669:13;:36;;;;13730:18;13716:11;:32;;;;13791:7;;13780:8;;13772:5;;:16;;;;:::i;:::-;:26;;;;:::i;:::-;13761:8;:37;;;;13853:13;;13842:8;;13829:11;;:21;;;;:::i;:::-;:37;;;;:::i;:::-;13809:17;:57;;;;13899:2;13887:8:::0;::::1;:14;;13879:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13958:2;13937:17;;:23;;13929:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13404:581:::0;;;;:::o;12899:95::-;11856:12;:10;:12::i;:::-;11844:24;;:8;;;;;;;;;;;:24;;;11822:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12984:1:::1;12965:8;;:21;;;;;;;;;;;;;;;;;;12899:95::o:0;9065:20::-;;;;:::o;17148:177::-;17267:7;17299:9;:18;17309:7;17299:18;;;;;;;;;;;;;;;;17292:25;;17148:177;;;:::o;9129:26::-;;;;:::o;9603:27::-;;;;:::o;14299:300::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14396:1:::1;14382:10;;:15:::0;14374:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14463:4;14458:1;14443:12;;:16;;;;:::i;:::-;14442:25;;;;:::i;:::-;14430:8;:37;;14422:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14539:3;14534:1;14519:12;;:16;;;;:::i;:::-;14518:24;;;;:::i;:::-;14506:8;:36;;14498:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14583:8;14570:10;:21;;;;14299:300:::0;:::o;9637:25::-;;;;:::o;15510:326::-;11682:12;:10;:12::i;:::-;11668:26;;:10;;;;;;;;;;;:26;;;11646:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;15591:1:::1;15580:8;;:12;15571:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;15645:1;15631:10;;:15:::0;15623:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15711:8;15698:10;;:21;;;;:::i;:::-;15679:15;:40;;15671:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15757:8;;15745;;:20;;;;;;;:::i;:::-;;;;;;;;15797:8;;15776:17;;:29;;;;;;;:::i;:::-;;;;;;;;15827:1;15816:8;:12;;;;15510:326::o:0;8912:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;16820:106::-;16878:13;16911:7;;;;;;;;;;;;;;;;;16904:14;;16820:106;:::o;9094:28::-;;;;:::o;14843:122::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14951:6:::1;14929:11;:19;14941:6;14929:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;14843:122:::0;;:::o;9300:25::-;;;;;;;;;;;;;:::o;18615:509::-;18737:4;18759:13;18775:12;:10;:12::i;:::-;18759:28;;18798:24;18825:11;:18;18837:5;18825:18;;;;;;;;;;;;;;;:27;18844:7;18825:27;;;;;;;;;;;;;;;;18798:54;;18905:15;18885:16;:35;;18863:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19021:60;19030:5;19037:7;19065:15;19046:16;:34;19021:8;:60::i;:::-;19112:4;19105:11;;;;18615:509;;;;:::o;9274:19::-;;;;;;;;;;;;;:::o;17331:236::-;17448:4;17470:13;17486:12;:10;:12::i;:::-;17470:28;;17509;17519:5;17526:2;17530:6;17509:9;:28::i;:::-;;17555:4;17548:11;;;17331:236;;;;:::o;12242:174::-;11682:12;:10;:12::i;:::-;11668:26;;:10;;;;;;;;;;;:26;;;11646:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;12323:9:::1;12318:91;12342:5;:12;12338:1;:16;12318:91;;;12393:4;12376;:14;12381:5;12387:1;12381:8;;;;;;;;:::i;:::-;;;;;;;;12376:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12356:3;;;;;:::i;:::-;;;;12318:91;;;;12242:174:::0;:::o;15970:121::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16069:14:::1;16056:10;;:27;;;;;;;;;;;;;;;;;;15970:121:::0;:::o;8968:25::-;;;;:::o;9558:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;9194:32::-;;;;:::o;9000:27::-;;;;:::o;15844:118::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15941:13:::1;15928:10;;:26;;;;;;;;;;;;;;;;;;15844:118:::0;:::o;9516:33::-;;;;;;;;;;;;;:::o;9332:23::-;;;;;;;;;;;;;:::o;13993:298::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14086:1:::1;14072:10;;:15:::0;14064:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14153:4;14148:1;14133:12;;:16;;;;:::i;:::-;14132:25;;;;:::i;:::-;14120:8;:37;;14112:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14229:3;14224:1;14209:12;;:16;;;;:::i;:::-;14208:24;;;;:::i;:::-;14196:8;:36;;14188:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14275:8;14260:12;:23;;;;13993:298:::0;:::o;17573:201::-;17707:7;17739:11;:18;17751:5;17739:18;;;;;;;;;;;;;;;:27;17758:7;17739:27;;;;;;;;;;;;;;;;17732:34;;17573:201;;;;:::o;14607:228::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:1:::1;14690:10;;:15:::0;14682:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14770:8;14757:10;;:21;;;;:::i;:::-;14738:15;:40;;14730:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14819:8;14802:14;;:25;;;;;;;;;;;;;;;;;;14607:228:::0;:::o;15134:368::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15210:1:::1;15198:8;;:13;15190:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;15265:1;15251:10;;:15:::0;15243:37:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15331:8;15318:10;;:21;;;;:::i;:::-;15299:15;:40;;15291:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15376:1;15365:8;:12;;;;15418:7;;15407:8;;15399:5;;:16;;;;:::i;:::-;:26;;;;:::i;:::-;15388:8;:37;;;;15481:13;;15470:8;;15456:11;;:22;;;;:::i;:::-;:38;;;;:::i;:::-;15436:17;:58;;;;15134:368::o:0;12118:116::-;11682:12;:10;:12::i;:::-;11668:26;;:10;;;;;;;;;;;:26;;;11646:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;12218:8:::1;12205:10;;:21;;;;;;;;;;;;;;;;;;12118:116:::0;:::o;9235:32::-;;;;;;;;;;;;;:::o;14973:153::-;12013:12;:10;:12::i;:::-;11999:26;;:10;;;;;;;;;;;:26;;;11991:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15112:6:::1;15086:15;:23;15102:6;15086:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;14973:153:::0;;:::o;12449:278::-;11856:12;:10;:12::i;:::-;11844:24;;:8;;;;;;;;;;;:24;;;11822:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12547:4:::1;12542:1;12527:12;;:16;;;;:::i;:::-;12526:25;;;;:::i;:::-;12511:12;:40;;;;12596:4;12591:1;12576:12;;:16;;;;:::i;:::-;12575:25;;;;:::i;:::-;12562:10;:38;;;;12648:4;12643:1;12628:12;;:16;;;;:::i;:::-;12627:25;;;;:::i;:::-;12611:13;:41;;;;12663:15;:13;:15::i;:::-;12706:13;;;;;;;;;;;12705:14;12689:13;;:30;;;;;;;;;;;;;;;;;;12449:278::o:0;139:98::-;192:7;219:10;212:17;;139:98;:::o;21966:380::-;22119:1;22102:19;;:5;:19;;;22094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22200:1;22181:21;;:7;:21;;;22173:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22284:6;22254:11;:18;22266:5;22254:18;;;;;;;;;;;;;;;:27;22273:7;22254:27;;;;;;;;;;;;;;;:36;;;;22322:7;22306:32;;22315:5;22306:32;;;22331:6;22306:32;;;;;;:::i;:::-;;;;;;;;21966:380;;;:::o;22633:502::-;22768:24;22795:25;22805:5;22812:7;22795:9;:25::i;:::-;22768:52;;22855:17;22835:16;:37;22831:297;;22935:6;22915:16;:26;;22889:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;23050:51;23059:5;23066:7;23094:6;23075:16;:25;23050:8;:51::i;:::-;22831:297;22757:378;22633:502;;;:::o;19132:389::-;19254:4;19274:11;:19;19286:6;19274:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;19297:11;:22;19309:9;19297:22;;;;;;;;;;;;;;;;;;;;;;;;;19274:45;:65;;;;19323:16;;;;;;;;;;;19274:65;19271:243;;;19362:41;19377:6;19385:9;19396:6;19362:14;:41::i;:::-;19355:48;;;;19271:243;19445:39;19460:6;19467:9;19477:6;19445:14;:39::i;:::-;19438:46;;19132:389;;;;;;:::o;13002:136::-;13069:1;13055:10;;:15;13047:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;13115:15;13102:10;:28;;;;13002:136::o;20913:334::-;21040:4;21097:6;21077:9;:17;21087:6;21077:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;21057:9;:17;21067:6;21057:17;;;;;;;;;;;;;;;:46;;;;21160:6;21137:9;:20;21147:9;21137:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;21114:9;:20;21124:9;21114:20;;;;;;;;;;;;;;;:52;;;;21199:9;21182:35;;21191:6;21182:35;;;21210:6;21182:35;;;;;;:::i;:::-;;;;;;;;21235:4;21228:11;;20913:334;;;;;:::o;19529:1376::-;19656:4;19682;:12;19687:6;19682:12;;;;;;;;;;;;;;;;;;;;;;;;;19681:13;:33;;;;;19699:4;:15;19704:9;19699:15;;;;;;;;;;;;;;;;;;;;;;;;;19698:16;19681:33;19673:42;;;;;;19734:13;;;;;;;;;;;19726:40;;;;;;;;;;;;:::i;:::-;;;;;;;;;19784:15;:26;19800:9;19784:26;;;;;;;;;;;;;;;;;;;;;;;;;19783:27;:45;;;;;19814:14;;;;;;;;;;;19783:45;19779:186;;;19873:12;;19863:6;:22;;:49;;;;19889:15;:23;19905:6;19889:23;;;;;;;;;;;;;;;;;;;;;;;;;19863:49;19841:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;19779:186;19982:15;:26;19998:9;19982:26;;;;;;;;;;;;;;;;;;;;;;;;;19981:27;:45;;;;;20012:14;;;;;;;;;;;19981:45;:66;;;;;20043:4;;;;;;;;;;;20030:17;;:9;:17;;;;19981:66;19977:221;;;20123:10;;20113:6;20090:9;:20;20100:9;20090:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;:43;;20064:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;19977:221;20238:4;;;;;;;;;;;20228:14;;:6;:14;;;;:48;;;;;20260:16;;;;;;;;;;;20259:17;20228:48;:86;;;;;20293:21;;;;;;;;;;;20228:86;:144;;;;;20359:13;;20331:9;:24;20349:4;20331:24;;;;;;;;;;;;;;;;:41;;20228:144;20210:211;;;20399:10;:8;:10::i;:::-;20210:211;20473:6;20453:9;:17;20463:6;20453:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;20433:9;:17;20443:6;20433:17;;;;;;;;;;;;;;;:46;;;;20490:19;20512:6;20490:28;;20545:4;;;;;;;;;;;20535:14;;:6;:14;;;:35;;;;20566:4;;;;;;;;;;;20553:17;;:9;:17;;;20535:35;20531:209;;;20602:11;:19;20614:6;20602:19;;;;;;;;;;;;;;;;;;;;;;;;;20601:20;:47;;;;;20626:11;:22;20638:9;20626:22;;;;;;;;;;;;;;;;;;;;;;;;;20625:23;20601:47;:127;;20722:6;20601:127;;;20668:34;20676:6;20684:9;20695:6;20668:7;:34::i;:::-;20601:127;20587:141;;20531:209;20806:11;20783:9;:20;20793:9;20783:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;20760:9;:20;20770:9;20760:20;;;;;;;;;;;;;;;:57;;;;20852:9;20835:40;;20844:6;20835:40;;;20863:11;20835:40;;;;;;:::i;:::-;;;;;;;;20893:4;20886:11;;;19529:1376;;;;;:::o;23628:2116::-;11542:4;11523:16;;:23;;;;;;;;;;;;;;;;;;23680::::1;23706:9:::0;:24:::1;23724:4;23706:24;;;;;;;;;;;;;;;;23680:50;;23743:23;23777:20:::0;23808:26:::1;23910:1;23898:8;;:13;23894:206;;23998:1;23978:17;;23964:11;;23946:15;:29;;;;:::i;:::-;:49;;;;:::i;:::-;:53;;;;:::i;:::-;23928:71;;23894:206;;;24087:1;24076:8;;24068:5;;24050:15;:23;;;;:::i;:::-;:34;;;;:::i;:::-;:38;;;;:::i;:::-;24032:56;;23894:206;24112:20;24153:15;24135;:33;;;;:::i;:::-;24112:56;;24227:12;24181:11;:26;24201:4;24181:26;;;;;;;;;;;;;;;:43;24216:6;;;;;;;;;;;24181:43;;;;;;;;;;;;;;;:58;;;;24252:21;24290:1;24276:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24252:40;;24321:4;24303;24308:1;24303:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24347:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24337:4;24342:1;24337:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;24381:6;;;;;;;;;;;:57;;;24453:12;24480:1;24496:4;24523;24543:15;24381:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;24582:17;24602:21;24582:41;;24699:1;24687:8;;:13;24683:331;;24755:17;;24744:8;;24732:9;:20;;;;:::i;:::-;:40;;;;:::i;:::-;24717:55;;24854:1;24834:17;;24820:11;;24808:9;:23;;;;:::i;:::-;:43;;;;:::i;:::-;:47;;;;:::i;:::-;24787:68;;24683:331;;;24926:8;;24915;;24903:9;:20;;;;:::i;:::-;:31;;;;:::i;:::-;24888:46;;25001:1;24990:8;;24982:5;;24970:9;:17;;;;:::i;:::-;:28;;;;:::i;:::-;:32;;;;:::i;:::-;24949:53;;24683:331;25026:21;25077:18;25062:12;25050:9;:24;;;;:::i;:::-;:45;;;;:::i;:::-;25026:69;;25124:1;25112:9;:13;25108:223;;;25151:7;;;;;;;;;;;25142:32;;;25182:12;25142:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;25213:10;25226;;;;;;;;;;;:15;;25248:13;25226:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25212:54;;;25290:5;25281:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;25127:204;25108:223;25365:1;25347:15;:19;25343:394;;;25429:15;25383:11;:26;25403:4;25383:26;;;;;;;;;;;;;;;:43;25418:6;;;;;;;;;;;25383:43;;;;;;;;;;;;;;;:61;;;;25459:6;;;;;;;;;;;:22;;;25489:18;25535:4;25559:15;25593:1;25613::::0;25633:42:::1;25694:15;25459:266;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25343:394;23669:2075;;;;;;;;11588:5:::0;11569:16;;:24;;;;;;;;;;;;;;;;;;23628:2116::o;23143:477::-;23263:7;23283:21;23315:9;23307:17;;:4;;;;;;;;;;;:17;;;:74;;23373:8;;23307:74;;;23340:17;;23307:74;23283:98;;23392:17;23437:3;23421:13;23412:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;23392:48;;23507:9;23480;:24;23498:4;23480:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;23453:9;:24;23471:4;23453:24;;;;;;;;;;;;;;;:63;;;;23557:4;23532:42;;23541:6;23532:42;;;23564:9;23532:42;;;;;;:::i;:::-;;;;;;;;23603:9;23594:6;:18;;;;:::i;:::-;23587:25;;;;23143:477;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:75::-;1817:6;1850:2;1844:9;1834:19;;1784:75;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:104::-;3843:7;3872:24;3890:5;3872:24;:::i;:::-;3861:35;;3798:104;;;:::o;3908:142::-;4011:32;4037:5;4011:32;:::i;:::-;4006:3;3999:45;3908:142;;:::o;4056:254::-;4165:4;4203:2;4192:9;4188:18;4180:26;;4216:87;4300:1;4289:9;4285:17;4276:6;4216:87;:::i;:::-;4056:254;;;;:::o;4316:619::-;4393:6;4401;4409;4458:2;4446:9;4437:7;4433:23;4429:32;4426:119;;;4464:79;;:::i;:::-;4426:119;4584:1;4609:53;4654:7;4645:6;4634:9;4630:22;4609:53;:::i;:::-;4599:63;;4555:117;4711:2;4737:53;4782:7;4773:6;4762:9;4758:22;4737:53;:::i;:::-;4727:63;;4682:118;4839:2;4865:53;4910:7;4901:6;4890:9;4886:22;4865:53;:::i;:::-;4855:63;;4810:118;4316:619;;;;;:::o;4941:329::-;5000:6;5049:2;5037:9;5028:7;5024:23;5020:32;5017:119;;;5055:79;;:::i;:::-;5017:119;5175:1;5200:53;5245:7;5236:6;5225:9;5221:22;5200:53;:::i;:::-;5190:63;;5146:117;4941:329;;;;:::o;5276:86::-;5311:7;5351:4;5344:5;5340:16;5329:27;;5276:86;;;:::o;5368:112::-;5451:22;5467:5;5451:22;:::i;:::-;5446:3;5439:35;5368:112;;:::o;5486:214::-;5575:4;5613:2;5602:9;5598:18;5590:26;;5626:67;5690:1;5679:9;5675:17;5666:6;5626:67;:::i;:::-;5486:214;;;;:::o;5706:116::-;5776:21;5791:5;5776:21;:::i;:::-;5769:5;5766:32;5756:60;;5812:1;5809;5802:12;5756:60;5706:116;:::o;5828:133::-;5871:5;5909:6;5896:20;5887:29;;5925:30;5949:5;5925:30;:::i;:::-;5828:133;;;;:::o;5967:468::-;6032:6;6040;6089:2;6077:9;6068:7;6064:23;6060:32;6057:119;;;6095:79;;:::i;:::-;6057:119;6215:1;6240:50;6282:7;6273:6;6262:9;6258:22;6240:50;:::i;:::-;6230:60;;6186:114;6339:2;6365:53;6410:7;6401:6;6390:9;6386:22;6365:53;:::i;:::-;6355:63;;6310:118;5967:468;;;;;:::o;6441:118::-;6528:24;6546:5;6528:24;:::i;:::-;6523:3;6516:37;6441:118;;:::o;6565:222::-;6658:4;6696:2;6685:9;6681:18;6673:26;;6709:71;6777:1;6766:9;6762:17;6753:6;6709:71;:::i;:::-;6565:222;;;;:::o;6793:765::-;6879:6;6887;6895;6903;6952:3;6940:9;6931:7;6927:23;6923:33;6920:120;;;6959:79;;:::i;:::-;6920:120;7079:1;7104:53;7149:7;7140:6;7129:9;7125:22;7104:53;:::i;:::-;7094:63;;7050:117;7206:2;7232:53;7277:7;7268:6;7257:9;7253:22;7232:53;:::i;:::-;7222:63;;7177:118;7334:2;7360:53;7405:7;7396:6;7385:9;7381:22;7360:53;:::i;:::-;7350:63;;7305:118;7462:2;7488:53;7533:7;7524:6;7513:9;7509:22;7488:53;:::i;:::-;7478:63;;7433:118;6793:765;;;;;;;:::o;7564:329::-;7623:6;7672:2;7660:9;7651:7;7647:23;7643:32;7640:119;;;7678:79;;:::i;:::-;7640:119;7798:1;7823:53;7868:7;7859:6;7848:9;7844:22;7823:53;:::i;:::-;7813:63;;7769:117;7564:329;;;;:::o;7899:468::-;7964:6;7972;8021:2;8009:9;8000:7;7996:23;7992:32;7989:119;;;8027:79;;:::i;:::-;7989:119;8147:1;8172:53;8217:7;8208:6;8197:9;8193:22;8172:53;:::i;:::-;8162:63;;8118:117;8274:2;8300:50;8342:7;8333:6;8322:9;8318:22;8300:50;:::i;:::-;8290:60;;8245:115;7899:468;;;;;:::o;8373:117::-;8482:1;8479;8472:12;8496:180;8544:77;8541:1;8534:88;8641:4;8638:1;8631:15;8665:4;8662:1;8655:15;8682:281;8765:27;8787:4;8765:27;:::i;:::-;8757:6;8753:40;8895:6;8883:10;8880:22;8859:18;8847:10;8844:34;8841:62;8838:88;;;8906:18;;:::i;:::-;8838:88;8946:10;8942:2;8935:22;8725:238;8682:281;;:::o;8969:129::-;9003:6;9030:20;;:::i;:::-;9020:30;;9059:33;9087:4;9079:6;9059:33;:::i;:::-;8969:129;;;:::o;9104:311::-;9181:4;9271:18;9263:6;9260:30;9257:56;;;9293:18;;:::i;:::-;9257:56;9343:4;9335:6;9331:17;9323:25;;9403:4;9397;9393:15;9385:23;;9104:311;;;:::o;9421:117::-;9530:1;9527;9520:12;9561:710;9657:5;9682:81;9698:64;9755:6;9698:64;:::i;:::-;9682:81;:::i;:::-;9673:90;;9783:5;9812:6;9805:5;9798:21;9846:4;9839:5;9835:16;9828:23;;9899:4;9891:6;9887:17;9879:6;9875:30;9928:3;9920:6;9917:15;9914:122;;;9947:79;;:::i;:::-;9914:122;10062:6;10045:220;10079:6;10074:3;10071:15;10045:220;;;10154:3;10183:37;10216:3;10204:10;10183:37;:::i;:::-;10178:3;10171:50;10250:4;10245:3;10241:14;10234:21;;10121:144;10105:4;10100:3;10096:14;10089:21;;10045:220;;;10049:21;9663:608;;9561:710;;;;;:::o;10294:370::-;10365:5;10414:3;10407:4;10399:6;10395:17;10391:27;10381:122;;10422:79;;:::i;:::-;10381:122;10539:6;10526:20;10564:94;10654:3;10646:6;10639:4;10631:6;10627:17;10564:94;:::i;:::-;10555:103;;10371:293;10294:370;;;;:::o;10670:539::-;10754:6;10803:2;10791:9;10782:7;10778:23;10774:32;10771:119;;;10809:79;;:::i;:::-;10771:119;10957:1;10946:9;10942:17;10929:31;10987:18;10979:6;10976:30;10973:117;;;11009:79;;:::i;:::-;10973:117;11114:78;11184:7;11175:6;11164:9;11160:22;11114:78;:::i;:::-;11104:88;;10900:302;10670:539;;;;:::o;11215:138::-;11296:32;11322:5;11296:32;:::i;:::-;11289:5;11286:43;11276:71;;11343:1;11340;11333:12;11276:71;11215:138;:::o;11359:155::-;11413:5;11451:6;11438:20;11429:29;;11467:41;11502:5;11467:41;:::i;:::-;11359:155;;;;:::o;11520:345::-;11587:6;11636:2;11624:9;11615:7;11611:23;11607:32;11604:119;;;11642:79;;:::i;:::-;11604:119;11762:1;11787:61;11840:7;11831:6;11820:9;11816:22;11787:61;:::i;:::-;11777:71;;11733:125;11520:345;;;;:::o;11871:474::-;11939:6;11947;11996:2;11984:9;11975:7;11971:23;11967:32;11964:119;;;12002:79;;:::i;:::-;11964:119;12122:1;12147:53;12192:7;12183:6;12172:9;12168:22;12147:53;:::i;:::-;12137:63;;12093:117;12249:2;12275:53;12320:7;12311:6;12300:9;12296:22;12275:53;:::i;:::-;12265:63;;12220:118;11871:474;;;;;:::o;12351:323::-;12407:6;12456:2;12444:9;12435:7;12431:23;12427:32;12424:119;;;12462:79;;:::i;:::-;12424:119;12582:1;12607:50;12649:7;12640:6;12629:9;12625:22;12607:50;:::i;:::-;12597:60;;12553:114;12351:323;;;;:::o;12680:60::-;12708:3;12729:5;12722:12;;12680:60;;;:::o;12746:142::-;12796:9;12829:53;12847:34;12856:24;12874:5;12856:24;:::i;:::-;12847:34;:::i;:::-;12829:53;:::i;:::-;12816:66;;12746:142;;;:::o;12894:126::-;12944:9;12977:37;13008:5;12977:37;:::i;:::-;12964:50;;12894:126;;;:::o;13026:152::-;13102:9;13135:37;13166:5;13135:37;:::i;:::-;13122:50;;13026:152;;;:::o;13184:183::-;13297:63;13354:5;13297:63;:::i;:::-;13292:3;13285:76;13184:183;;:::o;13373:274::-;13492:4;13530:2;13519:9;13515:18;13507:26;;13543:97;13637:1;13626:9;13622:17;13613:6;13543:97;:::i;:::-;13373:274;;;;:::o;13653:226::-;13793:34;13789:1;13781:6;13777:14;13770:58;13862:9;13857:2;13849:6;13845:15;13838:34;13653:226;:::o;13885:366::-;14027:3;14048:67;14112:2;14107:3;14048:67;:::i;:::-;14041:74;;14124:93;14213:3;14124:93;:::i;:::-;14242:2;14237:3;14233:12;14226:19;;13885:366;;;:::o;14257:419::-;14423:4;14461:2;14450:9;14446:18;14438:26;;14510:9;14504:4;14500:20;14496:1;14485:9;14481:17;14474:47;14538:131;14664:4;14538:131;:::i;:::-;14530:139;;14257:419;;;:::o;14682:180::-;14730:77;14727:1;14720:88;14827:4;14824:1;14817:15;14851:4;14848:1;14841:15;14868:194;14908:4;14928:20;14946:1;14928:20;:::i;:::-;14923:25;;14962:20;14980:1;14962:20;:::i;:::-;14957:25;;15006:1;15003;14999:9;14991:17;;15030:1;15024:4;15021:11;15018:37;;;15035:18;;:::i;:::-;15018:37;14868:194;;;;:::o;15068:191::-;15108:3;15127:20;15145:1;15127:20;:::i;:::-;15122:25;;15161:20;15179:1;15161:20;:::i;:::-;15156:25;;15204:1;15201;15197:9;15190:16;;15225:3;15222:1;15219:10;15216:36;;;15232:18;;:::i;:::-;15216:36;15068:191;;;;:::o;15265:182::-;15405:34;15401:1;15393:6;15389:14;15382:58;15265:182;:::o;15453:366::-;15595:3;15616:67;15680:2;15675:3;15616:67;:::i;:::-;15609:74;;15692:93;15781:3;15692:93;:::i;:::-;15810:2;15805:3;15801:12;15794:19;;15453:366;;;:::o;15825:419::-;15991:4;16029:2;16018:9;16014:18;16006:26;;16078:9;16072:4;16068:20;16064:1;16053:9;16049:17;16042:47;16106:131;16232:4;16106:131;:::i;:::-;16098:139;;15825:419;;;:::o;16250:224::-;16390:34;16386:1;16378:6;16374:14;16367:58;16459:7;16454:2;16446:6;16442:15;16435:32;16250:224;:::o;16480:366::-;16622:3;16643:67;16707:2;16702:3;16643:67;:::i;:::-;16636:74;;16719:93;16808:3;16719:93;:::i;:::-;16837:2;16832:3;16828:12;16821:19;;16480:366;;;:::o;16852:419::-;17018:4;17056:2;17045:9;17041:18;17033:26;;17105:9;17099:4;17095:20;17091:1;17080:9;17076:17;17069:47;17133:131;17259:4;17133:131;:::i;:::-;17125:139;;16852:419;;;:::o;17277:222::-;17417:34;17413:1;17405:6;17401:14;17394:58;17486:5;17481:2;17473:6;17469:15;17462:30;17277:222;:::o;17505:366::-;17647:3;17668:67;17732:2;17727:3;17668:67;:::i;:::-;17661:74;;17744:93;17833:3;17744:93;:::i;:::-;17862:2;17857:3;17853:12;17846:19;;17505:366;;;:::o;17877:419::-;18043:4;18081:2;18070:9;18066:18;18058:26;;18130:9;18124:4;18120:20;18116:1;18105:9;18101:17;18094:47;18158:131;18284:4;18158:131;:::i;:::-;18150:139;;17877:419;;;:::o;18302:410::-;18342:7;18365:20;18383:1;18365:20;:::i;:::-;18360:25;;18399:20;18417:1;18399:20;:::i;:::-;18394:25;;18454:1;18451;18447:9;18476:30;18494:11;18476:30;:::i;:::-;18465:41;;18655:1;18646:7;18642:15;18639:1;18636:22;18616:1;18609:9;18589:83;18566:139;;18685:18;;:::i;:::-;18566:139;18350:362;18302:410;;;;:::o;18718:180::-;18766:77;18763:1;18756:88;18863:4;18860:1;18853:15;18887:4;18884:1;18877:15;18904:185;18944:1;18961:20;18979:1;18961:20;:::i;:::-;18956:25;;18995:20;19013:1;18995:20;:::i;:::-;18990:25;;19034:1;19024:35;;19039:18;;:::i;:::-;19024:35;19081:1;19078;19074:9;19069:14;;18904:185;;;;:::o;19095:162::-;19235:14;19231:1;19223:6;19219:14;19212:38;19095:162;:::o;19263:366::-;19405:3;19426:67;19490:2;19485:3;19426:67;:::i;:::-;19419:74;;19502:93;19591:3;19502:93;:::i;:::-;19620:2;19615:3;19611:12;19604:19;;19263:366;;;:::o;19635:419::-;19801:4;19839:2;19828:9;19824:18;19816:26;;19888:9;19882:4;19878:20;19874:1;19863:9;19859:17;19852:47;19916:131;20042:4;19916:131;:::i;:::-;19908:139;;19635:419;;;:::o;20060:159::-;20200:11;20196:1;20188:6;20184:14;20177:35;20060:159;:::o;20225:365::-;20367:3;20388:66;20452:1;20447:3;20388:66;:::i;:::-;20381:73;;20463:93;20552:3;20463:93;:::i;:::-;20581:2;20576:3;20572:12;20565:19;;20225:365;;;:::o;20596:419::-;20762:4;20800:2;20789:9;20785:18;20777:26;;20849:9;20843:4;20839:20;20835:1;20824:9;20820:17;20813:47;20877:131;21003:4;20877:131;:::i;:::-;20869:139;;20596:419;;;:::o;21021:165::-;21161:17;21157:1;21149:6;21145:14;21138:41;21021:165;:::o;21192:366::-;21334:3;21355:67;21419:2;21414:3;21355:67;:::i;:::-;21348:74;;21431:93;21520:3;21431:93;:::i;:::-;21549:2;21544:3;21540:12;21533:19;;21192:366;;;:::o;21564:419::-;21730:4;21768:2;21757:9;21753:18;21745:26;;21817:9;21811:4;21807:20;21803:1;21792:9;21788:17;21781:47;21845:131;21971:4;21845:131;:::i;:::-;21837:139;;21564:419;;;:::o;21989:162::-;22129:14;22125:1;22117:6;22113:14;22106:38;21989:162;:::o;22157:366::-;22299:3;22320:67;22384:2;22379:3;22320:67;:::i;:::-;22313:74;;22396:93;22485:3;22396:93;:::i;:::-;22514:2;22509:3;22505:12;22498:19;;22157:366;;;:::o;22529:419::-;22695:4;22733:2;22722:9;22718:18;22710:26;;22782:9;22776:4;22772:20;22768:1;22757:9;22753:17;22746:47;22810:131;22936:4;22810:131;:::i;:::-;22802:139;;22529:419;;;:::o;22954:165::-;23094:17;23090:1;23082:6;23078:14;23071:41;22954:165;:::o;23125:366::-;23267:3;23288:67;23352:2;23347:3;23288:67;:::i;:::-;23281:74;;23364:93;23453:3;23364:93;:::i;:::-;23482:2;23477:3;23473:12;23466:19;;23125:366;;;:::o;23497:419::-;23663:4;23701:2;23690:9;23686:18;23678:26;;23750:9;23744:4;23740:20;23736:1;23725:9;23721:17;23714:47;23778:131;23904:4;23778:131;:::i;:::-;23770:139;;23497:419;;;:::o;23922:158::-;24062:10;24058:1;24050:6;24046:14;24039:34;23922:158;:::o;24086:365::-;24228:3;24249:66;24313:1;24308:3;24249:66;:::i;:::-;24242:73;;24324:93;24413:3;24324:93;:::i;:::-;24442:2;24437:3;24433:12;24426:19;;24086:365;;;:::o;24457:419::-;24623:4;24661:2;24650:9;24646:18;24638:26;;24710:9;24704:4;24700:20;24696:1;24685:9;24681:17;24674:47;24738:131;24864:4;24738:131;:::i;:::-;24730:139;;24457:419;;;:::o;24882:224::-;25022:34;25018:1;25010:6;25006:14;24999:58;25091:7;25086:2;25078:6;25074:15;25067:32;24882:224;:::o;25112:366::-;25254:3;25275:67;25339:2;25334:3;25275:67;:::i;:::-;25268:74;;25351:93;25440:3;25351:93;:::i;:::-;25469:2;25464:3;25460:12;25453:19;;25112:366;;;:::o;25484:419::-;25650:4;25688:2;25677:9;25673:18;25665:26;;25737:9;25731:4;25727:20;25723:1;25712:9;25708:17;25701:47;25765:131;25891:4;25765:131;:::i;:::-;25757:139;;25484:419;;;:::o;25909:180::-;25957:77;25954:1;25947:88;26054:4;26051:1;26044:15;26078:4;26075:1;26068:15;26095:233;26134:3;26157:24;26175:5;26157:24;:::i;:::-;26148:33;;26203:66;26196:5;26193:77;26190:103;;26273:18;;:::i;:::-;26190:103;26320:1;26313:5;26309:13;26302:20;;26095:233;;;:::o;26334:166::-;26474:18;26470:1;26462:6;26458:14;26451:42;26334:166;:::o;26506:366::-;26648:3;26669:67;26733:2;26728:3;26669:67;:::i;:::-;26662:74;;26745:93;26834:3;26745:93;:::i;:::-;26863:2;26858:3;26854:12;26847:19;;26506:366;;;:::o;26878:419::-;27044:4;27082:2;27071:9;27067:18;27059:26;;27131:9;27125:4;27121:20;27117:1;27106:9;27102:17;27095:47;27159:131;27285:4;27159:131;:::i;:::-;27151:139;;26878:419;;;:::o;27303:223::-;27443:34;27439:1;27431:6;27427:14;27420:58;27512:6;27507:2;27499:6;27495:15;27488:31;27303:223;:::o;27532:366::-;27674:3;27695:67;27759:2;27754:3;27695:67;:::i;:::-;27688:74;;27771:93;27860:3;27771:93;:::i;:::-;27889:2;27884:3;27880:12;27873:19;;27532:366;;;:::o;27904:419::-;28070:4;28108:2;28097:9;28093:18;28085:26;;28157:9;28151:4;28147:20;28143:1;28132:9;28128:17;28121:47;28185:131;28311:4;28185:131;:::i;:::-;28177:139;;27904:419;;;:::o;28329:221::-;28469:34;28465:1;28457:6;28453:14;28446:58;28538:4;28533:2;28525:6;28521:15;28514:29;28329:221;:::o;28556:366::-;28698:3;28719:67;28783:2;28778:3;28719:67;:::i;:::-;28712:74;;28795:93;28884:3;28795:93;:::i;:::-;28913:2;28908:3;28904:12;28897:19;;28556:366;;;:::o;28928:419::-;29094:4;29132:2;29121:9;29117:18;29109:26;;29181:9;29175:4;29171:20;29167:1;29156:9;29152:17;29145:47;29209:131;29335:4;29209:131;:::i;:::-;29201:139;;28928:419;;;:::o;29353:179::-;29493:31;29489:1;29481:6;29477:14;29470:55;29353:179;:::o;29538:366::-;29680:3;29701:67;29765:2;29760:3;29701:67;:::i;:::-;29694:74;;29777:93;29866:3;29777:93;:::i;:::-;29895:2;29890:3;29886:12;29879:19;;29538:366;;;:::o;29910:419::-;30076:4;30114:2;30103:9;30099:18;30091:26;;30163:9;30157:4;30153:20;30149:1;30138:9;30134:17;30127:47;30191:131;30317:4;30191:131;:::i;:::-;30183:139;;29910:419;;;:::o;30335:166::-;30475:18;30471:1;30463:6;30459:14;30452:42;30335:166;:::o;30507:366::-;30649:3;30670:67;30734:2;30729:3;30670:67;:::i;:::-;30663:74;;30746:93;30835:3;30746:93;:::i;:::-;30864:2;30859:3;30855:12;30848:19;;30507:366;;;:::o;30879:419::-;31045:4;31083:2;31072:9;31068:18;31060:26;;31132:9;31126:4;31122:20;31118:1;31107:9;31103:17;31096:47;31160:131;31286:4;31160:131;:::i;:::-;31152:139;;30879:419;;;:::o;31304:164::-;31444:16;31440:1;31432:6;31428:14;31421:40;31304:164;:::o;31474:366::-;31616:3;31637:67;31701:2;31696:3;31637:67;:::i;:::-;31630:74;;31713:93;31802:3;31713:93;:::i;:::-;31831:2;31826:3;31822:12;31815:19;;31474:366;;;:::o;31846:419::-;32012:4;32050:2;32039:9;32035:18;32027:26;;32099:9;32093:4;32089:20;32085:1;32074:9;32070:17;32063:47;32127:131;32253:4;32127:131;:::i;:::-;32119:139;;31846:419;;;:::o;32271:163::-;32411:15;32407:1;32399:6;32395:14;32388:39;32271:163;:::o;32440:366::-;32582:3;32603:67;32667:2;32662:3;32603:67;:::i;:::-;32596:74;;32679:93;32768:3;32679:93;:::i;:::-;32797:2;32792:3;32788:12;32781:19;;32440:366;;;:::o;32812:419::-;32978:4;33016:2;33005:9;33001:18;32993:26;;33065:9;33059:4;33055:20;33051:1;33040:9;33036:17;33029:47;33093:131;33219:4;33093:131;:::i;:::-;33085:139;;32812:419;;;:::o;33237:167::-;33377:19;33373:1;33365:6;33361:14;33354:43;33237:167;:::o;33410:366::-;33552:3;33573:67;33637:2;33632:3;33573:67;:::i;:::-;33566:74;;33649:93;33738:3;33649:93;:::i;:::-;33767:2;33762:3;33758:12;33751:19;;33410:366;;;:::o;33782:419::-;33948:4;33986:2;33975:9;33971:18;33963:26;;34035:9;34029:4;34025:20;34021:1;34010:9;34006:17;33999:47;34063:131;34189:4;34063:131;:::i;:::-;34055:139;;33782:419;;;:::o;34207:143::-;34264:5;34295:6;34289:13;34280:22;;34311:33;34338:5;34311:33;:::i;:::-;34207:143;;;;:::o;34356:351::-;34426:6;34475:2;34463:9;34454:7;34450:23;34446:32;34443:119;;;34481:79;;:::i;:::-;34443:119;34601:1;34626:64;34682:7;34673:6;34662:9;34658:22;34626:64;:::i;:::-;34616:74;;34572:128;34356:351;;;;:::o;34713:85::-;34758:7;34787:5;34776:16;;34713:85;;;:::o;34804:158::-;34862:9;34895:61;34913:42;34922:32;34948:5;34922:32;:::i;:::-;34913:42;:::i;:::-;34895:61;:::i;:::-;34882:74;;34804:158;;;:::o;34968:147::-;35063:45;35102:5;35063:45;:::i;:::-;35058:3;35051:58;34968:147;;:::o;35121:114::-;35188:6;35222:5;35216:12;35206:22;;35121:114;;;:::o;35241:184::-;35340:11;35374:6;35369:3;35362:19;35414:4;35409:3;35405:14;35390:29;;35241:184;;;;:::o;35431:132::-;35498:4;35521:3;35513:11;;35551:4;35546:3;35542:14;35534:22;;35431:132;;;:::o;35569:108::-;35646:24;35664:5;35646:24;:::i;:::-;35641:3;35634:37;35569:108;;:::o;35683:179::-;35752:10;35773:46;35815:3;35807:6;35773:46;:::i;:::-;35851:4;35846:3;35842:14;35828:28;;35683:179;;;;:::o;35868:113::-;35938:4;35970;35965:3;35961:14;35953:22;;35868:113;;;:::o;36017:732::-;36136:3;36165:54;36213:5;36165:54;:::i;:::-;36235:86;36314:6;36309:3;36235:86;:::i;:::-;36228:93;;36345:56;36395:5;36345:56;:::i;:::-;36424:7;36455:1;36440:284;36465:6;36462:1;36459:13;36440:284;;;36541:6;36535:13;36568:63;36627:3;36612:13;36568:63;:::i;:::-;36561:70;;36654:60;36707:6;36654:60;:::i;:::-;36644:70;;36500:224;36487:1;36484;36480:9;36475:14;;36440:284;;;36444:14;36740:3;36733:10;;36141:608;;;36017:732;;;;:::o;36755:831::-;37018:4;37056:3;37045:9;37041:19;37033:27;;37070:71;37138:1;37127:9;37123:17;37114:6;37070:71;:::i;:::-;37151:80;37227:2;37216:9;37212:18;37203:6;37151:80;:::i;:::-;37278:9;37272:4;37268:20;37263:2;37252:9;37248:18;37241:48;37306:108;37409:4;37400:6;37306:108;:::i;:::-;37298:116;;37424:72;37492:2;37481:9;37477:18;37468:6;37424:72;:::i;:::-;37506:73;37574:3;37563:9;37559:19;37550:6;37506:73;:::i;:::-;36755:831;;;;;;;;:::o;37592:147::-;37693:11;37730:3;37715:18;;37592:147;;;;:::o;37745:114::-;;:::o;37865:398::-;38024:3;38045:83;38126:1;38121:3;38045:83;:::i;:::-;38038:90;;38137:93;38226:3;38137:93;:::i;:::-;38255:1;38250:3;38246:11;38239:18;;37865:398;;;:::o;38269:379::-;38453:3;38475:147;38618:3;38475:147;:::i;:::-;38468:154;;38639:3;38632:10;;38269:379;;;:::o;38654:169::-;38794:21;38790:1;38782:6;38778:14;38771:45;38654:169;:::o;38829:366::-;38971:3;38992:67;39056:2;39051:3;38992:67;:::i;:::-;38985:74;;39068:93;39157:3;39068:93;:::i;:::-;39186:2;39181:3;39177:12;39170:19;;38829:366;;;:::o;39201:419::-;39367:4;39405:2;39394:9;39390:18;39382:26;;39454:9;39448:4;39444:20;39440:1;39429:9;39425:17;39418:47;39482:131;39608:4;39482:131;:::i;:::-;39474:139;;39201:419;;;:::o;39626:807::-;39875:4;39913:3;39902:9;39898:19;39890:27;;39927:71;39995:1;39984:9;39980:17;39971:6;39927:71;:::i;:::-;40008:72;40076:2;40065:9;40061:18;40052:6;40008:72;:::i;:::-;40090:80;40166:2;40155:9;40151:18;40142:6;40090:80;:::i;:::-;40180;40256:2;40245:9;40241:18;40232:6;40180:80;:::i;:::-;40270:73;40338:3;40327:9;40323:19;40314:6;40270:73;:::i;:::-;40353;40421:3;40410:9;40406:19;40397:6;40353:73;:::i;:::-;39626:807;;;;;;;;;:::o;40439:143::-;40496:5;40527:6;40521:13;40512:22;;40543:33;40570:5;40543:33;:::i;:::-;40439:143;;;;:::o;40588:663::-;40676:6;40684;40692;40741:2;40729:9;40720:7;40716:23;40712:32;40709:119;;;40747:79;;:::i;:::-;40709:119;40867:1;40892:64;40948:7;40939:6;40928:9;40924:22;40892:64;:::i;:::-;40882:74;;40838:128;41005:2;41031:64;41087:7;41078:6;41067:9;41063:22;41031:64;:::i;:::-;41021:74;;40976:129;41144:2;41170:64;41226:7;41217:6;41206:9;41202:22;41170:64;:::i;:::-;41160:74;;41115:129;40588:663;;;;;:::o

Swarm Source

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