ETH Price: $3,059.96 (+2.61%)
Gas: 1 Gwei

Token

Generational Wealth (GEN)
 

Overview

Max Total Supply

420,690,000,000,000 GEN

Holders

616

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
105,172,500,000 GEN

Value
$0.00
0x39563072908a0ca59ff0ec3da2324b1c89a5d964
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:
GenerationalWealthToken

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// 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/utils/Context.sol


// 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/token/ERC20/ERC20.sol


// OpenZeppelin Contracts v4.4.1 (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.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * 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}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * 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 value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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;
        _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;
        }
        _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 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: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.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 anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

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

// File: contracts/GenerationalWealthToken.sol


pragma solidity ^0.8.0;



contract GenerationalWealthToken is Ownable, ERC20 {
    address public uniswapV2Pair;
    address public presale;

    constructor() ERC20("Generational Wealth", "GEN") {
        _mint(msg.sender, 420_690_000_000_000_000_000_000_000_000_000);
    }

    function setRule(address _uniswapV2Pair) external onlyOwner {
        uniswapV2Pair = _uniswapV2Pair;
    }

    function setPresale(address _presale) external onlyOwner {
        presale = _presale;
    }

    function _beforeTokenTransfer(
    address from,
    address to,
    uint256 /* amount */
    ) override internal virtual {
        if (from == presale || to == presale) {
            return;
        }
        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading has not started");
            return;
        }
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}

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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"presale","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_presale","type":"address"}],"name":"setPresale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601381526020017f47656e65726174696f6e616c205765616c7468000000000000000000000000008152506040518060400160405280600381526020017f47454e00000000000000000000000000000000000000000000000000000000008152506200009e62000092620000ea60201b60201c565b620000f260201b60201c565b8160049081620000af9190620007af565b508060059081620000c19190620007af565b505050620000e4336d14bddab3e51a57cff87a50000000620001b660201b60201c565b62000a23565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000228576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200021f90620008f7565b60405180910390fd5b6200023c600083836200032f60201b60201c565b806003600082825462000250919062000948565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002a8919062000948565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200030f919062000994565b60405180910390a36200032b600083836200050760201b60201c565b5050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620003d95750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6200050257600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036200050157620004456200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480620004b957506200048a6200050c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620004fb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004f29062000a01565b60405180910390fd5b62000502565b5b505050565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005b757607f821691505b602082108103620005cd57620005cc6200056f565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005f8565b620006438683620005f8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006906200068a62000684846200065b565b62000665565b6200065b565b9050919050565b6000819050919050565b620006ac836200066f565b620006c4620006bb8262000697565b84845462000605565b825550505050565b600090565b620006db620006cc565b620006e8818484620006a1565b505050565b5b81811015620007105762000704600082620006d1565b600181019050620006ee565b5050565b601f8211156200075f576200072981620005d3565b6200073484620005e8565b8101602085101562000744578190505b6200075c6200075385620005e8565b830182620006ed565b50505b505050565b600082821c905092915050565b6000620007846000198460080262000764565b1980831691505092915050565b60006200079f838362000771565b9150826002028217905092915050565b620007ba8262000535565b67ffffffffffffffff811115620007d657620007d562000540565b5b620007e282546200059e565b620007ef82828562000714565b600060209050601f83116001811462000827576000841562000812578287015190505b6200081e858262000791565b8655506200088e565b601f1984166200083786620005d3565b60005b8281101562000861578489015182556001820191506020850194506020810190506200083a565b868310156200088157848901516200087d601f89168262000771565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620008df601f8362000896565b9150620008ec82620008a7565b602082019050919050565b600060208201905081810360008301526200091281620008d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000955826200065b565b915062000962836200065b565b92508282019050808211156200097d576200097c62000919565b5b92915050565b6200098e816200065b565b82525050565b6000602082019050620009ab600083018462000983565b92915050565b7f74726164696e6720686173206e6f742073746172746564000000000000000000600082015250565b6000620009e960178362000896565b9150620009f682620009b1565b602082019050919050565b6000602082019050818103600083015262000a1c81620009da565b9050919050565b611e698062000a336000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063d5fcc7b611610071578063d5fcc7b614610320578063db5d77931461033c578063dd62ed3e14610358578063f2fde38b14610388578063fdea8e0b146103a457610121565b8063715018a61461027a5780638da5cb5b1461028457806395d89b41146102a2578063a457c2d7146102c0578063a9059cbb146102f057610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806349bd5a5e1461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c2565b60405161013b9190611407565b60405180910390f35b61015e600480360381019061015991906114c2565b610454565b60405161016b919061151d565b60405180910390f35b61017c610472565b6040516101899190611547565b60405180910390f35b6101ac60048036038101906101a79190611562565b61047c565b6040516101b9919061151d565b60405180910390f35b6101ca610574565b6040516101d791906115d1565b60405180910390f35b6101fa60048036038101906101f591906114c2565b61057d565b604051610207919061151d565b60405180910390f35b61022a600480360381019061022591906115ec565b610629565b005b610234610636565b6040516102419190611628565b60405180910390f35b610264600480360381019061025f9190611643565b61065c565b6040516102719190611547565b60405180910390f35b6102826106a5565b005b61028c6106b9565b6040516102999190611628565b60405180910390f35b6102aa6106e2565b6040516102b79190611407565b60405180910390f35b6102da60048036038101906102d591906114c2565b610774565b6040516102e7919061151d565b60405180910390f35b61030a600480360381019061030591906114c2565b61085f565b604051610317919061151d565b60405180910390f35b61033a60048036038101906103359190611643565b61087d565b005b61035660048036038101906103519190611643565b6108c9565b005b610372600480360381019061036d9190611670565b610915565b60405161037f9190611547565b60405180910390f35b6103a2600480360381019061039d9190611643565b61099c565b005b6103ac610a1f565b6040516103b99190611628565b60405180910390f35b6060600480546103d1906116df565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd906116df565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000610468610461610a45565b8484610a4d565b6001905092915050565b6000600354905090565b6000610489848484610c16565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d4610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90611782565b60405180910390fd5b61056885610560610a45565b858403610a4d565b60019150509392505050565b60006012905090565b600061061f61058a610a45565b848460026000610598610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461061a91906117d1565b610a4d565b6001905092915050565b6106333382610e98565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ad611070565b6106b760006110ee565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546106f1906116df565b80601f016020809104026020016040519081016040528092919081815260200182805461071d906116df565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905090565b60008060026000610783610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790611877565b60405180910390fd5b61085461084b610a45565b85858403610a4d565b600191505092915050565b600061087361086c610a45565b8484610c16565b6001905092915050565b610885611070565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6108d1611070565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109a4611070565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90611909565b60405180910390fd5b610a1c816110ee565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061199b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2290611a2d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c099190611547565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90611abf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90611b51565b60405180910390fd5b610cff8383836111b2565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611be3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e1b91906117d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e7f9190611547565b60405180910390a3610e92848484611372565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90611c75565b60405180910390fd5b610f13826000836111b2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190611d07565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254610ff29190611d27565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110579190611547565b60405180910390a361106b83600084611372565b505050565b611078610a45565b73ffffffffffffffffffffffffffffffffffffffff166110966106b9565b73ffffffffffffffffffffffffffffffffffffffff16146110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e390611da7565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061125b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61136d57600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361136c576112bd6106b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132857506112f96106b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90611e13565b60405180910390fd5b61136d565b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113b1578082015181840152602081019050611396565b60008484015250505050565b6000601f19601f8301169050919050565b60006113d982611377565b6113e38185611382565b93506113f3818560208601611393565b6113fc816113bd565b840191505092915050565b6000602082019050818103600083015261142181846113ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114598261142e565b9050919050565b6114698161144e565b811461147457600080fd5b50565b60008135905061148681611460565b92915050565b6000819050919050565b61149f8161148c565b81146114aa57600080fd5b50565b6000813590506114bc81611496565b92915050565b600080604083850312156114d9576114d8611429565b5b60006114e785828601611477565b92505060206114f8858286016114ad565b9150509250929050565b60008115159050919050565b61151781611502565b82525050565b6000602082019050611532600083018461150e565b92915050565b6115418161148c565b82525050565b600060208201905061155c6000830184611538565b92915050565b60008060006060848603121561157b5761157a611429565b5b600061158986828701611477565b935050602061159a86828701611477565b92505060406115ab868287016114ad565b9150509250925092565b600060ff82169050919050565b6115cb816115b5565b82525050565b60006020820190506115e660008301846115c2565b92915050565b60006020828403121561160257611601611429565b5b6000611610848285016114ad565b91505092915050565b6116228161144e565b82525050565b600060208201905061163d6000830184611619565b92915050565b60006020828403121561165957611658611429565b5b600061166784828501611477565b91505092915050565b6000806040838503121561168757611686611429565b5b600061169585828601611477565b92505060206116a685828601611477565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116f757607f821691505b60208210810361170a576117096116b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061176c602883611382565b915061177782611710565b604082019050919050565b6000602082019050818103600083015261179b8161175f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117dc8261148c565b91506117e78361148c565b92508282019050808211156117ff576117fe6117a2565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611861602583611382565b915061186c82611805565b604082019050919050565b6000602082019050818103600083015261189081611854565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006118f3602683611382565b91506118fe82611897565b604082019050919050565b60006020820190508181036000830152611922816118e6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611985602483611382565b915061199082611929565b604082019050919050565b600060208201905081810360008301526119b481611978565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a17602283611382565b9150611a22826119bb565b604082019050919050565b60006020820190508181036000830152611a4681611a0a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611aa9602583611382565b9150611ab482611a4d565b604082019050919050565b60006020820190508181036000830152611ad881611a9c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611b3b602383611382565b9150611b4682611adf565b604082019050919050565b60006020820190508181036000830152611b6a81611b2e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611bcd602683611382565b9150611bd882611b71565b604082019050919050565b60006020820190508181036000830152611bfc81611bc0565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c5f602183611382565b9150611c6a82611c03565b604082019050919050565b60006020820190508181036000830152611c8e81611c52565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611cf1602283611382565b9150611cfc82611c95565b604082019050919050565b60006020820190508181036000830152611d2081611ce4565b9050919050565b6000611d328261148c565b9150611d3d8361148c565b9250828203905081811115611d5557611d546117a2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d91602083611382565b9150611d9c82611d5b565b602082019050919050565b60006020820190508181036000830152611dc081611d84565b9050919050565b7f74726164696e6720686173206e6f742073746172746564000000000000000000600082015250565b6000611dfd601783611382565b9150611e0882611dc7565b602082019050919050565b60006020820190508181036000830152611e2c81611df0565b905091905056fea2646970667358221220cc7407211bef349c26eee87f73da7dd575928c3e992fd65fb164e3958048d11364736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063715018a6116100ad578063d5fcc7b611610071578063d5fcc7b614610320578063db5d77931461033c578063dd62ed3e14610358578063f2fde38b14610388578063fdea8e0b146103a457610121565b8063715018a61461027a5780638da5cb5b1461028457806395d89b41146102a2578063a457c2d7146102c0578063a9059cbb146102f057610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806349bd5a5e1461022c57806370a082311461024a57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103c2565b60405161013b9190611407565b60405180910390f35b61015e600480360381019061015991906114c2565b610454565b60405161016b919061151d565b60405180910390f35b61017c610472565b6040516101899190611547565b60405180910390f35b6101ac60048036038101906101a79190611562565b61047c565b6040516101b9919061151d565b60405180910390f35b6101ca610574565b6040516101d791906115d1565b60405180910390f35b6101fa60048036038101906101f591906114c2565b61057d565b604051610207919061151d565b60405180910390f35b61022a600480360381019061022591906115ec565b610629565b005b610234610636565b6040516102419190611628565b60405180910390f35b610264600480360381019061025f9190611643565b61065c565b6040516102719190611547565b60405180910390f35b6102826106a5565b005b61028c6106b9565b6040516102999190611628565b60405180910390f35b6102aa6106e2565b6040516102b79190611407565b60405180910390f35b6102da60048036038101906102d591906114c2565b610774565b6040516102e7919061151d565b60405180910390f35b61030a600480360381019061030591906114c2565b61085f565b604051610317919061151d565b60405180910390f35b61033a60048036038101906103359190611643565b61087d565b005b61035660048036038101906103519190611643565b6108c9565b005b610372600480360381019061036d9190611670565b610915565b60405161037f9190611547565b60405180910390f35b6103a2600480360381019061039d9190611643565b61099c565b005b6103ac610a1f565b6040516103b99190611628565b60405180910390f35b6060600480546103d1906116df565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd906116df565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000610468610461610a45565b8484610a4d565b6001905092915050565b6000600354905090565b6000610489848484610c16565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d4610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161054b90611782565b60405180910390fd5b61056885610560610a45565b858403610a4d565b60019150509392505050565b60006012905090565b600061061f61058a610a45565b848460026000610598610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461061a91906117d1565b610a4d565b6001905092915050565b6106333382610e98565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ad611070565b6106b760006110ee565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546106f1906116df565b80601f016020809104026020016040519081016040528092919081815260200182805461071d906116df565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905090565b60008060026000610783610a45565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610840576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083790611877565b60405180910390fd5b61085461084b610a45565b85858403610a4d565b600191505092915050565b600061087361086c610a45565b8484610c16565b6001905092915050565b610885611070565b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6108d1611070565b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6109a4611070565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0a90611909565b60405180910390fd5b610a1c816110ee565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610abc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab39061199b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2290611a2d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c099190611547565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7c90611abf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb90611b51565b60405180910390fd5b610cff8383836111b2565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7d90611be3565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e1b91906117d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e7f9190611547565b60405180910390a3610e92848484611372565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90611c75565b60405180910390fd5b610f13826000836111b2565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190611d07565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160036000828254610ff29190611d27565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110579190611547565b60405180910390a361106b83600084611372565b505050565b611078610a45565b73ffffffffffffffffffffffffffffffffffffffff166110966106b9565b73ffffffffffffffffffffffffffffffffffffffff16146110ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e390611da7565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061125b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61136d57600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361136c576112bd6106b9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061132857506112f96106b9565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e90611e13565b60405180910390fd5b61136d565b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113b1578082015181840152602081019050611396565b60008484015250505050565b6000601f19601f8301169050919050565b60006113d982611377565b6113e38185611382565b93506113f3818560208601611393565b6113fc816113bd565b840191505092915050565b6000602082019050818103600083015261142181846113ce565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114598261142e565b9050919050565b6114698161144e565b811461147457600080fd5b50565b60008135905061148681611460565b92915050565b6000819050919050565b61149f8161148c565b81146114aa57600080fd5b50565b6000813590506114bc81611496565b92915050565b600080604083850312156114d9576114d8611429565b5b60006114e785828601611477565b92505060206114f8858286016114ad565b9150509250929050565b60008115159050919050565b61151781611502565b82525050565b6000602082019050611532600083018461150e565b92915050565b6115418161148c565b82525050565b600060208201905061155c6000830184611538565b92915050565b60008060006060848603121561157b5761157a611429565b5b600061158986828701611477565b935050602061159a86828701611477565b92505060406115ab868287016114ad565b9150509250925092565b600060ff82169050919050565b6115cb816115b5565b82525050565b60006020820190506115e660008301846115c2565b92915050565b60006020828403121561160257611601611429565b5b6000611610848285016114ad565b91505092915050565b6116228161144e565b82525050565b600060208201905061163d6000830184611619565b92915050565b60006020828403121561165957611658611429565b5b600061166784828501611477565b91505092915050565b6000806040838503121561168757611686611429565b5b600061169585828601611477565b92505060206116a685828601611477565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806116f757607f821691505b60208210810361170a576117096116b0565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061176c602883611382565b915061177782611710565b604082019050919050565b6000602082019050818103600083015261179b8161175f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006117dc8261148c565b91506117e78361148c565b92508282019050808211156117ff576117fe6117a2565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611861602583611382565b915061186c82611805565b604082019050919050565b6000602082019050818103600083015261189081611854565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006118f3602683611382565b91506118fe82611897565b604082019050919050565b60006020820190508181036000830152611922816118e6565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611985602483611382565b915061199082611929565b604082019050919050565b600060208201905081810360008301526119b481611978565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611a17602283611382565b9150611a22826119bb565b604082019050919050565b60006020820190508181036000830152611a4681611a0a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611aa9602583611382565b9150611ab482611a4d565b604082019050919050565b60006020820190508181036000830152611ad881611a9c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611b3b602383611382565b9150611b4682611adf565b604082019050919050565b60006020820190508181036000830152611b6a81611b2e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611bcd602683611382565b9150611bd882611b71565b604082019050919050565b60006020820190508181036000830152611bfc81611bc0565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c5f602183611382565b9150611c6a82611c03565b604082019050919050565b60006020820190508181036000830152611c8e81611c52565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611cf1602283611382565b9150611cfc82611c95565b604082019050919050565b60006020820190508181036000830152611d2081611ce4565b9050919050565b6000611d328261148c565b9150611d3d8361148c565b9250828203905081811115611d5557611d546117a2565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611d91602083611382565b9150611d9c82611d5b565b602082019050919050565b60006020820190508181036000830152611dc081611d84565b9050919050565b7f74726164696e6720686173206e6f742073746172746564000000000000000000600082015250565b6000611dfd601783611382565b9150611e0882611dc7565b602082019050919050565b60006020820190508181036000830152611e2c81611df0565b905091905056fea2646970667358221220cc7407211bef349c26eee87f73da7dd575928c3e992fd65fb164e3958048d11364736f6c63430008120033

Deployed Bytecode Sourcemap

19434:948:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6690:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8857:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9508:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7652:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10409:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20298:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19492:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7981:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18534:103;;;:::i;:::-;;17886:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6909:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11127:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8321:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19814:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19697:109;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8559:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18792:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19527:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6690:100;6744:13;6777:5;6770:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6690:100;:::o;8857:169::-;8940:4;8957:39;8966:12;:10;:12::i;:::-;8980:7;8989:6;8957:8;:39::i;:::-;9014:4;9007:11;;8857:169;;;;:::o;7810:108::-;7871:7;7898:12;;7891:19;;7810:108;:::o;9508:492::-;9648:4;9665:36;9675:6;9683:9;9694:6;9665:9;:36::i;:::-;9714:24;9741:11;:19;9753:6;9741:19;;;;;;;;;;;;;;;:33;9761:12;:10;:12::i;:::-;9741:33;;;;;;;;;;;;;;;;9714:60;;9813:6;9793:16;:26;;9785:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9900:57;9909:6;9917:12;:10;:12::i;:::-;9950:6;9931:16;:25;9900:8;:57::i;:::-;9988:4;9981:11;;;9508:492;;;;;:::o;7652:93::-;7710:5;7735:2;7728:9;;7652:93;:::o;10409:215::-;10497:4;10514:80;10523:12;:10;:12::i;:::-;10537:7;10583:10;10546:11;:25;10558:12;:10;:12::i;:::-;10546:25;;;;;;;;;;;;;;;:34;10572:7;10546:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10514:8;:80::i;:::-;10612:4;10605:11;;10409:215;;;;:::o;20298:81::-;20347:24;20353:10;20365:5;20347;:24::i;:::-;20298:81;:::o;19492:28::-;;;;;;;;;;;;;:::o;7981:127::-;8055:7;8082:9;:18;8092:7;8082:18;;;;;;;;;;;;;;;;8075:25;;7981:127;;;:::o;18534:103::-;17772:13;:11;:13::i;:::-;18599:30:::1;18626:1;18599:18;:30::i;:::-;18534:103::o:0;17886:87::-;17932:7;17959:6;;;;;;;;;;;17952:13;;17886:87;:::o;6909:104::-;6965:13;6998:7;6991:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6909:104;:::o;11127:413::-;11220:4;11237:24;11264:11;:25;11276:12;:10;:12::i;:::-;11264:25;;;;;;;;;;;;;;;:34;11290:7;11264:34;;;;;;;;;;;;;;;;11237:61;;11337:15;11317:16;:35;;11309:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11430:67;11439:12;:10;:12::i;:::-;11453:7;11481:15;11462:16;:34;11430:8;:67::i;:::-;11528:4;11521:11;;;11127:413;;;;:::o;8321:175::-;8407:4;8424:42;8434:12;:10;:12::i;:::-;8448:9;8459:6;8424:9;:42::i;:::-;8484:4;8477:11;;8321:175;;;;:::o;19814:94::-;17772:13;:11;:13::i;:::-;19892:8:::1;19882:7;;:18;;;;;;;;;;;;;;;;;;19814:94:::0;:::o;19697:109::-;17772:13;:11;:13::i;:::-;19784:14:::1;19768:13;;:30;;;;;;;;;;;;;;;;;;19697:109:::0;:::o;8559:151::-;8648:7;8675:11;:18;8687:5;8675:18;;;;;;;;;;;;;;;:27;8694:7;8675:27;;;;;;;;;;;;;;;;8668:34;;8559:151;;;;:::o;18792:201::-;17772:13;:11;:13::i;:::-;18901:1:::1;18881:22;;:8;:22;;::::0;18873:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18957:28;18976:8;18957:18;:28::i;:::-;18792:201:::0;:::o;19527:22::-;;;;;;;;;;;;;:::o;4345:98::-;4398:7;4425:10;4418:17;;4345:98;:::o;14811:380::-;14964:1;14947:19;;:5;:19;;;14939:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15045:1;15026:21;;:7;:21;;;15018:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15129:6;15099:11;:18;15111:5;15099:18;;;;;;;;;;;;;;;:27;15118:7;15099:27;;;;;;;;;;;;;;;:36;;;;15167:7;15151:32;;15160:5;15151:32;;;15176:6;15151:32;;;;;;:::i;:::-;;;;;;;;14811:380;;;:::o;12030:733::-;12188:1;12170:20;;:6;:20;;;12162:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12272:1;12251:23;;:9;:23;;;12243:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12327:47;12348:6;12356:9;12367:6;12327:20;:47::i;:::-;12387:21;12411:9;:17;12421:6;12411:17;;;;;;;;;;;;;;;;12387:41;;12464:6;12447:13;:23;;12439:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;12585:6;12569:13;:22;12549:9;:17;12559:6;12549:17;;;;;;;;;;;;;;;:42;;;;12637:6;12613:9;:20;12623:9;12613:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12678:9;12661:35;;12670:6;12661:35;;;12689:6;12661:35;;;;;;:::i;:::-;;;;;;;;12709:46;12729:6;12737:9;12748:6;12709:19;:46::i;:::-;12151:612;12030:733;;;:::o;13782:591::-;13885:1;13866:21;;:7;:21;;;13858:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13938:49;13959:7;13976:1;13980:6;13938:20;:49::i;:::-;14000:22;14025:9;:18;14035:7;14025:18;;;;;;;;;;;;;;;;14000:43;;14080:6;14062:14;:24;;14054:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14199:6;14182:14;:23;14161:9;:18;14171:7;14161:18;;;;;;;;;;;;;;;:44;;;;14243:6;14227:12;;:22;;;;;;;:::i;:::-;;;;;;;;14293:1;14267:37;;14276:7;14267:37;;;14297:6;14267:37;;;;;;:::i;:::-;;;;;;;;14317:48;14337:7;14354:1;14358:6;14317:19;:48::i;:::-;13847:526;13782:591;;:::o;18051:132::-;18126:12;:10;:12::i;:::-;18115:23;;:7;:5;:7::i;:::-;:23;;;18107:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18051:132::o;19153:191::-;19227:16;19246:6;;;;;;;;;;;19227:25;;19272:8;19263:6;;:17;;;;;;;;;;;;;;;;;;19327:8;19296:40;;19317:8;19296:40;;;;;;;;;;;;19216:128;19153:191;:::o;19916:374::-;20065:7;;;;;;;;;;;20057:15;;:4;:15;;;:32;;;;20082:7;;;;;;;;;;;20076:13;;:2;:13;;;20057:32;20106:7;20053:71;20163:1;20138:27;;:13;;;;;;;;;;;:27;;;20134:149;;20198:7;:5;:7::i;:::-;20190:15;;:4;:15;;;:32;;;;20215:7;:5;:7::i;:::-;20209:13;;:2;:13;;;20190:32;20182:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20265:7;;20134:149;19916:374;;;;:::o;16520:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:180::-;6403:77;6400:1;6393:88;6500:4;6497:1;6490:15;6524:4;6521:1;6514:15;6541:320;6585:6;6622:1;6616:4;6612:12;6602:22;;6669:1;6663:4;6659:12;6690:18;6680:81;;6746:4;6738:6;6734:17;6724:27;;6680:81;6808:2;6800:6;6797:14;6777:18;6774:38;6771:84;;6827:18;;:::i;:::-;6771:84;6592:269;6541:320;;;:::o;6867:227::-;7007:34;7003:1;6995:6;6991:14;6984:58;7076:10;7071:2;7063:6;7059:15;7052:35;6867:227;:::o;7100:366::-;7242:3;7263:67;7327:2;7322:3;7263:67;:::i;:::-;7256:74;;7339:93;7428:3;7339:93;:::i;:::-;7457:2;7452:3;7448:12;7441:19;;7100:366;;;:::o;7472:419::-;7638:4;7676:2;7665:9;7661:18;7653:26;;7725:9;7719:4;7715:20;7711:1;7700:9;7696:17;7689:47;7753:131;7879:4;7753:131;:::i;:::-;7745:139;;7472:419;;;:::o;7897:180::-;7945:77;7942:1;7935:88;8042:4;8039:1;8032:15;8066:4;8063:1;8056:15;8083:191;8123:3;8142:20;8160:1;8142:20;:::i;:::-;8137:25;;8176:20;8194:1;8176:20;:::i;:::-;8171:25;;8219:1;8216;8212:9;8205:16;;8240:3;8237:1;8234:10;8231:36;;;8247:18;;:::i;:::-;8231:36;8083:191;;;;:::o;8280:224::-;8420:34;8416:1;8408:6;8404:14;8397:58;8489:7;8484:2;8476:6;8472:15;8465:32;8280:224;:::o;8510:366::-;8652:3;8673:67;8737:2;8732:3;8673:67;:::i;:::-;8666:74;;8749:93;8838:3;8749:93;:::i;:::-;8867:2;8862:3;8858:12;8851:19;;8510:366;;;:::o;8882:419::-;9048:4;9086:2;9075:9;9071:18;9063:26;;9135:9;9129:4;9125:20;9121:1;9110:9;9106:17;9099:47;9163:131;9289:4;9163:131;:::i;:::-;9155:139;;8882:419;;;:::o;9307:225::-;9447:34;9443:1;9435:6;9431:14;9424:58;9516:8;9511:2;9503:6;9499:15;9492:33;9307:225;:::o;9538:366::-;9680:3;9701:67;9765:2;9760:3;9701:67;:::i;:::-;9694:74;;9777:93;9866:3;9777:93;:::i;:::-;9895:2;9890:3;9886:12;9879:19;;9538:366;;;:::o;9910:419::-;10076:4;10114:2;10103:9;10099:18;10091:26;;10163:9;10157:4;10153:20;10149:1;10138:9;10134:17;10127:47;10191:131;10317:4;10191:131;:::i;:::-;10183:139;;9910:419;;;:::o;10335:223::-;10475:34;10471:1;10463:6;10459:14;10452:58;10544:6;10539:2;10531:6;10527:15;10520:31;10335:223;:::o;10564:366::-;10706:3;10727:67;10791:2;10786:3;10727:67;:::i;:::-;10720:74;;10803:93;10892:3;10803:93;:::i;:::-;10921:2;10916:3;10912:12;10905:19;;10564:366;;;:::o;10936:419::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11189:9;11183:4;11179:20;11175:1;11164:9;11160:17;11153:47;11217:131;11343:4;11217:131;:::i;:::-;11209:139;;10936:419;;;:::o;11361:221::-;11501:34;11497:1;11489:6;11485:14;11478:58;11570:4;11565:2;11557:6;11553:15;11546:29;11361:221;:::o;11588:366::-;11730:3;11751:67;11815:2;11810:3;11751:67;:::i;:::-;11744:74;;11827:93;11916:3;11827:93;:::i;:::-;11945:2;11940:3;11936:12;11929:19;;11588:366;;;:::o;11960:419::-;12126:4;12164:2;12153:9;12149:18;12141:26;;12213:9;12207:4;12203:20;12199:1;12188:9;12184:17;12177:47;12241:131;12367:4;12241:131;:::i;:::-;12233:139;;11960:419;;;:::o;12385:224::-;12525:34;12521:1;12513:6;12509:14;12502:58;12594:7;12589:2;12581:6;12577:15;12570:32;12385:224;:::o;12615:366::-;12757:3;12778:67;12842:2;12837:3;12778:67;:::i;:::-;12771:74;;12854:93;12943:3;12854:93;:::i;:::-;12972:2;12967:3;12963:12;12956:19;;12615:366;;;:::o;12987:419::-;13153:4;13191:2;13180:9;13176:18;13168:26;;13240:9;13234:4;13230:20;13226:1;13215:9;13211:17;13204:47;13268:131;13394:4;13268:131;:::i;:::-;13260:139;;12987:419;;;:::o;13412:222::-;13552:34;13548:1;13540:6;13536:14;13529:58;13621:5;13616:2;13608:6;13604:15;13597:30;13412:222;:::o;13640:366::-;13782:3;13803:67;13867:2;13862:3;13803:67;:::i;:::-;13796:74;;13879:93;13968:3;13879:93;:::i;:::-;13997:2;13992:3;13988:12;13981:19;;13640:366;;;:::o;14012:419::-;14178:4;14216:2;14205:9;14201:18;14193:26;;14265:9;14259:4;14255:20;14251:1;14240:9;14236:17;14229:47;14293:131;14419:4;14293:131;:::i;:::-;14285:139;;14012:419;;;:::o;14437:225::-;14577:34;14573:1;14565:6;14561:14;14554:58;14646:8;14641:2;14633:6;14629:15;14622:33;14437:225;:::o;14668:366::-;14810:3;14831:67;14895:2;14890:3;14831:67;:::i;:::-;14824:74;;14907:93;14996:3;14907:93;:::i;:::-;15025:2;15020:3;15016:12;15009:19;;14668:366;;;:::o;15040:419::-;15206:4;15244:2;15233:9;15229:18;15221:26;;15293:9;15287:4;15283:20;15279:1;15268:9;15264:17;15257:47;15321:131;15447:4;15321:131;:::i;:::-;15313:139;;15040:419;;;:::o;15465:220::-;15605:34;15601:1;15593:6;15589:14;15582:58;15674:3;15669:2;15661:6;15657:15;15650:28;15465:220;:::o;15691:366::-;15833:3;15854:67;15918:2;15913:3;15854:67;:::i;:::-;15847:74;;15930:93;16019:3;15930:93;:::i;:::-;16048:2;16043:3;16039:12;16032:19;;15691:366;;;:::o;16063:419::-;16229:4;16267:2;16256:9;16252:18;16244:26;;16316:9;16310:4;16306:20;16302:1;16291:9;16287:17;16280:47;16344:131;16470:4;16344:131;:::i;:::-;16336:139;;16063:419;;;:::o;16488:221::-;16628:34;16624:1;16616:6;16612:14;16605:58;16697:4;16692:2;16684:6;16680:15;16673:29;16488:221;:::o;16715:366::-;16857:3;16878:67;16942:2;16937:3;16878:67;:::i;:::-;16871:74;;16954:93;17043:3;16954:93;:::i;:::-;17072:2;17067:3;17063:12;17056:19;;16715:366;;;:::o;17087:419::-;17253:4;17291:2;17280:9;17276:18;17268:26;;17340:9;17334:4;17330:20;17326:1;17315:9;17311:17;17304:47;17368:131;17494:4;17368:131;:::i;:::-;17360:139;;17087:419;;;:::o;17512:194::-;17552:4;17572:20;17590:1;17572:20;:::i;:::-;17567:25;;17606:20;17624:1;17606:20;:::i;:::-;17601:25;;17650:1;17647;17643:9;17635:17;;17674:1;17668:4;17665:11;17662:37;;;17679:18;;:::i;:::-;17662:37;17512:194;;;;:::o;17712:182::-;17852:34;17848:1;17840:6;17836:14;17829:58;17712:182;:::o;17900:366::-;18042:3;18063:67;18127:2;18122:3;18063:67;:::i;:::-;18056:74;;18139:93;18228:3;18139:93;:::i;:::-;18257:2;18252:3;18248:12;18241:19;;17900:366;;;:::o;18272:419::-;18438:4;18476:2;18465:9;18461:18;18453:26;;18525:9;18519:4;18515:20;18511:1;18500:9;18496:17;18489:47;18553:131;18679:4;18553:131;:::i;:::-;18545:139;;18272:419;;;:::o;18697:173::-;18837:25;18833:1;18825:6;18821:14;18814:49;18697:173;:::o;18876:366::-;19018:3;19039:67;19103:2;19098:3;19039:67;:::i;:::-;19032:74;;19115:93;19204:3;19115:93;:::i;:::-;19233:2;19228:3;19224:12;19217:19;;18876:366;;;:::o;19248:419::-;19414:4;19452:2;19441:9;19437:18;19429:26;;19501:9;19495:4;19491:20;19487:1;19476:9;19472:17;19465:47;19529:131;19655:4;19529:131;:::i;:::-;19521:139;;19248:419;;;:::o

Swarm Source

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