ETH Price: $2,626.51 (-2.58%)

Token

Klub Coin (KLUB)
 

Overview

Max Total Supply

1,000,000,000 KLUB

Holders

1,048 (0.00%)

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$1,174,300.00

Circulating Supply Market Cap

$204,643.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
250.625 KLUB

Value
$0.29 ( ~0.00011041252464854 Eth) [0.0000%]
0xe7c161b7866e8d7489faf0733ccab2375e8688b8
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Klubcoin is the global cryptocurrency for all clubbers, festival goers and electronic music fans.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KlubCoin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-10-26
*/

/**
 *Submitted for verification at Etherscan.io on 2022-02-07
*/

// File: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)
// SPDX-License-Identifier: MIT
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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/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}.
     *
     * 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) {
        _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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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: KlubCoin.sol


pragma solidity ^0.8.11;


contract KlubCoin is ERC20 {
    address public admin;
    constructor() ERC20('Klub Coin', 'KLUB') {
        _mint(msg.sender, 1000000000 * 10 ** 18);
        admin = msg.sender;
    }

//    function mint(address to, uint amount) external {
//            require(msg.sender == admin, 'only admin');
//            _mint(to, amount);
//        }

        function burn(uint amount) external {
            require(msg.sender == admin, 'only admin');
            _burn(msg.sender, amount);
    }
}

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":"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":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","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":"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"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f4b6c756220436f696e00000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4b4c55420000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000505565b508060049081620000a1919062000505565b505050620000c2336b033b2e3c9fd0803ce80000006200010960201b60201c565b33600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000707565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200017b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000172906200064d565b60405180910390fd5b6200018f600083836200028160201b60201c565b8060026000828254620001a391906200069e565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620001fa91906200069e565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002619190620006ea565b60405180910390a36200027d600083836200028660201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200030d57607f821691505b602082108103620003235762000322620002c5565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200038d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200034e565b6200039986836200034e565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003e6620003e0620003da84620003b1565b620003bb565b620003b1565b9050919050565b6000819050919050565b6200040283620003c5565b6200041a6200041182620003ed565b8484546200035b565b825550505050565b600090565b6200043162000422565b6200043e818484620003f7565b505050565b5b8181101562000466576200045a60008262000427565b60018101905062000444565b5050565b601f821115620004b5576200047f8162000329565b6200048a846200033e565b810160208510156200049a578190505b620004b2620004a9856200033e565b83018262000443565b50505b505050565b600082821c905092915050565b6000620004da60001984600802620004ba565b1980831691505092915050565b6000620004f58383620004c7565b9150826002028217905092915050565b62000510826200028b565b67ffffffffffffffff8111156200052c576200052b62000296565b5b620005388254620002f4565b620005458282856200046a565b600060209050601f8311600181146200057d576000841562000568578287015190505b620005748582620004e7565b865550620005e4565b601f1984166200058d8662000329565b60005b82811015620005b75784890151825560018201915060208501945060208101905062000590565b86831015620005d75784890151620005d3601f891682620004c7565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000635601f83620005ec565b91506200064282620005fd565b602082019050919050565b60006020820190508181036000830152620006688162000626565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620006ab82620003b1565b9150620006b883620003b1565b9250828201905080821115620006d357620006d26200066f565b5b92915050565b620006e481620003b1565b82525050565b6000602082019050620007016000830184620006d9565b92915050565b6118b580620007176000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063dd62ed3e14610288578063f851a440146102b8576100cf565b806342966c68146101be57806370a08231146101da57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d6565b6040516100e99190610f51565b60405180910390f35b61010c6004803603810190610107919061100c565b610368565b6040516101199190611067565b60405180910390f35b61012a610386565b6040516101379190611091565b60405180910390f35b61015a600480360381019061015591906110ac565b610390565b6040516101679190611067565b60405180910390f35b6101786104af565b604051610185919061111b565b60405180910390f35b6101a860048036038101906101a3919061100c565b6104b8565b6040516101b59190611067565b60405180910390f35b6101d860048036038101906101d39190611136565b610564565b005b6101f460048036038101906101ef9190611163565b610601565b6040516102019190611091565b60405180910390f35b610212610649565b60405161021f9190610f51565b60405180910390f35b610242600480360381019061023d919061100c565b6106db565b60405161024f9190611067565b60405180910390f35b610272600480360381019061026d919061100c565b6107c6565b60405161027f9190611067565b60405180910390f35b6102a2600480360381019061029d9190611190565b6107e4565b6040516102af9190611091565b60405180910390f35b6102c061086b565b6040516102cd91906111df565b60405180910390f35b6060600380546102e590611229565b80601f016020809104026020016040519081016040528092919081815260200182805461031190611229565b801561035e5780601f106103335761010080835404028352916020019161035e565b820191906000526020600020905b81548152906001019060200180831161034157829003601f168201915b5050505050905090565b600061037c610375610891565b8484610899565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103dc610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104985782811015610483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a906112cc565b60405180910390fd5b6104978561048f610891565b858403610899565b5b6104a3858585610a62565b60019150509392505050565b60006012905090565b600061055a6104c5610891565b8484600160006104d3610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610555919061131b565b610899565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061139b565b60405180910390fd5b6105fe3382610ce1565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461065890611229565b80601f016020809104026020016040519081016040528092919081815260200182805461068490611229565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b5050505050905090565b600080600160006106ea610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e9061142d565b60405180910390fd5b6107bb6107b2610891565b85858403610899565b600191505092915050565b60006107da6107d3610891565b8484610a62565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff906114bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e90611551565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a559190611091565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac8906115e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790611675565b60405180910390fd5b610b4b838383610eb7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890611707565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c64919061131b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc89190611091565b60405180910390a3610cdb848484610ebc565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790611799565b60405180910390fd5b610d5c82600083610eb7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd99061182b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610e39919061184b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9e9190611091565b60405180910390a3610eb283600084610ebc565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610efb578082015181840152602081019050610ee0565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f2382610ec1565b610f2d8185610ecc565b9350610f3d818560208601610edd565b610f4681610f07565b840191505092915050565b60006020820190508181036000830152610f6b8184610f18565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610fa382610f78565b9050919050565b610fb381610f98565b8114610fbe57600080fd5b50565b600081359050610fd081610faa565b92915050565b6000819050919050565b610fe981610fd6565b8114610ff457600080fd5b50565b60008135905061100681610fe0565b92915050565b6000806040838503121561102357611022610f73565b5b600061103185828601610fc1565b925050602061104285828601610ff7565b9150509250929050565b60008115159050919050565b6110618161104c565b82525050565b600060208201905061107c6000830184611058565b92915050565b61108b81610fd6565b82525050565b60006020820190506110a66000830184611082565b92915050565b6000806000606084860312156110c5576110c4610f73565b5b60006110d386828701610fc1565b93505060206110e486828701610fc1565b92505060406110f586828701610ff7565b9150509250925092565b600060ff82169050919050565b611115816110ff565b82525050565b6000602082019050611130600083018461110c565b92915050565b60006020828403121561114c5761114b610f73565b5b600061115a84828501610ff7565b91505092915050565b60006020828403121561117957611178610f73565b5b600061118784828501610fc1565b91505092915050565b600080604083850312156111a7576111a6610f73565b5b60006111b585828601610fc1565b92505060206111c685828601610fc1565b9150509250929050565b6111d981610f98565b82525050565b60006020820190506111f460008301846111d0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061124157607f821691505b602082108103611254576112536111fa565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006112b6602883610ecc565b91506112c18261125a565b604082019050919050565b600060208201905081810360008301526112e5816112a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132682610fd6565b915061133183610fd6565b9250828201905080821115611349576113486112ec565b5b92915050565b7f6f6e6c792061646d696e00000000000000000000000000000000000000000000600082015250565b6000611385600a83610ecc565b91506113908261134f565b602082019050919050565b600060208201905081810360008301526113b481611378565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611417602583610ecc565b9150611422826113bb565b604082019050919050565b600060208201905081810360008301526114468161140a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006114a9602483610ecc565b91506114b48261144d565b604082019050919050565b600060208201905081810360008301526114d88161149c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061153b602283610ecc565b9150611546826114df565b604082019050919050565b6000602082019050818103600083015261156a8161152e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006115cd602583610ecc565b91506115d882611571565b604082019050919050565b600060208201905081810360008301526115fc816115c0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061165f602383610ecc565b915061166a82611603565b604082019050919050565b6000602082019050818103600083015261168e81611652565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006116f1602683610ecc565b91506116fc82611695565b604082019050919050565b60006020820190508181036000830152611720816116e4565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611783602183610ecc565b915061178e82611727565b604082019050919050565b600060208201905081810360008301526117b281611776565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611815602283610ecc565b9150611820826117b9565b604082019050919050565b6000602082019050818103600083015261184481611808565b9050919050565b600061185682610fd6565b915061186183610fd6565b9250828203905081811115611879576118786112ec565b5b9291505056fea2646970667358221220a24e589a61670cb65a6fc794d7436032094b3caef6930febf1dc5bdb7294228164736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c578063a457c2d711610066578063a457c2d714610228578063a9059cbb14610258578063dd62ed3e14610288578063f851a440146102b8576100cf565b806342966c68146101be57806370a08231146101da57806395d89b411461020a576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461012257806323b872dd14610140578063313ce56714610170578063395093511461018e575b600080fd5b6100dc6102d6565b6040516100e99190610f51565b60405180910390f35b61010c6004803603810190610107919061100c565b610368565b6040516101199190611067565b60405180910390f35b61012a610386565b6040516101379190611091565b60405180910390f35b61015a600480360381019061015591906110ac565b610390565b6040516101679190611067565b60405180910390f35b6101786104af565b604051610185919061111b565b60405180910390f35b6101a860048036038101906101a3919061100c565b6104b8565b6040516101b59190611067565b60405180910390f35b6101d860048036038101906101d39190611136565b610564565b005b6101f460048036038101906101ef9190611163565b610601565b6040516102019190611091565b60405180910390f35b610212610649565b60405161021f9190610f51565b60405180910390f35b610242600480360381019061023d919061100c565b6106db565b60405161024f9190611067565b60405180910390f35b610272600480360381019061026d919061100c565b6107c6565b60405161027f9190611067565b60405180910390f35b6102a2600480360381019061029d9190611190565b6107e4565b6040516102af9190611091565b60405180910390f35b6102c061086b565b6040516102cd91906111df565b60405180910390f35b6060600380546102e590611229565b80601f016020809104026020016040519081016040528092919081815260200182805461031190611229565b801561035e5780601f106103335761010080835404028352916020019161035e565b820191906000526020600020905b81548152906001019060200180831161034157829003601f168201915b5050505050905090565b600061037c610375610891565b8484610899565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006103dc610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146104985782811015610483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047a906112cc565b60405180910390fd5b6104978561048f610891565b858403610899565b5b6104a3858585610a62565b60019150509392505050565b60006012905090565b600061055a6104c5610891565b8484600160006104d3610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610555919061131b565b610899565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb9061139b565b60405180910390fd5b6105fe3382610ce1565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60606004805461065890611229565b80601f016020809104026020016040519081016040528092919081815260200182805461068490611229565b80156106d15780601f106106a6576101008083540402835291602001916106d1565b820191906000526020600020905b8154815290600101906020018083116106b457829003601f168201915b5050505050905090565b600080600160006106ea610891565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156107a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079e9061142d565b60405180910390fd5b6107bb6107b2610891565b85858403610899565b600191505092915050565b60006107da6107d3610891565b8484610a62565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff906114bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096e90611551565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a559190611091565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ad1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac8906115e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3790611675565b60405180910390fd5b610b4b838383610eb7565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc890611707565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c64919061131b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610cc89190611091565b60405180910390a3610cdb848484610ebc565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4790611799565b60405180910390fd5b610d5c82600083610eb7565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd99061182b565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254610e39919061184b565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e9e9190611091565b60405180910390a3610eb283600084610ebc565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610efb578082015181840152602081019050610ee0565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f2382610ec1565b610f2d8185610ecc565b9350610f3d818560208601610edd565b610f4681610f07565b840191505092915050565b60006020820190508181036000830152610f6b8184610f18565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610fa382610f78565b9050919050565b610fb381610f98565b8114610fbe57600080fd5b50565b600081359050610fd081610faa565b92915050565b6000819050919050565b610fe981610fd6565b8114610ff457600080fd5b50565b60008135905061100681610fe0565b92915050565b6000806040838503121561102357611022610f73565b5b600061103185828601610fc1565b925050602061104285828601610ff7565b9150509250929050565b60008115159050919050565b6110618161104c565b82525050565b600060208201905061107c6000830184611058565b92915050565b61108b81610fd6565b82525050565b60006020820190506110a66000830184611082565b92915050565b6000806000606084860312156110c5576110c4610f73565b5b60006110d386828701610fc1565b93505060206110e486828701610fc1565b92505060406110f586828701610ff7565b9150509250925092565b600060ff82169050919050565b611115816110ff565b82525050565b6000602082019050611130600083018461110c565b92915050565b60006020828403121561114c5761114b610f73565b5b600061115a84828501610ff7565b91505092915050565b60006020828403121561117957611178610f73565b5b600061118784828501610fc1565b91505092915050565b600080604083850312156111a7576111a6610f73565b5b60006111b585828601610fc1565b92505060206111c685828601610fc1565b9150509250929050565b6111d981610f98565b82525050565b60006020820190506111f460008301846111d0565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061124157607f821691505b602082108103611254576112536111fa565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006112b6602883610ecc565b91506112c18261125a565b604082019050919050565b600060208201905081810360008301526112e5816112a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061132682610fd6565b915061133183610fd6565b9250828201905080821115611349576113486112ec565b5b92915050565b7f6f6e6c792061646d696e00000000000000000000000000000000000000000000600082015250565b6000611385600a83610ecc565b91506113908261134f565b602082019050919050565b600060208201905081810360008301526113b481611378565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611417602583610ecc565b9150611422826113bb565b604082019050919050565b600060208201905081810360008301526114468161140a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006114a9602483610ecc565b91506114b48261144d565b604082019050919050565b600060208201905081810360008301526114d88161149c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061153b602283610ecc565b9150611546826114df565b604082019050919050565b6000602082019050818103600083015261156a8161152e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006115cd602583610ecc565b91506115d882611571565b604082019050919050565b600060208201905081810360008301526115fc816115c0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061165f602383610ecc565b915061166a82611603565b604082019050919050565b6000602082019050818103600083015261168e81611652565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006116f1602683610ecc565b91506116fc82611695565b604082019050919050565b60006020820190508181036000830152611720816116e4565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611783602183610ecc565b915061178e82611727565b604082019050919050565b600060208201905081810360008301526117b281611776565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611815602283610ecc565b9150611820826117b9565b604082019050919050565b6000602082019050818103600083015261184481611808565b9050919050565b600061185682610fd6565b915061186183610fd6565b9250828203905081811115611879576118786112ec565b5b9291505056fea2646970667358221220a24e589a61670cb65a6fc794d7436032094b3caef6930febf1dc5bdb7294228164736f6c63430008120033

Deployed Bytecode Sourcemap

17352:511:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6969:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9309:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8089:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10071:573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7931:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11053:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17719:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8260:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7188:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11771:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8600:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8838:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17386:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6969:100;7023:13;7056:5;7049:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6969:100;:::o;9309:169::-;9392:4;9409:39;9418:12;:10;:12::i;:::-;9432:7;9441:6;9409:8;:39::i;:::-;9466:4;9459:11;;9309:169;;;;:::o;8089:108::-;8150:7;8177:12;;8170:19;;8089:108;:::o;10071:573::-;10211:4;10228:24;10255:11;:19;10267:6;10255:19;;;;;;;;;;;;;;;:33;10275:12;:10;:12::i;:::-;10255:33;;;;;;;;;;;;;;;;10228:60;;10323:17;10303:16;:37;10299:265;;10385:6;10365:16;:26;;10357:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10480:57;10489:6;10497:12;:10;:12::i;:::-;10530:6;10511:16;:25;10480:8;:57::i;:::-;10299:265;10576:36;10586:6;10594:9;10605:6;10576:9;:36::i;:::-;10632:4;10625:11;;;10071:573;;;;;:::o;7931:93::-;7989:5;8014:2;8007:9;;7931:93;:::o;11053:215::-;11141:4;11158:80;11167:12;:10;:12::i;:::-;11181:7;11227:10;11190:11;:25;11202:12;:10;:12::i;:::-;11190:25;;;;;;;;;;;;;;;:34;11216:7;11190:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11158:8;:80::i;:::-;11256:4;11249:11;;11053:215;;;;:::o;17719:141::-;17792:5;;;;;;;;;;;17778:19;;:10;:19;;;17770:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;17827:25;17833:10;17845:6;17827:5;:25::i;:::-;17719:141;:::o;8260:127::-;8334:7;8361:9;:18;8371:7;8361:18;;;;;;;;;;;;;;;;8354:25;;8260:127;;;:::o;7188:104::-;7244:13;7277:7;7270:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7188:104;:::o;11771:413::-;11864:4;11881:24;11908:11;:25;11920:12;:10;:12::i;:::-;11908:25;;;;;;;;;;;;;;;:34;11934:7;11908:34;;;;;;;;;;;;;;;;11881:61;;11981:15;11961:16;:35;;11953:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;12074:67;12083:12;:10;:12::i;:::-;12097:7;12125:15;12106:16;:34;12074:8;:67::i;:::-;12172:4;12165:11;;;11771:413;;;;:::o;8600:175::-;8686:4;8703:42;8713:12;:10;:12::i;:::-;8727:9;8738:6;8703:9;:42::i;:::-;8763:4;8756:11;;8600:175;;;;:::o;8838:151::-;8927:7;8954:11;:18;8966:5;8954:18;;;;;;;;;;;;;;;:27;8973:7;8954:27;;;;;;;;;;;;;;;;8947:34;;8838:151;;;;:::o;17386:20::-;;;;;;;;;;;;;:::o;834:98::-;887:7;914:10;907:17;;834:98;:::o;15455:380::-;15608:1;15591:19;;:5;:19;;;15583:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15689:1;15670:21;;:7;:21;;;15662:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15773:6;15743:11;:18;15755:5;15743:18;;;;;;;;;;;;;;;:27;15762:7;15743:27;;;;;;;;;;;;;;;:36;;;;15811:7;15795:32;;15804:5;15795:32;;;15820:6;15795:32;;;;;;:::i;:::-;;;;;;;;15455:380;;;:::o;12674:733::-;12832:1;12814:20;;:6;:20;;;12806:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12916:1;12895:23;;:9;:23;;;12887:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12971:47;12992:6;13000:9;13011:6;12971:20;:47::i;:::-;13031:21;13055:9;:17;13065:6;13055:17;;;;;;;;;;;;;;;;13031:41;;13108:6;13091:13;:23;;13083:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;13229:6;13213:13;:22;13193:9;:17;13203:6;13193:17;;;;;;;;;;;;;;;:42;;;;13281:6;13257:9;:20;13267:9;13257:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;13322:9;13305:35;;13314:6;13305:35;;;13333:6;13305:35;;;;;;:::i;:::-;;;;;;;;13353:46;13373:6;13381:9;13392:6;13353:19;:46::i;:::-;12795:612;12674:733;;;:::o;14426:591::-;14529:1;14510:21;;:7;:21;;;14502:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14582:49;14603:7;14620:1;14624:6;14582:20;:49::i;:::-;14644:22;14669:9;:18;14679:7;14669:18;;;;;;;;;;;;;;;;14644:43;;14724:6;14706:14;:24;;14698:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14843:6;14826:14;:23;14805:9;:18;14815:7;14805:18;;;;;;;;;;;;;;;:44;;;;14887:6;14871:12;;:22;;;;;;;:::i;:::-;;;;;;;;14937:1;14911:37;;14920:7;14911:37;;;14941:6;14911:37;;;;;;:::i;:::-;;;;;;;;14961:48;14981:7;14998:1;15002:6;14961:19;:48::i;:::-;14491:526;14426:591;;:::o;16435:125::-;;;;:::o;17164: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:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:474::-;5591:6;5599;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;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;5523:474;;;;;:::o;6003:118::-;6090:24;6108:5;6090:24;:::i;:::-;6085:3;6078:37;6003:118;;:::o;6127:222::-;6220:4;6258:2;6247:9;6243:18;6235:26;;6271:71;6339:1;6328:9;6324:17;6315:6;6271:71;:::i;:::-;6127:222;;;;:::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:160::-;8420:12;8416:1;8408:6;8404:14;8397:36;8280:160;:::o;8446:366::-;8588:3;8609:67;8673:2;8668:3;8609:67;:::i;:::-;8602:74;;8685:93;8774:3;8685:93;:::i;:::-;8803:2;8798:3;8794:12;8787:19;;8446:366;;;:::o;8818:419::-;8984:4;9022:2;9011:9;9007:18;8999:26;;9071:9;9065:4;9061:20;9057:1;9046:9;9042:17;9035:47;9099:131;9225:4;9099:131;:::i;:::-;9091:139;;8818:419;;;:::o;9243:224::-;9383:34;9379:1;9371:6;9367:14;9360:58;9452:7;9447:2;9439:6;9435:15;9428:32;9243:224;:::o;9473:366::-;9615:3;9636:67;9700:2;9695:3;9636:67;:::i;:::-;9629:74;;9712:93;9801:3;9712:93;:::i;:::-;9830:2;9825:3;9821:12;9814:19;;9473:366;;;:::o;9845:419::-;10011:4;10049:2;10038:9;10034:18;10026:26;;10098:9;10092:4;10088:20;10084:1;10073:9;10069:17;10062:47;10126:131;10252:4;10126:131;:::i;:::-;10118:139;;9845:419;;;:::o;10270:223::-;10410:34;10406:1;10398:6;10394:14;10387:58;10479:6;10474:2;10466:6;10462:15;10455:31;10270:223;:::o;10499:366::-;10641:3;10662:67;10726:2;10721:3;10662:67;:::i;:::-;10655:74;;10738:93;10827:3;10738:93;:::i;:::-;10856:2;10851:3;10847:12;10840:19;;10499:366;;;:::o;10871:419::-;11037:4;11075:2;11064:9;11060:18;11052:26;;11124:9;11118:4;11114:20;11110:1;11099:9;11095:17;11088:47;11152:131;11278:4;11152:131;:::i;:::-;11144:139;;10871:419;;;:::o;11296:221::-;11436:34;11432:1;11424:6;11420:14;11413:58;11505:4;11500:2;11492:6;11488:15;11481:29;11296:221;:::o;11523:366::-;11665:3;11686:67;11750:2;11745:3;11686:67;:::i;:::-;11679:74;;11762:93;11851:3;11762:93;:::i;:::-;11880:2;11875:3;11871:12;11864:19;;11523:366;;;:::o;11895:419::-;12061:4;12099:2;12088:9;12084:18;12076:26;;12148:9;12142:4;12138:20;12134:1;12123:9;12119:17;12112:47;12176:131;12302:4;12176:131;:::i;:::-;12168:139;;11895:419;;;:::o;12320:224::-;12460:34;12456:1;12448:6;12444:14;12437:58;12529:7;12524:2;12516:6;12512:15;12505:32;12320:224;:::o;12550:366::-;12692:3;12713:67;12777:2;12772:3;12713:67;:::i;:::-;12706:74;;12789:93;12878:3;12789:93;:::i;:::-;12907:2;12902:3;12898:12;12891:19;;12550:366;;;:::o;12922:419::-;13088:4;13126:2;13115:9;13111:18;13103:26;;13175:9;13169:4;13165:20;13161:1;13150:9;13146:17;13139:47;13203:131;13329:4;13203:131;:::i;:::-;13195:139;;12922:419;;;:::o;13347:222::-;13487:34;13483:1;13475:6;13471:14;13464:58;13556:5;13551:2;13543:6;13539:15;13532:30;13347:222;:::o;13575:366::-;13717:3;13738:67;13802:2;13797:3;13738:67;:::i;:::-;13731:74;;13814:93;13903:3;13814:93;:::i;:::-;13932:2;13927:3;13923:12;13916:19;;13575:366;;;:::o;13947:419::-;14113:4;14151:2;14140:9;14136:18;14128:26;;14200:9;14194:4;14190:20;14186:1;14175:9;14171:17;14164:47;14228:131;14354:4;14228:131;:::i;:::-;14220:139;;13947:419;;;:::o;14372:225::-;14512:34;14508:1;14500:6;14496:14;14489:58;14581:8;14576:2;14568:6;14564:15;14557:33;14372:225;:::o;14603:366::-;14745:3;14766:67;14830:2;14825:3;14766:67;:::i;:::-;14759:74;;14842:93;14931:3;14842:93;:::i;:::-;14960:2;14955:3;14951:12;14944:19;;14603:366;;;:::o;14975:419::-;15141:4;15179:2;15168:9;15164:18;15156:26;;15228:9;15222:4;15218:20;15214:1;15203:9;15199:17;15192:47;15256:131;15382:4;15256:131;:::i;:::-;15248:139;;14975:419;;;:::o;15400:220::-;15540:34;15536:1;15528:6;15524:14;15517:58;15609:3;15604:2;15596:6;15592:15;15585:28;15400:220;:::o;15626:366::-;15768:3;15789:67;15853:2;15848:3;15789:67;:::i;:::-;15782:74;;15865:93;15954:3;15865:93;:::i;:::-;15983:2;15978:3;15974:12;15967:19;;15626:366;;;:::o;15998:419::-;16164:4;16202:2;16191:9;16187:18;16179:26;;16251:9;16245:4;16241:20;16237:1;16226:9;16222:17;16215:47;16279:131;16405:4;16279:131;:::i;:::-;16271:139;;15998:419;;;:::o;16423:221::-;16563:34;16559:1;16551:6;16547:14;16540:58;16632:4;16627:2;16619:6;16615:15;16608:29;16423:221;:::o;16650:366::-;16792:3;16813:67;16877:2;16872:3;16813:67;:::i;:::-;16806:74;;16889:93;16978:3;16889:93;:::i;:::-;17007:2;17002:3;16998:12;16991:19;;16650:366;;;:::o;17022:419::-;17188:4;17226:2;17215:9;17211:18;17203:26;;17275:9;17269:4;17265:20;17261:1;17250:9;17246:17;17239:47;17303:131;17429:4;17303:131;:::i;:::-;17295:139;;17022:419;;;:::o;17447:194::-;17487:4;17507:20;17525:1;17507:20;:::i;:::-;17502:25;;17541:20;17559:1;17541:20;:::i;:::-;17536:25;;17585:1;17582;17578:9;17570:17;;17609:1;17603:4;17600:11;17597:37;;;17614:18;;:::i;:::-;17597:37;17447:194;;;;:::o

Swarm Source

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