ETH Price: $3,123.76 (+0.73%)

Token

KingdomGame (KINGDOM)
 

Overview

Max Total Supply

10,000,000,000,000,000,000,000,000 KINGDOM

Holders

1,185

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 0 Decimals)

Balance
236,400,459,776 KINGDOM

Value
$0.00
0x1d26adb46445141e2aa19ac96b0590b0071ba7d6
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:
NeoBot

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-05
*/

// $KINGDOM GAME
// https://docs.kingdomgame.live/
// https://t.me/Kingdom_erc20
// https://twitter.com/KINGDOMGAME_ERC

//           _____                    _____                    _____                    _____                    _____                    _____                    _____                    _____          
//          /\    \                  /\    \                  /\    \                  /\    \                  /\    \                  /\    \                  /\    \                  /\    \         
//         /::\____\                /::\    \                /::\____\                /::\    \                /::\    \                /::\    \                /::\____\                /::\    \        
//        /:::/    /                \:::\    \              /::::|   |               /::::\    \              /::::\    \              /::::\    \              /::::|   |               /::::\    \       
//       /:::/    /                  \:::\    \            /:::::|   |              /::::::\    \            /::::::\    \            /::::::\    \            /:::::|   |              /::::::\    \      
//      /:::/    /                    \:::\    \          /::::::|   |             /:::/\:::\    \          /:::/\:::\    \          /:::/\:::\    \          /::::::|   |             /:::/\:::\    \     
//     /:::/____/                      \:::\    \        /:::/|::|   |            /:::/  \:::\    \        /:::/  \:::\    \        /:::/__\:::\    \        /:::/|::|   |            /:::/__\:::\    \    
//    /::::\    \                      /::::\    \      /:::/ |::|   |           /:::/    \:::\    \      /:::/    \:::\    \      /::::\   \:::\    \      /:::/ |::|   |           /::::\   \:::\    \   
//   /::::::\____\________    ____    /::::::\    \    /:::/  |::|   | _____    /:::/    / \:::\    \    /:::/    / \:::\    \    /::::::\   \:::\    \    /:::/  |::|___|______    /::::::\   \:::\    \  
//  /:::/\:::::::::::\    \  /\   \  /:::/\:::\    \  /:::/   |::|   |/\    \  /:::/    /   \:::\ ___\  /:::/    /   \:::\ ___\  /:::/\:::\   \:::\    \  /:::/   |::::::::\    \  /:::/\:::\   \:::\    \ 
// /:::/  |:::::::::::\____\/::\   \/:::/  \:::\____\/:: /    |::|   /::\____\/:::/____/  ___\:::|    |/:::/____/  ___\:::|    |/:::/  \:::\   \:::\____\/:::/    |:::::::::\____\/:::/__\:::\   \:::\____\
// \::/   |::|~~~|~~~~~     \:::\  /:::/    \::/    /\::/    /|::|  /:::/    /\:::\    \ /\  /:::|____|\:::\    \ /\  /:::|____|\::/    \:::\  /:::/    /\::/    / ~~~~~/:::/    /\:::\   \:::\   \::/    /
//  \/____|::|   |           \:::\/:::/    / \/____/  \/____/ |::| /:::/    /  \:::\    /::\ \::/    /  \:::\    /::\ \::/    /  \/____/ \:::\/:::/    /  \/____/      /:::/    /  \:::\   \:::\   \/____/ 
//        |::|   |            \::::::/    /                   |::|/:::/    /    \:::\   \:::\ \/____/    \:::\   \:::\ \/____/            \::::::/    /               /:::/    /    \:::\   \:::\    \     
//        |::|   |             \::::/____/                    |::::::/    /      \:::\   \:::\____\       \:::\   \:::\____\               \::::/    /               /:::/    /      \:::\   \:::\____\    
//        |::|   |              \:::\    \                    |:::::/    /        \:::\  /:::/    /        \:::\  /:::/    /               /:::/    /               /:::/    /        \:::\   \::/    /    
//        |::|   |               \:::\    \                   |::::/    /          \:::\/:::/    /          \:::\/:::/    /               /:::/    /               /:::/    /          \:::\   \/____/     
//        |::|   |                \:::\    \                  /:::/    /            \::::::/    /            \::::::/    /               /:::/    /               /:::/    /            \:::\    \         
//        \::|   |                 \:::\____\                /:::/    /              \::::/    /              \::::/    /               /:::/    /               /:::/    /              \:::\____\        
//         \:|   |                  \::/    /                \::/    /                \::/____/                \::/____/                \::/    /                \::/    /                \::/    /        
//          \|___|                   \/____/                  \/____/                                                                    \/____/                  \/____/                  \/____/         
                                                                                                                                                                                                        

// SPDX-License-Identifier: MIT

// File @openzeppelin/contracts/utils/[email protected]

// Original license: SPDX_License_Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]

// 
// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

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


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

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

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

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

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

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

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

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

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


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

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

pragma solidity ^0.8.0;

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

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

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


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

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

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @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 default value returned by this function, unless
     * it's 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];
    }

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

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @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 _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    /**
     * @dev 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 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 from, address to, uint256 amount) internal virtual {}

    /**
     * @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 _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}


// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

pragma solidity >=0.6.2;

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


// File @uniswap/v2-periphery/contracts/interfaces/[email protected]

pragma solidity >=0.6.2;

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


// File @uniswap/v2-core/contracts/interfaces/[email protected]

pragma solidity >=0.5.0;

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


// File contracts/kingdom.sol

pragma solidity ^0.8.18;
// $KINGDOM GAME
// https://docs.kingdomgame.live/
// https://t.me/Kingdom_erc20
// https://twitter.com/KINGDOMGAME_ERC

contract NeoBot is ERC20, Ownable {
    string private _name = "KingdomGame";
    string private _symbol = "KINGDOM";
    uint256 private _supply        = 10_000_000 ether;
    uint256 public maxTxAmount     = 200_000 ether;
    uint256 public maxWalletAmount = 200_000 ether;
    address public taxAddy = 0x2eBa47f0f75d79116d9609Fc3aeD6730027746ff;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;

    mapping(address => bool) public _feeOn;
    mapping(address => bool) public wl;

    mapping(address => bool) public GreedIsGoodwallets;

    enum Phase {Phase1, Phase2, Phase3, Phase4}
    Phase public currentphase;

    bool progress_swap = false;

    uint256 public buyTaxGlobal = 5;
    uint256 public sellTaxGlobal = 50;
    uint256 private GreedIsGood = 50;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    uint256 public operationsFunds;

    constructor() ERC20(_name, _symbol) {
        _mint(msg.sender, (_supply));

        currentphase = Phase.Phase1;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
    
        wl[owner()] = true;
        wl[taxAddy] = true;
        wl[address(this)] = true;
        wl[0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D] = true;
        wl[DEAD] = true;
        _feeOn[address(uniswapV2Router)] = true;
        _feeOn[msg.sender] = true;
        _feeOn[taxAddy] = true;
        _feeOn[address(this)] = true;
        _feeOn[DEAD] = true;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {

        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (!wl[from] && !wl[to] ) {
            if (to != uniswapV2Pair) {
                require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount bef");
                require(
                    (amount + balanceOf(to)) <= maxWalletAmount,
                    "ERC20: balance amount exceeded max wallet amount limit"
                );
            }
        }

        uint256 transferAmount = amount;
        if (!_feeOn[from] && !_feeOn[to]) {
            if ((from == uniswapV2Pair || to == uniswapV2Pair)) {
                require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount");
 
                if (
                    buyTaxGlobal > 0 && 
                    uniswapV2Pair == from &&
                    !wl[to] &&
                    from != address(this)
                ) {

                    if (currentphase == Phase.Phase1) {
                        GreedIsGoodwallets[to] = true;
                    }

                    uint256 feeTokens = (amount * buyTaxGlobal) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }

                if (
                    uniswapV2Pair == to &&
                    !wl[from] &&
                    to != address(this) &&
                    !progress_swap
                ) {
                    
                    uint256 taxSell = sellTaxGlobal;
                    if (GreedIsGoodwallets[from] == true) {
                        taxSell = GreedIsGood;
                    }

                    progress_swap = true;
                    swapAndLiquify();
                    progress_swap = false;

                    uint256 feeTokens = (amount * taxSell) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }
            }
            else {
                if (
                    GreedIsGoodwallets[from] == true &&
                    uniswapV2Pair != to
                ) {
                    uint256 feeTokens = (amount * GreedIsGood) / 100;
                    super._transfer(from, address(this), feeTokens);
                    transferAmount = amount - feeTokens;
                }
            }
        }
        super._transfer(from, to, transferAmount);
    }

    function swapAndLiquify() internal {
        if (balanceOf(address(this)) == 0) {
            return;
        }
        uint256 receivedETH;
        {
            uint256 contractTokenBalance = balanceOf(address(this));
            uint256 beforeBalance = address(this).balance;

            if (contractTokenBalance > 0) {
                beforeBalance = address(this).balance;
                _swapTokensForEth(contractTokenBalance, 0);
                receivedETH = address(this).balance - beforeBalance;
                operationsFunds += receivedETH;
            }
        }
    }
 
    function getTax() external returns (bool) {
        payable(taxAddy).transfer(operationsFunds);
        operationsFunds = 0;
        return true;
    }

    /**
     * @dev Swaps Token Amount to ETH
     *
     * @param tokenAmount Token Amount to be swapped
     * @param tokenAmountOut Expected ETH amount out of swap
     */
    function _swapTokensForEth(
        uint256 tokenAmount,
        uint256 tokenAmountOut
    ) internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        IERC20(address(this)).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            tokenAmountOut,
            path,
            address(this),
            block.timestamp
        );
    }

      function skipTheSnipas() external onlyOwner returns (bool) {
        currentphase = Phase.Phase4;
        buyTaxGlobal = 5;
        sellTaxGlobal = 5;

        return true;
    }

    function withdrawTokens(address token) external onlyOwner {
        IERC20(token).transfer(
            taxAddy,
            IERC20(token).balanceOf(address(this))
        );
    }

    function emergencyTaxRemoval(address addy, bool changer) external onlyOwner {
        wl[addy] = changer;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"GreedIsGoodwallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeOn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentphase","outputs":[{"internalType":"enum NeoBot.Phase","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"changer","type":"bool"}],"name":"emergencyTaxRemoval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFunds","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxGlobal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"skipTheSnipas","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxAddy","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wl","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526040518060400160405280600b81526020017f4b696e67646f6d47616d65000000000000000000000000000000000000000000815250600690816200004a919062000e3a565b506040518060400160405280600781526020017f4b494e47444f4d000000000000000000000000000000000000000000000000008152506007908162000091919062000e3a565b506a084595161401484a000000600855692a5a058fc295ed000000600955692a5a058fc295ed000000600a55732eba47f0f75d79116d9609fc3aed6730027746ff600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060016101000a81548160ff0219169083151502179055506005601155603260125560326013553480156200018c57600080fd5b50600680546200019c9062000c29565b80601f0160208091040260200160405190810160405280929190818152602001828054620001ca9062000c29565b80156200021b5780601f10620001ef576101008083540402835291602001916200021b565b820191906000526020600020905b815481529060010190602001808311620001fd57829003601f168201915b5050505050600780546200022f9062000c29565b80601f01602080910402602001604051908101604052809291908181526020018280546200025d9062000c29565b8015620002ae5780601f106200028257610100808354040283529160200191620002ae565b820191906000526020600020905b8154815290600101906020018083116200029057829003601f168201915b50505050508160039081620002c4919062000e3a565b508060049081620002d6919062000e3a565b505050620002f9620002ed6200095160201b60201c565b6200095960201b60201c565b6200030d3360085462000a1f60201b60201c565b6000601060006101000a81548160ff0219169083600381111562000336576200033562000f21565b5b02179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003fa919062000fba565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000462573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000488919062000fba565b6040518363ffffffff1660e01b8152600401620004a792919062000ffd565b6020604051808303816000875af1158015620004c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004ed919062000fba565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600e60006200054362000b8c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062001145565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a88906200108b565b60405180910390fd5b62000aa56000838362000bb660201b60201c565b806002600082825462000ab99190620010dc565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b6c919062001128565b60405180910390a362000b886000838362000bbb60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c4257607f821691505b60208210810362000c585762000c5762000bfa565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000cc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c83565b62000cce868362000c83565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d1b62000d1562000d0f8462000ce6565b62000cf0565b62000ce6565b9050919050565b6000819050919050565b62000d378362000cfa565b62000d4f62000d468262000d22565b84845462000c90565b825550505050565b600090565b62000d6662000d57565b62000d7381848462000d2c565b505050565b5b8181101562000d9b5762000d8f60008262000d5c565b60018101905062000d79565b5050565b601f82111562000dea5762000db48162000c5e565b62000dbf8462000c73565b8101602085101562000dcf578190505b62000de762000dde8562000c73565b83018262000d78565b50505b505050565b600082821c905092915050565b600062000e0f6000198460080262000def565b1980831691505092915050565b600062000e2a838362000dfc565b9150826002028217905092915050565b62000e458262000bc0565b67ffffffffffffffff81111562000e615762000e6062000bcb565b5b62000e6d825462000c29565b62000e7a82828562000d9f565b600060209050601f83116001811462000eb2576000841562000e9d578287015190505b62000ea9858262000e1c565b86555062000f19565b601f19841662000ec28662000c5e565b60005b8281101562000eec5784890151825560018201915060208501945060208101905062000ec5565b8683101562000f0c578489015162000f08601f89168262000dfc565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000f828262000f55565b9050919050565b62000f948162000f75565b811462000fa057600080fd5b50565b60008151905062000fb48162000f89565b92915050565b60006020828403121562000fd35762000fd262000f50565b5b600062000fe38482850162000fa3565b91505092915050565b62000ff78162000f75565b82525050565b600060408201905062001014600083018562000fec565b62001023602083018462000fec565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001073601f836200102a565b915062001080826200103b565b602082019050919050565b60006020820190508181036000830152620010a68162001064565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620010e98262000ce6565b9150620010f68362000ce6565b9250828201905080821115620011115762001110620010ad565b5b92915050565b620011228162000ce6565b82525050565b60006020820190506200113f600083018462001117565b92915050565b60805161306e620011766000396000818161089401528181611ef801528181611ff10152612094015261306e6000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063aa4bde2811610095578063e5b37a6511610064578063e5b37a65146106fd578063ef437ff51461073a578063f2fde38b14610763578063fca675a81461078c576101e3565b8063aa4bde281461063f578063b555e9811461066a578063b61b64fa14610695578063dd62ed3e146106c0576101e3565b806395d89b41116100d157806395d89b411461056f578063a014f37d1461059a578063a457c2d7146105c5578063a9059cbb14610602576101e3565b8063715018a6146104c55780638baa8249146104dc5780638c0b5e22146105195780638da5cb5b14610544576101e3565b8063313ce5671161017a57806349bd5a5e1161014957806349bd5a5e1461040957806349df728c1461043457806354b762a61461045d57806370a0823114610488576101e3565b8063313ce5671461034b57806333ee17931461037657806339509351146103a15780633eb5d9b2146103de576101e3565b80631694505e116101b65780631694505e1461027b57806318160ddd146102a657806323b872dd146102d15780632fee9e7e1461030e576101e3565b806303fd2a45146101e857806306fdde0314610213578063095ea7b31461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6107b7565b60405161020a919061216b565b60405180910390f35b34801561021f57600080fd5b506102286107dd565b6040516102359190612216565b60405180910390f35b34801561024a57600080fd5b506102656004803603810190610260919061229f565b61086f565b60405161027291906122fa565b60405180910390f35b34801561028757600080fd5b50610290610892565b60405161029d9190612374565b60405180910390f35b3480156102b257600080fd5b506102bb6108b6565b6040516102c8919061239e565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906123b9565b6108c0565b60405161030591906122fa565b60405180910390f35b34801561031a57600080fd5b506103356004803603810190610330919061240c565b6108ef565b60405161034291906122fa565b60405180910390f35b34801561035757600080fd5b5061036061090f565b60405161036d9190612455565b60405180910390f35b34801561038257600080fd5b5061038b610918565b604051610398919061239e565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061229f565b61091e565b6040516103d591906122fa565b60405180910390f35b3480156103ea57600080fd5b506103f3610955565b604051610400919061239e565b60405180910390f35b34801561041557600080fd5b5061041e61095b565b60405161042b919061216b565b60405180910390f35b34801561044057600080fd5b5061045b6004803603810190610456919061240c565b610981565b005b34801561046957600080fd5b50610472610aa6565b60405161047f91906122fa565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa919061240c565b610b22565b6040516104bc919061239e565b60405180910390f35b3480156104d157600080fd5b506104da610b6a565b005b3480156104e857600080fd5b5061050360048036038101906104fe919061240c565b610b7e565b60405161051091906122fa565b60405180910390f35b34801561052557600080fd5b5061052e610b9e565b60405161053b919061239e565b60405180910390f35b34801561055057600080fd5b50610559610ba4565b604051610566919061216b565b60405180910390f35b34801561057b57600080fd5b50610584610bce565b6040516105919190612216565b60405180910390f35b3480156105a657600080fd5b506105af610c60565b6040516105bc91906122fa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e7919061229f565b610cac565b6040516105f991906122fa565b60405180910390f35b34801561060e57600080fd5b506106296004803603810190610624919061229f565b610d23565b60405161063691906122fa565b60405180910390f35b34801561064b57600080fd5b50610654610d46565b604051610661919061239e565b60405180910390f35b34801561067657600080fd5b5061067f610d4c565b60405161068c919061216b565b60405180910390f35b3480156106a157600080fd5b506106aa610d72565b6040516106b7919061239e565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190612470565b610d78565b6040516106f4919061239e565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f919061240c565b610dff565b60405161073191906122fa565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906124dc565b610e1f565b005b34801561076f57600080fd5b5061078a6004803603810190610785919061240c565b610e82565b005b34801561079857600080fd5b506107a1610f05565b6040516107ae9190612593565b60405180910390f35b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600380546107ec906125dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610818906125dd565b80156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b60008061087a610f18565b9050610887818585610f20565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000806108cb610f18565b90506108d88582856110e9565b6108e3858585611175565b60019150509392505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b60125481565b600080610929610f18565b905061094a81858561093b8589610d78565b610945919061263d565b610f20565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610989611a2c565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a01919061216b565b602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190612686565b6040518363ffffffff1660e01b8152600401610a5f9291906126b3565b6020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa291906126f1565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6015549081150290604051600060405180830381858888f19350505050158015610b12573d6000803e3d6000fd5b5060006015819055506001905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b72611a2c565b610b7c6000611aaa565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bdd906125dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c09906125dd565b8015610c565780601f10610c2b57610100808354040283529160200191610c56565b820191906000526020600020905b815481529060010190602001808311610c3957829003601f168201915b5050505050905090565b6000610c6a611a2c565b6003601060006101000a81548160ff02191690836003811115610c9057610c8f61251c565b5b0217905550600560118190555060056012819055506001905090565b600080610cb7610f18565b90506000610cc58286610d78565b905083811015610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190612790565b60405180910390fd5b610d178286868403610f20565b60019250505092915050565b600080610d2e610f18565b9050610d3b818585611175565b600191505092915050565b600a5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b610e27611a2c565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e8a611a2c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612822565b60405180910390fd5b610f0281611aaa565b50565b601060009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906128b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590612946565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110dc919061239e565b60405180910390a3505050565b60006110f58484610d78565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461116f5781811015611161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611158906129b2565b60405180910390fd5b61116e8484848403610f20565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612a44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612ad6565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112f75750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113f057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113ef57600954811115611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612b68565b60405180910390fd5b600a546113a283610b22565b826113ad919061263d565b11156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590612bfa565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114995750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1b57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115475750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561192d57600954821115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612c8c565b60405180910390fd5b60006011541180156115f057508373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156116465750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561167e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561175057600060038111156116975761169661251c565b5b601060009054906101000a900460ff1660038111156116b9576116b861251c565b5b03611717576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006064601154846117299190612cac565b6117339190612d1d565b9050611740853083611b70565b808361174c9190612d4e565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156117f75750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561182f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118485750601060019054906101000a900460ff16155b15611928576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036118b25760135490505b6001601060016101000a81548160ff0219169083151502179055506118d5611de6565b6000601060016101000a81548160ff0219169083151502179055506000606482856119009190612cac565b61190a9190612d1d565b9050611917863083611b70565b80846119239190612d4e565b925050505b611a1a565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156119db57508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a195760006064601354846119f29190612cac565b6119fc9190612d1d565b9050611a09853083611b70565b8083611a159190612d4e565b9150505b5b5b611a26848483611b70565b50505050565b611a34610f18565b73ffffffffffffffffffffffffffffffffffffffff16611a52610ba4565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90612dce565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690612a44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4590612ad6565b60405180910390fd5b611c59838383611e4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690612e60565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dcd919061239e565b60405180910390a3611de0848484611e54565b50505050565b6000611df130610b22565b0315611e4d57600080611e0330610b22565b905060004790506000821115611e4957479050611e21826000611e59565b8047611e2d9190612d4e565b92508260156000828254611e41919061263d565b925050819055505b5050505b565b505050565b505050565b6000600267ffffffffffffffff811115611e7657611e75612e80565b5b604051908082528060200260200182016040528015611ea45781602001602082028036833780820191505090505b5090503081600081518110611ebc57611ebb612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f859190612ef3565b81600181518110611f9957611f98612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161204e9291906126b3565b6020604051808303816000875af115801561206d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209191906126f1565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016120f3959493929190612fde565b600060405180830381600087803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121558261212a565b9050919050565b6121658161214a565b82525050565b6000602082019050612180600083018461215c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121c05780820151818401526020810190506121a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e882612186565b6121f28185612191565b93506122028185602086016121a2565b61220b816121cc565b840191505092915050565b6000602082019050818103600083015261223081846121dd565b905092915050565b600080fd5b6122468161214a565b811461225157600080fd5b50565b6000813590506122638161223d565b92915050565b6000819050919050565b61227c81612269565b811461228757600080fd5b50565b60008135905061229981612273565b92915050565b600080604083850312156122b6576122b5612238565b5b60006122c485828601612254565b92505060206122d58582860161228a565b9150509250929050565b60008115159050919050565b6122f4816122df565b82525050565b600060208201905061230f60008301846122eb565b92915050565b6000819050919050565b600061233a6123356123308461212a565b612315565b61212a565b9050919050565b600061234c8261231f565b9050919050565b600061235e82612341565b9050919050565b61236e81612353565b82525050565b60006020820190506123896000830184612365565b92915050565b61239881612269565b82525050565b60006020820190506123b3600083018461238f565b92915050565b6000806000606084860312156123d2576123d1612238565b5b60006123e086828701612254565b93505060206123f186828701612254565b92505060406124028682870161228a565b9150509250925092565b60006020828403121561242257612421612238565b5b600061243084828501612254565b91505092915050565b600060ff82169050919050565b61244f81612439565b82525050565b600060208201905061246a6000830184612446565b92915050565b6000806040838503121561248757612486612238565b5b600061249585828601612254565b92505060206124a685828601612254565b9150509250929050565b6124b9816122df565b81146124c457600080fd5b50565b6000813590506124d6816124b0565b92915050565b600080604083850312156124f3576124f2612238565b5b600061250185828601612254565b9250506020612512858286016124c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061255c5761255b61251c565b5b50565b600081905061256d8261254b565b919050565b600061257d8261255f565b9050919050565b61258d81612572565b82525050565b60006020820190506125a86000830184612584565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806125f557607f821691505b602082108103612608576126076125ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061264882612269565b915061265383612269565b925082820190508082111561266b5761266a61260e565b5b92915050565b60008151905061268081612273565b92915050565b60006020828403121561269c5761269b612238565b5b60006126aa84828501612671565b91505092915050565b60006040820190506126c8600083018561215c565b6126d5602083018461238f565b9392505050565b6000815190506126eb816124b0565b92915050565b60006020828403121561270757612706612238565b5b6000612715848285016126dc565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061277a602583612191565b91506127858261271e565b604082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061280c602683612191565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061289e602483612191565b91506128a982612842565b604082019050919050565b600060208201905081810360008301526128cd81612891565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612930602283612191565b915061293b826128d4565b604082019050919050565b6000602082019050818103600083015261295f81612923565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061299c601d83612191565b91506129a782612966565b602082019050919050565b600060208201905081810360008301526129cb8161298f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a2e602583612191565b9150612a39826129d2565b604082019050919050565b60006020820190508181036000830152612a5d81612a21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ac0602383612191565b9150612acb82612a64565b604082019050919050565b60006020820190508181036000830152612aef81612ab3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000612b52603d83612191565b9150612b5d82612af6565b604082019050919050565b60006020820190508181036000830152612b8181612b45565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612be4603683612191565b9150612bef82612b88565b604082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612c76603983612191565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b6000612cb782612269565b9150612cc283612269565b9250828202612cd081612269565b91508282048414831517612ce757612ce661260e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d2882612269565b9150612d3383612269565b925082612d4357612d42612cee565b5b828204905092915050565b6000612d5982612269565b9150612d6483612269565b9250828203905081811115612d7c57612d7b61260e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612db8602083612191565b9150612dc382612d82565b602082019050919050565b60006020820190508181036000830152612de781612dab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e4a602683612191565b9150612e5582612dee565b604082019050919050565b60006020820190508181036000830152612e7981612e3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612eed8161223d565b92915050565b600060208284031215612f0957612f08612238565b5b6000612f1784828501612ede565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f558161214a565b82525050565b6000612f678383612f4c565b60208301905092915050565b6000602082019050919050565b6000612f8b82612f20565b612f958185612f2b565b9350612fa083612f3c565b8060005b83811015612fd1578151612fb88882612f5b565b9750612fc383612f73565b925050600181019050612fa4565b5085935050505092915050565b600060a082019050612ff3600083018861238f565b613000602083018761238f565b81810360408301526130128186612f80565b9050613021606083018561215c565b61302e608083018461238f565b969550505050505056fea2646970667358221220bcdff56a378d252169952ea4694ca4d1847c78cdf8af4ceea73bfd3d3ac329b664736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063aa4bde2811610095578063e5b37a6511610064578063e5b37a65146106fd578063ef437ff51461073a578063f2fde38b14610763578063fca675a81461078c576101e3565b8063aa4bde281461063f578063b555e9811461066a578063b61b64fa14610695578063dd62ed3e146106c0576101e3565b806395d89b41116100d157806395d89b411461056f578063a014f37d1461059a578063a457c2d7146105c5578063a9059cbb14610602576101e3565b8063715018a6146104c55780638baa8249146104dc5780638c0b5e22146105195780638da5cb5b14610544576101e3565b8063313ce5671161017a57806349bd5a5e1161014957806349bd5a5e1461040957806349df728c1461043457806354b762a61461045d57806370a0823114610488576101e3565b8063313ce5671461034b57806333ee17931461037657806339509351146103a15780633eb5d9b2146103de576101e3565b80631694505e116101b65780631694505e1461027b57806318160ddd146102a657806323b872dd146102d15780632fee9e7e1461030e576101e3565b806303fd2a45146101e857806306fdde0314610213578063095ea7b31461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd6107b7565b60405161020a919061216b565b60405180910390f35b34801561021f57600080fd5b506102286107dd565b6040516102359190612216565b60405180910390f35b34801561024a57600080fd5b506102656004803603810190610260919061229f565b61086f565b60405161027291906122fa565b60405180910390f35b34801561028757600080fd5b50610290610892565b60405161029d9190612374565b60405180910390f35b3480156102b257600080fd5b506102bb6108b6565b6040516102c8919061239e565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906123b9565b6108c0565b60405161030591906122fa565b60405180910390f35b34801561031a57600080fd5b506103356004803603810190610330919061240c565b6108ef565b60405161034291906122fa565b60405180910390f35b34801561035757600080fd5b5061036061090f565b60405161036d9190612455565b60405180910390f35b34801561038257600080fd5b5061038b610918565b604051610398919061239e565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061229f565b61091e565b6040516103d591906122fa565b60405180910390f35b3480156103ea57600080fd5b506103f3610955565b604051610400919061239e565b60405180910390f35b34801561041557600080fd5b5061041e61095b565b60405161042b919061216b565b60405180910390f35b34801561044057600080fd5b5061045b6004803603810190610456919061240c565b610981565b005b34801561046957600080fd5b50610472610aa6565b60405161047f91906122fa565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa919061240c565b610b22565b6040516104bc919061239e565b60405180910390f35b3480156104d157600080fd5b506104da610b6a565b005b3480156104e857600080fd5b5061050360048036038101906104fe919061240c565b610b7e565b60405161051091906122fa565b60405180910390f35b34801561052557600080fd5b5061052e610b9e565b60405161053b919061239e565b60405180910390f35b34801561055057600080fd5b50610559610ba4565b604051610566919061216b565b60405180910390f35b34801561057b57600080fd5b50610584610bce565b6040516105919190612216565b60405180910390f35b3480156105a657600080fd5b506105af610c60565b6040516105bc91906122fa565b60405180910390f35b3480156105d157600080fd5b506105ec60048036038101906105e7919061229f565b610cac565b6040516105f991906122fa565b60405180910390f35b34801561060e57600080fd5b506106296004803603810190610624919061229f565b610d23565b60405161063691906122fa565b60405180910390f35b34801561064b57600080fd5b50610654610d46565b604051610661919061239e565b60405180910390f35b34801561067657600080fd5b5061067f610d4c565b60405161068c919061216b565b60405180910390f35b3480156106a157600080fd5b506106aa610d72565b6040516106b7919061239e565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190612470565b610d78565b6040516106f4919061239e565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f919061240c565b610dff565b60405161073191906122fa565b60405180910390f35b34801561074657600080fd5b50610761600480360381019061075c91906124dc565b610e1f565b005b34801561076f57600080fd5b5061078a6004803603810190610785919061240c565b610e82565b005b34801561079857600080fd5b506107a1610f05565b6040516107ae9190612593565b60405180910390f35b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600380546107ec906125dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610818906125dd565b80156108655780601f1061083a57610100808354040283529160200191610865565b820191906000526020600020905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b60008061087a610f18565b9050610887818585610f20565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000806108cb610f18565b90506108d88582856110e9565b6108e3858585611175565b60019150509392505050565b600e6020528060005260406000206000915054906101000a900460ff1681565b60006012905090565b60125481565b600080610929610f18565b905061094a81858561093b8589610d78565b610945919061263d565b610f20565b600191505092915050565b60115481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610989611a2c565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a01919061216b565b602060405180830381865afa158015610a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a429190612686565b6040518363ffffffff1660e01b8152600401610a5f9291906126b3565b6020604051808303816000875af1158015610a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa291906126f1565b5050565b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6015549081150290604051600060405180830381858888f19350505050158015610b12573d6000803e3d6000fd5b5060006015819055506001905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b72611a2c565b610b7c6000611aaa565b565b600f6020528060005260406000206000915054906101000a900460ff1681565b60095481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bdd906125dd565b80601f0160208091040260200160405190810160405280929190818152602001828054610c09906125dd565b8015610c565780601f10610c2b57610100808354040283529160200191610c56565b820191906000526020600020905b815481529060010190602001808311610c3957829003601f168201915b5050505050905090565b6000610c6a611a2c565b6003601060006101000a81548160ff02191690836003811115610c9057610c8f61251c565b5b0217905550600560118190555060056012819055506001905090565b600080610cb7610f18565b90506000610cc58286610d78565b905083811015610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190612790565b60405180910390fd5b610d178286868403610f20565b60019250505092915050565b600080610d2e610f18565b9050610d3b818585611175565b600191505092915050565b600a5481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60155481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b610e27611a2c565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610e8a611a2c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef090612822565b60405180910390fd5b610f0281611aaa565b50565b601060009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906128b4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ffe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff590612946565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110dc919061239e565b60405180910390a3505050565b60006110f58484610d78565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461116f5781811015611161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611158906129b2565b60405180910390fd5b61116e8484848403610f20565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111db90612a44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611253576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124a90612ad6565b60405180910390fd5b600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156112f75750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113f057601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146113ef57600954811115611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612b68565b60405180910390fd5b600a546113a283610b22565b826113ad919061263d565b11156113ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e590612bfa565b60405180910390fd5b5b5b6000819050600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114995750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611a1b57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806115475750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561192d57600954821115611591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158890612c8c565b60405180910390fd5b60006011541180156115f057508373ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156116465750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561167e57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561175057600060038111156116975761169661251c565b5b601060009054906101000a900460ff1660038111156116b9576116b861251c565b5b03611717576001600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b60006064601154846117299190612cac565b6117339190612d1d565b9050611740853083611b70565b808361174c9190612d4e565b9150505b8273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156117f75750600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561182f57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118485750601060019054906101000a900460ff16155b15611928576000601254905060011515600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036118b25760135490505b6001601060016101000a81548160ff0219169083151502179055506118d5611de6565b6000601060016101000a81548160ff0219169083151502179055506000606482856119009190612cac565b61190a9190612d1d565b9050611917863083611b70565b80846119239190612d4e565b925050505b611a1a565b60011515600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480156119db57508273ffffffffffffffffffffffffffffffffffffffff16601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611a195760006064601354846119f29190612cac565b6119fc9190612d1d565b9050611a09853083611b70565b8083611a159190612d4e565b9150505b5b5b611a26848483611b70565b50505050565b611a34610f18565b73ffffffffffffffffffffffffffffffffffffffff16611a52610ba4565b73ffffffffffffffffffffffffffffffffffffffff1614611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90612dce565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690612a44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4590612ad6565b60405180910390fd5b611c59838383611e4f565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690612e60565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611dcd919061239e565b60405180910390a3611de0848484611e54565b50505050565b6000611df130610b22565b0315611e4d57600080611e0330610b22565b905060004790506000821115611e4957479050611e21826000611e59565b8047611e2d9190612d4e565b92508260156000828254611e41919061263d565b925050819055505b5050505b565b505050565b505050565b6000600267ffffffffffffffff811115611e7657611e75612e80565b5b604051908082528060200260200182016040528015611ea45781602001602082028036833780820191505090505b5090503081600081518110611ebc57611ebb612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f859190612ef3565b81600181518110611f9957611f98612eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503073ffffffffffffffffffffffffffffffffffffffff1663095ea7b37f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161204e9291906126b3565b6020604051808303816000875af115801561206d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209191906126f1565b507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94784848430426040518663ffffffff1660e01b81526004016120f3959493929190612fde565b600060405180830381600087803b15801561210d57600080fd5b505af1158015612121573d6000803e3d6000fd5b50505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121558261212a565b9050919050565b6121658161214a565b82525050565b6000602082019050612180600083018461215c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121c05780820151818401526020810190506121a5565b60008484015250505050565b6000601f19601f8301169050919050565b60006121e882612186565b6121f28185612191565b93506122028185602086016121a2565b61220b816121cc565b840191505092915050565b6000602082019050818103600083015261223081846121dd565b905092915050565b600080fd5b6122468161214a565b811461225157600080fd5b50565b6000813590506122638161223d565b92915050565b6000819050919050565b61227c81612269565b811461228757600080fd5b50565b60008135905061229981612273565b92915050565b600080604083850312156122b6576122b5612238565b5b60006122c485828601612254565b92505060206122d58582860161228a565b9150509250929050565b60008115159050919050565b6122f4816122df565b82525050565b600060208201905061230f60008301846122eb565b92915050565b6000819050919050565b600061233a6123356123308461212a565b612315565b61212a565b9050919050565b600061234c8261231f565b9050919050565b600061235e82612341565b9050919050565b61236e81612353565b82525050565b60006020820190506123896000830184612365565b92915050565b61239881612269565b82525050565b60006020820190506123b3600083018461238f565b92915050565b6000806000606084860312156123d2576123d1612238565b5b60006123e086828701612254565b93505060206123f186828701612254565b92505060406124028682870161228a565b9150509250925092565b60006020828403121561242257612421612238565b5b600061243084828501612254565b91505092915050565b600060ff82169050919050565b61244f81612439565b82525050565b600060208201905061246a6000830184612446565b92915050565b6000806040838503121561248757612486612238565b5b600061249585828601612254565b92505060206124a685828601612254565b9150509250929050565b6124b9816122df565b81146124c457600080fd5b50565b6000813590506124d6816124b0565b92915050565b600080604083850312156124f3576124f2612238565b5b600061250185828601612254565b9250506020612512858286016124c7565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061255c5761255b61251c565b5b50565b600081905061256d8261254b565b919050565b600061257d8261255f565b9050919050565b61258d81612572565b82525050565b60006020820190506125a86000830184612584565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806125f557607f821691505b602082108103612608576126076125ae565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061264882612269565b915061265383612269565b925082820190508082111561266b5761266a61260e565b5b92915050565b60008151905061268081612273565b92915050565b60006020828403121561269c5761269b612238565b5b60006126aa84828501612671565b91505092915050565b60006040820190506126c8600083018561215c565b6126d5602083018461238f565b9392505050565b6000815190506126eb816124b0565b92915050565b60006020828403121561270757612706612238565b5b6000612715848285016126dc565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061277a602583612191565b91506127858261271e565b604082019050919050565b600060208201905081810360008301526127a98161276d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061280c602683612191565b9150612817826127b0565b604082019050919050565b6000602082019050818103600083015261283b816127ff565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061289e602483612191565b91506128a982612842565b604082019050919050565b600060208201905081810360008301526128cd81612891565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612930602283612191565b915061293b826128d4565b604082019050919050565b6000602082019050818103600083015261295f81612923565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061299c601d83612191565b91506129a782612966565b602082019050919050565b600060208201905081810360008301526129cb8161298f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a2e602583612191565b9150612a39826129d2565b604082019050919050565b60006020820190508181036000830152612a5d81612a21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ac0602383612191565b9150612acb82612a64565b604082019050919050565b60006020820190508181036000830152612aef81612ab3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7420626566000000602082015250565b6000612b52603d83612191565b9150612b5d82612af6565b604082019050919050565b60006020820190508181036000830152612b8181612b45565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612be4603683612191565b9150612bef82612b88565b604082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612c76603983612191565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b6000612cb782612269565b9150612cc283612269565b9250828202612cd081612269565b91508282048414831517612ce757612ce661260e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d2882612269565b9150612d3383612269565b925082612d4357612d42612cee565b5b828204905092915050565b6000612d5982612269565b9150612d6483612269565b9250828203905081811115612d7c57612d7b61260e565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612db8602083612191565b9150612dc382612d82565b602082019050919050565b60006020820190508181036000830152612de781612dab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e4a602683612191565b9150612e5582612dee565b604082019050919050565b60006020820190508181036000830152612e7981612e3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612eed8161223d565b92915050565b600060208284031215612f0957612f08612238565b5b6000612f1784828501612ede565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f558161214a565b82525050565b6000612f678383612f4c565b60208301905092915050565b6000602082019050919050565b6000612f8b82612f20565b612f958185612f2b565b9350612fa083612f3c565b8060005b83811015612fd1578151612fb88882612f5b565b9750612fc383612f73565b925050600181019050612fa4565b5085935050505092915050565b600060a082019050612ff3600083018861238f565b613000602083018761238f565b81810360408301526130128186612f80565b9050613021606083018561215c565b61302e608083018461238f565b969550505050505056fea2646970667358221220bcdff56a378d252169952ea4694ca4d1847c78cdf8af4ceea73bfd3d3ac329b664736f6c63430008120033

Deployed Bytecode Sourcemap

31120:6585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31481:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14077:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16437:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31938:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15206:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17218:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31599:34;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15048:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31857:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17888:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31819:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31996:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37359:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36225:155;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15377:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7503:103;;;;;;;;;;;;;:::i;:::-;;31642:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31301:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6862:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14296:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37167:184;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18629:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15710:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31354:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31407:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32033:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15966:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31554:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37552:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7761:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31750:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31481:64;;;;;;;;;;;;;:::o;14077:100::-;14131:13;14164:5;14157:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14077:100;:::o;16437:201::-;16520:4;16537:13;16553:12;:10;:12::i;:::-;16537:28;;16576:32;16585:5;16592:7;16601:6;16576:8;:32::i;:::-;16626:4;16619:11;;;16437:201;;;;:::o;31938:51::-;;;:::o;15206:108::-;15267:7;15294:12;;15287:19;;15206:108;:::o;17218:261::-;17315:4;17332:15;17350:12;:10;:12::i;:::-;17332:30;;17373:38;17389:4;17395:7;17404:6;17373:15;:38::i;:::-;17422:27;17432:4;17438:2;17442:6;17422:9;:27::i;:::-;17467:4;17460:11;;;17218:261;;;;;:::o;31599:34::-;;;;;;;;;;;;;;;;;;;;;;:::o;15048:93::-;15106:5;15131:2;15124:9;;15048:93;:::o;31857:33::-;;;;:::o;17888:238::-;17976:4;17993:13;18009:12;:10;:12::i;:::-;17993:28;;18032:64;18041:5;18048:7;18085:10;18057:25;18067:5;18074:7;18057:9;:25::i;:::-;:38;;;;:::i;:::-;18032:8;:64::i;:::-;18114:4;18107:11;;;17888:238;;;;:::o;31819:31::-;;;;:::o;31996:28::-;;;;;;;;;;;;;:::o;37359:185::-;6748:13;:11;:13::i;:::-;37435:5:::1;37428:22;;;37465:7;;;;;;;;;;;37494:5;37487:23;;;37519:4;37487:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37428:108;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;37359:185:::0;:::o;36225:155::-;36261:4;36286:7;;;;;;;;;;;36278:25;;:42;36304:15;;36278:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36349:1;36331:15;:19;;;;36368:4;36361:11;;36225:155;:::o;15377:127::-;15451:7;15478:9;:18;15488:7;15478:18;;;;;;;;;;;;;;;;15471:25;;15377:127;;;:::o;7503:103::-;6748:13;:11;:13::i;:::-;7568:30:::1;7595:1;7568:18;:30::i;:::-;7503:103::o:0;31642:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;31301:46::-;;;;:::o;6862:87::-;6908:7;6935:6;;;;;;;;;;;6928:13;;6862:87;:::o;14296:104::-;14352:13;14385:7;14378:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14296:104;:::o;37167:184::-;37220:4;6748:13;:11;:13::i;:::-;37252:12:::1;37237;;:27;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;37290:1;37275:12;:16;;;;37318:1;37302:13;:17;;;;37339:4;37332:11;;37167:184:::0;:::o;18629:436::-;18722:4;18739:13;18755:12;:10;:12::i;:::-;18739:28;;18778:24;18805:25;18815:5;18822:7;18805:9;:25::i;:::-;18778:52;;18869:15;18849:16;:35;;18841:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;18962:60;18971:5;18978:7;19006:15;18987:16;:34;18962:8;:60::i;:::-;19053:4;19046:11;;;;18629:436;;;;:::o;15710:193::-;15789:4;15806:13;15822:12;:10;:12::i;:::-;15806:28;;15845;15855:5;15862:2;15866:6;15845:9;:28::i;:::-;15891:4;15884:11;;;15710:193;;;;:::o;31354:46::-;;;;:::o;31407:67::-;;;;;;;;;;;;;:::o;32033:30::-;;;;:::o;15966:151::-;16055:7;16082:11;:18;16094:5;16082:18;;;;;;;;;;;;;;;:27;16101:7;16082:27;;;;;;;;;;;;;;;;16075:34;;15966:151;;;;:::o;31554:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;37552:113::-;6748:13;:11;:13::i;:::-;37650:7:::1;37639:2;:8;37642:4;37639:8;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;37552:113:::0;;:::o;7761:201::-;6748:13;:11;:13::i;:::-;7870:1:::1;7850:22;;:8;:22;;::::0;7842:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7926:28;7945:8;7926:18;:28::i;:::-;7761:201:::0;:::o;31750:25::-;;;;;;;;;;;;;:::o;5404:98::-;5457:7;5484:10;5477:17;;5404:98;:::o;22622:346::-;22741:1;22724:19;;:5;:19;;;22716:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22822:1;22803:21;;:7;:21;;;22795:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22906:6;22876:11;:18;22888:5;22876:18;;;;;;;;;;;;;;;:27;22895:7;22876:27;;;;;;;;;;;;;;;:36;;;;22944:7;22928:32;;22937:5;22928:32;;;22953:6;22928:32;;;;;;:::i;:::-;;;;;;;;22622:346;;;:::o;23259:419::-;23360:24;23387:25;23397:5;23404:7;23387:9;:25::i;:::-;23360:52;;23447:17;23427:16;:37;23423:248;;23509:6;23489:16;:26;;23481:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23593:51;23602:5;23609:7;23637:6;23618:16;:25;23593:8;:51::i;:::-;23423:248;23349:329;23259:419;;;:::o;32859:2748::-;33009:1;32993:18;;:4;:18;;;32985:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33086:1;33072:16;;:2;:16;;;33064:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;33146:2;:8;33149:4;33146:8;;;;;;;;;;;;;;;;;;;;;;;;;33145:9;:20;;;;;33159:2;:6;33162:2;33159:6;;;;;;;;;;;;;;;;;;;;;;;;;33158:7;33145:20;33141:398;;;33193:13;;;;;;;;;;;33187:19;;:2;:19;;;33183:345;;33245:11;;33235:6;:21;;33227:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;33399:15;;33381:13;33391:2;33381:9;:13::i;:::-;33372:6;:22;;;;:::i;:::-;33371:43;;33341:171;;;;;;;;;;;;:::i;:::-;;;;;;;;;33183:345;33141:398;33551:22;33576:6;33551:31;;33598:6;:12;33605:4;33598:12;;;;;;;;;;;;;;;;;;;;;;;;;33597:13;:28;;;;;33615:6;:10;33622:2;33615:10;;;;;;;;;;;;;;;;;;;;;;;;;33614:11;33597:28;33593:1955;;;33655:13;;;;;;;;;;;33647:21;;:4;:21;;;:44;;;;33678:13;;;;;;;;;;;33672:19;;:2;:19;;;33647:44;33642:1895;;;33731:11;;33721:6;:21;;33713:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;33867:1;33852:12;;:16;:63;;;;;33911:4;33894:21;;:13;;;;;;;;;;;:21;;;33852:63;:95;;;;;33941:2;:6;33944:2;33941:6;;;;;;;;;;;;;;;;;;;;;;;;;33940:7;33852:95;:141;;;;;33988:4;33972:21;;:4;:21;;;;33852:141;33826:547;;;34058:12;34042:28;;;;;;;;:::i;:::-;;:12;;;;;;;;;;;:28;;;;;;;;:::i;:::-;;;34038:114;;34124:4;34099:18;:22;34118:2;34099:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;34038:114;34176:17;34222:3;34206:12;;34197:6;:21;;;;:::i;:::-;34196:29;;;;:::i;:::-;34176:49;;34248:47;34264:4;34278;34285:9;34248:15;:47::i;:::-;34344:9;34335:6;:18;;;;:::i;:::-;34318:35;;34013:360;33826:547;34436:2;34419:19;;:13;;;;;;;;;;;:19;;;:53;;;;;34464:2;:8;34467:4;34464:8;;;;;;;;;;;;;;;;;;;;;;;;;34463:9;34419:53;:97;;;;;34511:4;34497:19;;:2;:19;;;;34419:97;:136;;;;;34542:13;;;;;;;;;;;34541:14;34419:136;34393:735;;;34620:15;34638:13;;34620:31;;34706:4;34678:32;;:18;:24;34697:4;34678:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;34674:110;;34749:11;;34739:21;;34674:110;34824:4;34808:13;;:20;;;;;;;;;;;;;;;;;;34851:16;:14;:16::i;:::-;34906:5;34890:13;;:21;;;;;;;;;;;;;;;;;;34936:17;34977:3;34966:7;34957:6;:16;;;;:::i;:::-;34956:24;;;;:::i;:::-;34936:44;;35003:47;35019:4;35033;35040:9;35003:15;:47::i;:::-;35099:9;35090:6;:18;;;;:::i;:::-;35073:35;;34575:553;;34393:735;33642:1895;;;35235:4;35207:32;;:18;:24;35226:4;35207:24;;;;;;;;;;;;;;;;;;;;;;;;;:32;;;:76;;;;;35281:2;35264:19;;:13;;;;;;;;;;;:19;;;;35207:76;35181:341;;;35326:17;35371:3;35356:11;;35347:6;:20;;;;:::i;:::-;35346:28;;;;:::i;:::-;35326:48;;35397:47;35413:4;35427;35434:9;35397:15;:47::i;:::-;35493:9;35484:6;:18;;;;:::i;:::-;35467:35;;35303:219;35181:341;33642:1895;33593:1955;35558:41;35574:4;35580:2;35584:14;35558:15;:41::i;:::-;32972:2635;32859:2748;;;:::o;7027:132::-;7102:12;:10;:12::i;:::-;7091:23;;:7;:5;:7::i;:::-;:23;;;7083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7027:132::o;8122:191::-;8196:16;8215:6;;;;;;;;;;;8196:25;;8241:8;8232:6;;:17;;;;;;;;;;;;;;;;;;8296:8;8265:40;;8286:8;8265:40;;;;;;;;;;;;8185:128;8122:191;:::o;19535:806::-;19648:1;19632:18;;:4;:18;;;19624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19725:1;19711:16;;:2;:16;;;19703:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19780:38;19801:4;19807:2;19811:6;19780:20;:38::i;:::-;19831:19;19853:9;:15;19863:4;19853:15;;;;;;;;;;;;;;;;19831:37;;19902:6;19887:11;:21;;19879:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;20019:6;20005:11;:20;19987:9;:15;19997:4;19987:15;;;;;;;;;;;;;;;:38;;;;20222:6;20205:9;:13;20215:2;20205:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;20272:2;20257:26;;20266:4;20257:26;;;20276:6;20257:26;;;;;;:::i;:::-;;;;;;;;20296:37;20316:4;20322:2;20326:6;20296:19;:37::i;:::-;19613:728;19535:806;;;:::o;35615:601::-;35693:1;35665:24;35683:4;35665:9;:24::i;:::-;:29;35661:68;35711:7;35661:68;35739:19;35784:28;35815:24;35833:4;35815:9;:24::i;:::-;35784:55;;35854:21;35878;35854:45;;35943:1;35920:20;:24;35916:282;;;35981:21;35965:37;;36021:42;36039:20;36061:1;36021:17;:42::i;:::-;36120:13;36096:21;:37;;;;:::i;:::-;36082:51;;36171:11;36152:15;;:30;;;;;;;:::i;:::-;;;;;;;;35916:282;35769:440;;35650:566;35615:601;:::o;24278:91::-;;;;:::o;24973:90::-;;;;:::o;36569:588::-;36686:21;36724:1;36710:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36686:40;;36755:4;36737;36742:1;36737:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;36781:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36771:4;36776:1;36771:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;36831:4;36816:29;;;36868:15;36899:17;36816:111;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;36940:15;:66;;;37021:11;37047:14;37076:4;37103;37123:15;36940:209;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36675:482;36569:588;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;2016:117::-;2125:1;2122;2115:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:153::-;4221:9;4254:37;4285:5;4254:37;:::i;:::-;4241:50;;4144:153;;;:::o;4303:185::-;4417:64;4475:5;4417:64;:::i;:::-;4412:3;4405:77;4303:185;;:::o;4494:276::-;4614:4;4652:2;4641:9;4637:18;4629:26;;4665:98;4760:1;4749:9;4745:17;4736:6;4665:98;:::i;:::-;4494:276;;;;:::o;4776:118::-;4863:24;4881:5;4863:24;:::i;:::-;4858:3;4851:37;4776:118;;:::o;4900:222::-;4993:4;5031:2;5020:9;5016:18;5008:26;;5044:71;5112:1;5101:9;5097:17;5088:6;5044:71;:::i;:::-;4900:222;;;;:::o;5128:619::-;5205:6;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5396:1;5421:53;5466:7;5457:6;5446:9;5442:22;5421:53;:::i;:::-;5411:63;;5367:117;5523:2;5549:53;5594:7;5585:6;5574:9;5570:22;5549:53;:::i;:::-;5539:63;;5494:118;5651:2;5677:53;5722:7;5713:6;5702:9;5698:22;5677:53;:::i;:::-;5667:63;;5622:118;5128:619;;;;;:::o;5753:329::-;5812:6;5861:2;5849:9;5840:7;5836:23;5832:32;5829:119;;;5867:79;;:::i;:::-;5829:119;5987:1;6012:53;6057:7;6048:6;6037:9;6033:22;6012:53;:::i;:::-;6002:63;;5958:117;5753:329;;;;:::o;6088:86::-;6123:7;6163:4;6156:5;6152:16;6141:27;;6088:86;;;:::o;6180:112::-;6263:22;6279:5;6263:22;:::i;:::-;6258:3;6251:35;6180:112;;:::o;6298:214::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:67;6502:1;6491:9;6487:17;6478:6;6438:67;:::i;:::-;6298:214;;;;:::o;6518:474::-;6586:6;6594;6643:2;6631:9;6622:7;6618:23;6614:32;6611:119;;;6649:79;;:::i;:::-;6611:119;6769:1;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6740:117;6896:2;6922:53;6967:7;6958:6;6947:9;6943:22;6922:53;:::i;:::-;6912:63;;6867:118;6518:474;;;;;:::o;6998:116::-;7068:21;7083:5;7068:21;:::i;:::-;7061:5;7058:32;7048:60;;7104:1;7101;7094:12;7048:60;6998:116;:::o;7120:133::-;7163:5;7201:6;7188:20;7179:29;;7217:30;7241:5;7217:30;:::i;:::-;7120:133;;;;:::o;7259:468::-;7324:6;7332;7381:2;7369:9;7360:7;7356:23;7352:32;7349:119;;;7387:79;;:::i;:::-;7349:119;7507:1;7532:53;7577:7;7568:6;7557:9;7553:22;7532:53;:::i;:::-;7522:63;;7478:117;7634:2;7660:50;7702:7;7693:6;7682:9;7678:22;7660:50;:::i;:::-;7650:60;;7605:115;7259:468;;;;;:::o;7733:180::-;7781:77;7778:1;7771:88;7878:4;7875:1;7868:15;7902:4;7899:1;7892:15;7919:115;8002:1;7995:5;7992:12;7982:46;;8008:18;;:::i;:::-;7982:46;7919:115;:::o;8040:131::-;8087:7;8116:5;8105:16;;8122:43;8159:5;8122:43;:::i;:::-;8040:131;;;:::o;8177:::-;8235:9;8268:34;8296:5;8268:34;:::i;:::-;8255:47;;8177:131;;;:::o;8314:147::-;8409:45;8448:5;8409:45;:::i;:::-;8404:3;8397:58;8314:147;;:::o;8467:238::-;8568:4;8606:2;8595:9;8591:18;8583:26;;8619:79;8695:1;8684:9;8680:17;8671:6;8619:79;:::i;:::-;8467:238;;;;:::o;8711:180::-;8759:77;8756:1;8749:88;8856:4;8853:1;8846:15;8880:4;8877:1;8870:15;8897:320;8941:6;8978:1;8972:4;8968:12;8958:22;;9025:1;9019:4;9015:12;9046:18;9036:81;;9102:4;9094:6;9090:17;9080:27;;9036:81;9164:2;9156:6;9153:14;9133:18;9130:38;9127:84;;9183:18;;:::i;:::-;9127:84;8948:269;8897:320;;;:::o;9223:180::-;9271:77;9268:1;9261:88;9368:4;9365:1;9358:15;9392:4;9389:1;9382:15;9409:191;9449:3;9468:20;9486:1;9468:20;:::i;:::-;9463:25;;9502:20;9520:1;9502:20;:::i;:::-;9497:25;;9545:1;9542;9538:9;9531:16;;9566:3;9563:1;9560:10;9557:36;;;9573:18;;:::i;:::-;9557:36;9409:191;;;;:::o;9606:143::-;9663:5;9694:6;9688:13;9679:22;;9710:33;9737:5;9710:33;:::i;:::-;9606:143;;;;:::o;9755:351::-;9825:6;9874:2;9862:9;9853:7;9849:23;9845:32;9842:119;;;9880:79;;:::i;:::-;9842:119;10000:1;10025:64;10081:7;10072:6;10061:9;10057:22;10025:64;:::i;:::-;10015:74;;9971:128;9755:351;;;;:::o;10112:332::-;10233:4;10271:2;10260:9;10256:18;10248:26;;10284:71;10352:1;10341:9;10337:17;10328:6;10284:71;:::i;:::-;10365:72;10433:2;10422:9;10418:18;10409:6;10365:72;:::i;:::-;10112:332;;;;;:::o;10450:137::-;10504:5;10535:6;10529:13;10520:22;;10551:30;10575:5;10551:30;:::i;:::-;10450:137;;;;:::o;10593:345::-;10660:6;10709:2;10697:9;10688:7;10684:23;10680:32;10677:119;;;10715:79;;:::i;:::-;10677:119;10835:1;10860:61;10913:7;10904:6;10893:9;10889:22;10860:61;:::i;:::-;10850:71;;10806:125;10593:345;;;;:::o;10944:224::-;11084:34;11080:1;11072:6;11068:14;11061:58;11153:7;11148:2;11140:6;11136:15;11129:32;10944:224;:::o;11174:366::-;11316:3;11337:67;11401:2;11396:3;11337:67;:::i;:::-;11330:74;;11413:93;11502:3;11413:93;:::i;:::-;11531:2;11526:3;11522:12;11515:19;;11174:366;;;:::o;11546:419::-;11712:4;11750:2;11739:9;11735:18;11727:26;;11799:9;11793:4;11789:20;11785:1;11774:9;11770:17;11763:47;11827:131;11953:4;11827:131;:::i;:::-;11819:139;;11546:419;;;:::o;11971:225::-;12111:34;12107:1;12099:6;12095:14;12088:58;12180:8;12175:2;12167:6;12163:15;12156:33;11971:225;:::o;12202:366::-;12344:3;12365:67;12429:2;12424:3;12365:67;:::i;:::-;12358:74;;12441:93;12530:3;12441:93;:::i;:::-;12559:2;12554:3;12550:12;12543:19;;12202:366;;;:::o;12574:419::-;12740:4;12778:2;12767:9;12763:18;12755:26;;12827:9;12821:4;12817:20;12813:1;12802:9;12798:17;12791:47;12855:131;12981:4;12855:131;:::i;:::-;12847:139;;12574:419;;;:::o;12999:223::-;13139:34;13135:1;13127:6;13123:14;13116:58;13208:6;13203:2;13195:6;13191:15;13184:31;12999:223;:::o;13228:366::-;13370:3;13391:67;13455:2;13450:3;13391:67;:::i;:::-;13384:74;;13467:93;13556:3;13467:93;:::i;:::-;13585:2;13580:3;13576:12;13569:19;;13228:366;;;:::o;13600:419::-;13766:4;13804:2;13793:9;13789:18;13781:26;;13853:9;13847:4;13843:20;13839:1;13828:9;13824:17;13817:47;13881:131;14007:4;13881:131;:::i;:::-;13873:139;;13600:419;;;:::o;14025:221::-;14165:34;14161:1;14153:6;14149:14;14142:58;14234:4;14229:2;14221:6;14217:15;14210:29;14025:221;:::o;14252:366::-;14394:3;14415:67;14479:2;14474:3;14415:67;:::i;:::-;14408:74;;14491:93;14580:3;14491:93;:::i;:::-;14609:2;14604:3;14600:12;14593:19;;14252:366;;;:::o;14624:419::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14877:9;14871:4;14867:20;14863:1;14852:9;14848:17;14841:47;14905:131;15031:4;14905:131;:::i;:::-;14897:139;;14624:419;;;:::o;15049:179::-;15189:31;15185:1;15177:6;15173:14;15166:55;15049:179;:::o;15234:366::-;15376:3;15397:67;15461:2;15456:3;15397:67;:::i;:::-;15390:74;;15473:93;15562:3;15473:93;:::i;:::-;15591:2;15586:3;15582:12;15575:19;;15234:366;;;:::o;15606:419::-;15772:4;15810:2;15799:9;15795:18;15787:26;;15859:9;15853:4;15849:20;15845:1;15834:9;15830:17;15823:47;15887:131;16013:4;15887:131;:::i;:::-;15879:139;;15606:419;;;:::o;16031:224::-;16171:34;16167:1;16159:6;16155:14;16148:58;16240:7;16235:2;16227:6;16223:15;16216:32;16031:224;:::o;16261:366::-;16403:3;16424:67;16488:2;16483:3;16424:67;:::i;:::-;16417:74;;16500:93;16589:3;16500:93;:::i;:::-;16618:2;16613:3;16609:12;16602:19;;16261:366;;;:::o;16633:419::-;16799:4;16837:2;16826:9;16822:18;16814:26;;16886:9;16880:4;16876:20;16872:1;16861:9;16857:17;16850:47;16914:131;17040:4;16914:131;:::i;:::-;16906:139;;16633:419;;;:::o;17058:222::-;17198:34;17194:1;17186:6;17182:14;17175:58;17267:5;17262:2;17254:6;17250:15;17243:30;17058:222;:::o;17286:366::-;17428:3;17449:67;17513:2;17508:3;17449:67;:::i;:::-;17442:74;;17525:93;17614:3;17525:93;:::i;:::-;17643:2;17638:3;17634:12;17627:19;;17286:366;;;:::o;17658:419::-;17824:4;17862:2;17851:9;17847:18;17839:26;;17911:9;17905:4;17901:20;17897:1;17886:9;17882:17;17875:47;17939:131;18065:4;17939:131;:::i;:::-;17931:139;;17658:419;;;:::o;18083:248::-;18223:34;18219:1;18211:6;18207:14;18200:58;18292:31;18287:2;18279:6;18275:15;18268:56;18083:248;:::o;18337:366::-;18479:3;18500:67;18564:2;18559:3;18500:67;:::i;:::-;18493:74;;18576:93;18665:3;18576:93;:::i;:::-;18694:2;18689:3;18685:12;18678:19;;18337:366;;;:::o;18709:419::-;18875:4;18913:2;18902:9;18898:18;18890:26;;18962:9;18956:4;18952:20;18948:1;18937:9;18933:17;18926:47;18990:131;19116:4;18990:131;:::i;:::-;18982:139;;18709:419;;;:::o;19134:241::-;19274:34;19270:1;19262:6;19258:14;19251:58;19343:24;19338:2;19330:6;19326:15;19319:49;19134:241;:::o;19381:366::-;19523:3;19544:67;19608:2;19603:3;19544:67;:::i;:::-;19537:74;;19620:93;19709:3;19620:93;:::i;:::-;19738:2;19733:3;19729:12;19722:19;;19381:366;;;:::o;19753:419::-;19919:4;19957:2;19946:9;19942:18;19934:26;;20006:9;20000:4;19996:20;19992:1;19981:9;19977:17;19970:47;20034:131;20160:4;20034:131;:::i;:::-;20026:139;;19753:419;;;:::o;20178:244::-;20318:34;20314:1;20306:6;20302:14;20295:58;20387:27;20382:2;20374:6;20370:15;20363:52;20178:244;:::o;20428:366::-;20570:3;20591:67;20655:2;20650:3;20591:67;:::i;:::-;20584:74;;20667:93;20756:3;20667:93;:::i;:::-;20785:2;20780:3;20776:12;20769:19;;20428:366;;;:::o;20800:419::-;20966:4;21004:2;20993:9;20989:18;20981:26;;21053:9;21047:4;21043:20;21039:1;21028:9;21024:17;21017:47;21081:131;21207:4;21081:131;:::i;:::-;21073:139;;20800:419;;;:::o;21225:410::-;21265:7;21288:20;21306:1;21288:20;:::i;:::-;21283:25;;21322:20;21340:1;21322:20;:::i;:::-;21317:25;;21377:1;21374;21370:9;21399:30;21417:11;21399:30;:::i;:::-;21388:41;;21578:1;21569:7;21565:15;21562:1;21559:22;21539:1;21532:9;21512:83;21489:139;;21608:18;;:::i;:::-;21489:139;21273:362;21225:410;;;;:::o;21641:180::-;21689:77;21686:1;21679:88;21786:4;21783:1;21776:15;21810:4;21807:1;21800:15;21827:185;21867:1;21884:20;21902:1;21884:20;:::i;:::-;21879:25;;21918:20;21936:1;21918:20;:::i;:::-;21913:25;;21957:1;21947:35;;21962:18;;:::i;:::-;21947:35;22004:1;22001;21997:9;21992:14;;21827:185;;;;:::o;22018:194::-;22058:4;22078:20;22096:1;22078:20;:::i;:::-;22073:25;;22112:20;22130:1;22112:20;:::i;:::-;22107:25;;22156:1;22153;22149:9;22141:17;;22180:1;22174:4;22171:11;22168:37;;;22185:18;;:::i;:::-;22168:37;22018:194;;;;:::o;22218:182::-;22358:34;22354:1;22346:6;22342:14;22335:58;22218:182;:::o;22406:366::-;22548:3;22569:67;22633:2;22628:3;22569:67;:::i;:::-;22562:74;;22645:93;22734:3;22645:93;:::i;:::-;22763:2;22758:3;22754:12;22747:19;;22406:366;;;:::o;22778:419::-;22944:4;22982:2;22971:9;22967:18;22959:26;;23031:9;23025:4;23021:20;23017:1;23006:9;23002:17;22995:47;23059:131;23185:4;23059:131;:::i;:::-;23051:139;;22778:419;;;:::o;23203:225::-;23343:34;23339:1;23331:6;23327:14;23320:58;23412:8;23407:2;23399:6;23395:15;23388:33;23203:225;:::o;23434:366::-;23576:3;23597:67;23661:2;23656:3;23597:67;:::i;:::-;23590:74;;23673:93;23762:3;23673:93;:::i;:::-;23791:2;23786:3;23782:12;23775:19;;23434:366;;;:::o;23806:419::-;23972:4;24010:2;23999:9;23995:18;23987:26;;24059:9;24053:4;24049:20;24045:1;24034:9;24030:17;24023:47;24087:131;24213:4;24087:131;:::i;:::-;24079:139;;23806:419;;;:::o;24231:180::-;24279:77;24276:1;24269:88;24376:4;24373:1;24366:15;24400:4;24397:1;24390:15;24417:180;24465:77;24462:1;24455:88;24562:4;24559:1;24552:15;24586:4;24583:1;24576:15;24603:143;24660:5;24691:6;24685:13;24676:22;;24707:33;24734:5;24707:33;:::i;:::-;24603:143;;;;:::o;24752:351::-;24822:6;24871:2;24859:9;24850:7;24846:23;24842:32;24839:119;;;24877:79;;:::i;:::-;24839:119;24997:1;25022:64;25078:7;25069:6;25058:9;25054:22;25022:64;:::i;:::-;25012:74;;24968:128;24752:351;;;;:::o;25109:114::-;25176:6;25210:5;25204:12;25194:22;;25109:114;;;:::o;25229:184::-;25328:11;25362:6;25357:3;25350:19;25402:4;25397:3;25393:14;25378:29;;25229:184;;;;:::o;25419:132::-;25486:4;25509:3;25501:11;;25539:4;25534:3;25530:14;25522:22;;25419:132;;;:::o;25557:108::-;25634:24;25652:5;25634:24;:::i;:::-;25629:3;25622:37;25557:108;;:::o;25671:179::-;25740:10;25761:46;25803:3;25795:6;25761:46;:::i;:::-;25839:4;25834:3;25830:14;25816:28;;25671:179;;;;:::o;25856:113::-;25926:4;25958;25953:3;25949:14;25941:22;;25856:113;;;:::o;26005:732::-;26124:3;26153:54;26201:5;26153:54;:::i;:::-;26223:86;26302:6;26297:3;26223:86;:::i;:::-;26216:93;;26333:56;26383:5;26333:56;:::i;:::-;26412:7;26443:1;26428:284;26453:6;26450:1;26447:13;26428:284;;;26529:6;26523:13;26556:63;26615:3;26600:13;26556:63;:::i;:::-;26549:70;;26642:60;26695:6;26642:60;:::i;:::-;26632:70;;26488:224;26475:1;26472;26468:9;26463:14;;26428:284;;;26432:14;26728:3;26721:10;;26129:608;;;26005:732;;;;:::o;26743:815::-;26998:4;27036:3;27025:9;27021:19;27013:27;;27050:71;27118:1;27107:9;27103:17;27094:6;27050:71;:::i;:::-;27131:72;27199:2;27188:9;27184:18;27175:6;27131:72;:::i;:::-;27250:9;27244:4;27240:20;27235:2;27224:9;27220:18;27213:48;27278:108;27381:4;27372:6;27278:108;:::i;:::-;27270:116;;27396:72;27464:2;27453:9;27449:18;27440:6;27396:72;:::i;:::-;27478:73;27546:3;27535:9;27531:19;27522:6;27478:73;:::i;:::-;26743:815;;;;;;;;:::o

Swarm Source

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