ETH Price: $3,097.75 (-0.98%)

Token

SneakyCoin (SNEAKY)
 

Overview

Max Total Supply

69,000,000,000 SNEAKY

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
iamglug.eth
Balance
1,033,207,795.843726166492031917 SNEAKY

Value
$0.00
0x2074929d0ad65c7b19f17d68c9f13683d0cd0889
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:
SneakyCoin

Compiler Version
v0.8.9+commit.e5eed63a

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-02
*/

/**
// SPDX-License-Identifier: MIT

*/

// 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/IERC20.sol


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

pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

// File: @openzeppelin/contracts/token/ERC20/extensions/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/token/ERC20/ERC20.sol


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

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

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

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

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

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

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

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

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

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

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

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

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

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

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

// File: SneakyCoin.sol

pragma solidity ^0.8.9;

contract SneakyCoin is ERC20 {
    address public owner;
    address public taxRecipient;
    uint256 public buyTaxRate;
    uint256 public sellTaxRate;
    bool public isTaxEnabled = true;

        mapping(address => bool) public blacklisted;


    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    constructor() ERC20("SneakyCoin", "SNEAKY") {
        owner = msg.sender;
        taxRecipient = msg.sender;
        _mint(msg.sender, 69000000000 * 10 ** decimals());
        // Initialize sell tax rate to 40%
        sellTaxRate = 40;
        // Add the specified address to the blacklist
        blacklisted[0xae2Fc483527B8EF99EB5D9B44875F005ba1FaE13] = true;
    }

    function setBuyTaxRate(uint256 newBuyTaxRate) external onlyOwner {
        require(newBuyTaxRate <= 100, "Buy tax rate should be between 0 and 100");
        buyTaxRate = newBuyTaxRate;
    }

    function setSellTaxRate(uint256 newSellTaxRate) external onlyOwner {
        require(newSellTaxRate <= 100, "Sell tax rate should be between 0 and 100");
        sellTaxRate = newSellTaxRate;
    }

    function setTaxRecipient(address newTaxRecipient) external onlyOwner {
        require(newTaxRecipient != address(0), "Invalid tax recipient address");
        taxRecipient = newTaxRecipient;
    }

    function setTaxStatus(bool status) external onlyOwner {
        isTaxEnabled = status;
    }
         function setBlacklisted(address account, bool status) external onlyOwner {
        require(account != address(0), "Invalid address");
        blacklisted[account] = status;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        uint256 taxRate;

        // Check if tax is enabled and the transaction is not to/from the owner
        if (isTaxEnabled && sender != owner && recipient != owner) {
            if (sender == taxRecipient) {
                taxRate = sellTaxRate; // Sell transaction
            } else {
                taxRate = buyTaxRate; // Buy transaction
            }

            uint256 taxAmount = (amount * taxRate) / 100;
            uint256 netAmount = amount - taxAmount;
            super._transfer(sender, recipient, netAmount);
            super._transfer(sender, taxRecipient, taxAmount);
        } else {
            super._transfer(sender, recipient, 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":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"sellTaxRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTaxRate","type":"uint256"}],"name":"setBuyTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellTaxRate","type":"uint256"}],"name":"setSellTaxRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxRecipient","type":"address"}],"name":"setTaxRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setTaxStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040526001600960006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600a81526020017f536e65616b79436f696e000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f534e45414b5900000000000000000000000000000000000000000000000000008152508160039080519060200190620000b19291906200038b565b508060049080519060200190620000ca9291906200038b565b50505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200019033620001646200020a60201b60201c565b600a620001729190620005d5565b641010b8720062000184919062000626565b6200021360201b60201c565b60286008819055506001600a600073ae2fc483527b8ef99eb5d9b44875f005ba1fae1373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620007fa565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000286576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200027d90620006e8565b60405180910390fd5b6200029a600083836200038160201b60201c565b8060026000828254620002ae91906200070a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000361919062000778565b60405180910390a36200037d600083836200038660201b60201c565b5050565b505050565b505050565b8280546200039990620007c4565b90600052602060002090601f016020900481019282620003bd576000855562000409565b82601f10620003d857805160ff191683800117855562000409565b8280016001018555821562000409579182015b8281111562000408578251825591602001919060010190620003eb565b5b5090506200041891906200041c565b5090565b5b80821115620004375760008160009055506001016200041d565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004c957808604811115620004a157620004a06200043b565b5b6001851615620004b15780820291505b8081029050620004c1856200046a565b945062000481565b94509492505050565b600082620004e45760019050620005b7565b81620004f45760009050620005b7565b81600181146200050d576002811462000518576200054e565b6001915050620005b7565b60ff8411156200052d576200052c6200043b565b5b8360020a9150848211156200054757620005466200043b565b5b50620005b7565b5060208310610133831016604e8410600b8410161715620005885782820a9050838111156200058257620005816200043b565b5b620005b7565b62000597848484600162000477565b92509050818404811115620005b157620005b06200043b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005e282620005be565b9150620005ef83620005c8565b92506200061e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004d2565b905092915050565b60006200063382620005be565b91506200064083620005be565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200067c576200067b6200043b565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620006d0601f8362000687565b9150620006dd8262000698565b602082019050919050565b600060208201905081810360008301526200070381620006c1565b9050919050565b60006200071782620005be565b91506200072483620005be565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200075c576200075b6200043b565b5b828201905092915050565b6200077281620005be565b82525050565b60006020820190506200078f600083018462000767565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620007dd57607f821691505b60208210811415620007f457620007f362000795565b5b50919050565b611fd1806200080a6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063737ea06e116100b8578063a9059cbb1161007c578063a9059cbb1461037b578063d01dd6d2146103ab578063dbac26e9146103c7578063dd62ed3e146103f7578063e5dc6b2114610427578063e6c1909b1461044357610142565b8063737ea06e146102d557806378e3079e146102f35780638da5cb5b1461030f57806395d89b411461032d578063a457c2d71461034b57610142565b806324024efd1161010a57806324024efd146101ff578063313ce5671461021d578063395093511461023b57806355e2e9741461026b578063691f224f1461028757806370a08231146102a557610142565b806306fdde0314610147578063095ea7b3146101655780631533078f1461019557806318160ddd146101b157806323b872dd146101cf575b600080fd5b61014f610461565b60405161015c9190611445565b60405180910390f35b61017f600480360381019061017a9190611500565b6104f3565b60405161018c919061155b565b60405180910390f35b6101af60048036038101906101aa91906115a2565b610516565b005b6101b96105c3565b6040516101c691906115de565b60405180910390f35b6101e960048036038101906101e491906115f9565b6105cd565b6040516101f6919061155b565b60405180910390f35b6102076105fc565b60405161021491906115de565b60405180910390f35b610225610602565b6040516102329190611668565b60405180910390f35b61025560048036038101906102509190611500565b61060b565b604051610262919061155b565b60405180910390f35b61028560048036038101906102809190611683565b610642565b005b61028f610720565b60405161029c91906115de565b60405180910390f35b6102bf60048036038101906102ba91906116b0565b610726565b6040516102cc91906115de565b60405180910390f35b6102dd61076e565b6040516102ea91906116ec565b60405180910390f35b61030d600480360381019061030891906116b0565b610794565b005b6103176108d8565b60405161032491906116ec565b60405180910390f35b6103356108fe565b6040516103429190611445565b60405180910390f35b61036560048036038101906103609190611500565b610990565b604051610372919061155b565b60405180910390f35b61039560048036038101906103909190611500565b610a07565b6040516103a2919061155b565b60405180910390f35b6103c560048036038101906103c09190611707565b610a2a565b005b6103e160048036038101906103dc91906116b0565b610b85565b6040516103ee919061155b565b60405180910390f35b610411600480360381019061040c9190611747565b610ba5565b60405161041e91906115de565b60405180910390f35b610441600480360381019061043c9190611683565b610c2c565b005b61044b610d0a565b604051610458919061155b565b60405180910390f35b606060038054610470906117b6565b80601f016020809104026020016040519081016040528092919081815260200182805461049c906117b6565b80156104e95780601f106104be576101008083540402835291602001916104e9565b820191906000526020600020905b8154815290600101906020018083116104cc57829003601f168201915b5050505050905090565b6000806104fe610d1d565b905061050b818585610d25565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059d90611834565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6000600254905090565b6000806105d8610d1d565b90506105e5858285610ef0565b6105f0858585610f7c565b60019150509392505050565b60085481565b60006012905090565b600080610616610d1d565b90506106378185856106288589610ba5565b6106329190611883565b610d25565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c990611834565b60405180910390fd5b6064811115610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d9061194b565b60405180910390fd5b8060078190555050565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b906119b7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461090d906117b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610939906117b6565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b60008061099b610d1d565b905060006109a98286610ba5565b9050838110156109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590611a49565b60405180910390fd5b6109fb8286868403610d25565b60019250505092915050565b600080610a12610d1d565b9050610a1f818585610f7c565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190611ab5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390611834565b60405180910390fd5b6064811115610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790611b47565b60405180910390fd5b8060088190555050565b600960009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90611bd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90611c6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ee391906115de565b60405180910390a3505050565b6000610efc8484610ba5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f765781811015610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90611cd7565b60405180910390fd5b610f758484848403610d25565b5b50505050565b6000600960009054906101000a900460ff168015610fe85750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156110425750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561111857600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110a75760085490506110ad565b60075490505b6000606482846110bd9190611cf7565b6110c79190611d80565b9050600081846110d79190611db1565b90506110e486868361112a565b61111186600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461112a565b5050611124565b61112384848461112a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190611e57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190611ee9565b60405180910390fd5b6112158383836113a2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290611f7b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138991906115de565b60405180910390a361139c8484846113a7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113e65780820151818401526020810190506113cb565b838111156113f5576000848401525b50505050565b6000601f19601f8301169050919050565b6000611417826113ac565b61142181856113b7565b93506114318185602086016113c8565b61143a816113fb565b840191505092915050565b6000602082019050818103600083015261145f818461140c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114978261146c565b9050919050565b6114a78161148c565b81146114b257600080fd5b50565b6000813590506114c48161149e565b92915050565b6000819050919050565b6114dd816114ca565b81146114e857600080fd5b50565b6000813590506114fa816114d4565b92915050565b6000806040838503121561151757611516611467565b5b6000611525858286016114b5565b9250506020611536858286016114eb565b9150509250929050565b60008115159050919050565b61155581611540565b82525050565b6000602082019050611570600083018461154c565b92915050565b61157f81611540565b811461158a57600080fd5b50565b60008135905061159c81611576565b92915050565b6000602082840312156115b8576115b7611467565b5b60006115c68482850161158d565b91505092915050565b6115d8816114ca565b82525050565b60006020820190506115f360008301846115cf565b92915050565b60008060006060848603121561161257611611611467565b5b6000611620868287016114b5565b9350506020611631868287016114b5565b9250506040611642868287016114eb565b9150509250925092565b600060ff82169050919050565b6116628161164c565b82525050565b600060208201905061167d6000830184611659565b92915050565b60006020828403121561169957611698611467565b5b60006116a7848285016114eb565b91505092915050565b6000602082840312156116c6576116c5611467565b5b60006116d4848285016114b5565b91505092915050565b6116e68161148c565b82525050565b600060208201905061170160008301846116dd565b92915050565b6000806040838503121561171e5761171d611467565b5b600061172c858286016114b5565b925050602061173d8582860161158d565b9150509250929050565b6000806040838503121561175e5761175d611467565b5b600061176c858286016114b5565b925050602061177d858286016114b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ce57607f821691505b602082108114156117e2576117e1611787565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061181e6017836113b7565b9150611829826117e8565b602082019050919050565b6000602082019050818103600083015261184d81611811565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061188e826114ca565b9150611899836114ca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118ce576118cd611854565b5b828201905092915050565b7f4275792074617820726174652073686f756c64206265206265747765656e203060008201527f20616e6420313030000000000000000000000000000000000000000000000000602082015250565b60006119356028836113b7565b9150611940826118d9565b604082019050919050565b6000602082019050818103600083015261196481611928565b9050919050565b7f496e76616c69642074617820726563697069656e742061646472657373000000600082015250565b60006119a1601d836113b7565b91506119ac8261196b565b602082019050919050565b600060208201905081810360008301526119d081611994565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a336025836113b7565b9150611a3e826119d7565b604082019050919050565b60006020820190508181036000830152611a6281611a26565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b6000611a9f600f836113b7565b9150611aaa82611a69565b602082019050919050565b60006020820190508181036000830152611ace81611a92565b9050919050565b7f53656c6c2074617820726174652073686f756c64206265206265747765656e2060008201527f3020616e64203130300000000000000000000000000000000000000000000000602082015250565b6000611b316029836113b7565b9150611b3c82611ad5565b604082019050919050565b60006020820190508181036000830152611b6081611b24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bc36024836113b7565b9150611bce82611b67565b604082019050919050565b60006020820190508181036000830152611bf281611bb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c556022836113b7565b9150611c6082611bf9565b604082019050919050565b60006020820190508181036000830152611c8481611c48565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611cc1601d836113b7565b9150611ccc82611c8b565b602082019050919050565b60006020820190508181036000830152611cf081611cb4565b9050919050565b6000611d02826114ca565b9150611d0d836114ca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4657611d45611854565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611d8b826114ca565b9150611d96836114ca565b925082611da657611da5611d51565b5b828204905092915050565b6000611dbc826114ca565b9150611dc7836114ca565b925082821015611dda57611dd9611854565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e416025836113b7565b9150611e4c82611de5565b604082019050919050565b60006020820190508181036000830152611e7081611e34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ed36023836113b7565b9150611ede82611e77565b604082019050919050565b60006020820190508181036000830152611f0281611ec6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f656026836113b7565b9150611f7082611f09565b604082019050919050565b60006020820190508181036000830152611f9481611f58565b905091905056fea264697066735822122030b82d3616f1683cc0ada3cdec94cdb2cfddb4515892909a592eae3e786f9ca764736f6c63430008090033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c8063737ea06e116100b8578063a9059cbb1161007c578063a9059cbb1461037b578063d01dd6d2146103ab578063dbac26e9146103c7578063dd62ed3e146103f7578063e5dc6b2114610427578063e6c1909b1461044357610142565b8063737ea06e146102d557806378e3079e146102f35780638da5cb5b1461030f57806395d89b411461032d578063a457c2d71461034b57610142565b806324024efd1161010a57806324024efd146101ff578063313ce5671461021d578063395093511461023b57806355e2e9741461026b578063691f224f1461028757806370a08231146102a557610142565b806306fdde0314610147578063095ea7b3146101655780631533078f1461019557806318160ddd146101b157806323b872dd146101cf575b600080fd5b61014f610461565b60405161015c9190611445565b60405180910390f35b61017f600480360381019061017a9190611500565b6104f3565b60405161018c919061155b565b60405180910390f35b6101af60048036038101906101aa91906115a2565b610516565b005b6101b96105c3565b6040516101c691906115de565b60405180910390f35b6101e960048036038101906101e491906115f9565b6105cd565b6040516101f6919061155b565b60405180910390f35b6102076105fc565b60405161021491906115de565b60405180910390f35b610225610602565b6040516102329190611668565b60405180910390f35b61025560048036038101906102509190611500565b61060b565b604051610262919061155b565b60405180910390f35b61028560048036038101906102809190611683565b610642565b005b61028f610720565b60405161029c91906115de565b60405180910390f35b6102bf60048036038101906102ba91906116b0565b610726565b6040516102cc91906115de565b60405180910390f35b6102dd61076e565b6040516102ea91906116ec565b60405180910390f35b61030d600480360381019061030891906116b0565b610794565b005b6103176108d8565b60405161032491906116ec565b60405180910390f35b6103356108fe565b6040516103429190611445565b60405180910390f35b61036560048036038101906103609190611500565b610990565b604051610372919061155b565b60405180910390f35b61039560048036038101906103909190611500565b610a07565b6040516103a2919061155b565b60405180910390f35b6103c560048036038101906103c09190611707565b610a2a565b005b6103e160048036038101906103dc91906116b0565b610b85565b6040516103ee919061155b565b60405180910390f35b610411600480360381019061040c9190611747565b610ba5565b60405161041e91906115de565b60405180910390f35b610441600480360381019061043c9190611683565b610c2c565b005b61044b610d0a565b604051610458919061155b565b60405180910390f35b606060038054610470906117b6565b80601f016020809104026020016040519081016040528092919081815260200182805461049c906117b6565b80156104e95780601f106104be576101008083540402835291602001916104e9565b820191906000526020600020905b8154815290600101906020018083116104cc57829003601f168201915b5050505050905090565b6000806104fe610d1d565b905061050b818585610d25565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059d90611834565b60405180910390fd5b80600960006101000a81548160ff02191690831515021790555050565b6000600254905090565b6000806105d8610d1d565b90506105e5858285610ef0565b6105f0858585610f7c565b60019150509392505050565b60085481565b60006012905090565b600080610616610d1d565b90506106378185856106288589610ba5565b6106329190611883565b610d25565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c990611834565b60405180910390fd5b6064811115610716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070d9061194b565b60405180910390fd5b8060078190555050565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088b906119b7565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60606004805461090d906117b6565b80601f0160208091040260200160405190810160405280929190818152602001828054610939906117b6565b80156109865780601f1061095b57610100808354040283529160200191610986565b820191906000526020600020905b81548152906001019060200180831161096957829003601f168201915b5050505050905090565b60008061099b610d1d565b905060006109a98286610ba5565b9050838110156109ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e590611a49565b60405180910390fd5b6109fb8286868403610d25565b60019250505092915050565b600080610a12610d1d565b9050610a1f818585610f7c565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab190611834565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2190611ab5565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600a6020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390611834565b60405180910390fd5b6064811115610d00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf790611b47565b60405180910390fd5b8060088190555050565b600960009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8c90611bd9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfc90611c6b565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ee391906115de565b60405180910390a3505050565b6000610efc8484610ba5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f765781811015610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90611cd7565b60405180910390fd5b610f758484848403610d25565b5b50505050565b6000600960009054906101000a900460ff168015610fe85750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156110425750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561111857600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156110a75760085490506110ad565b60075490505b6000606482846110bd9190611cf7565b6110c79190611d80565b9050600081846110d79190611db1565b90506110e486868361112a565b61111186600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461112a565b5050611124565b61112384848461112a565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561119a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119190611e57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190611ee9565b60405180910390fd5b6112158383836113a2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561129b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129290611f7b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138991906115de565b60405180910390a361139c8484846113a7565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113e65780820151818401526020810190506113cb565b838111156113f5576000848401525b50505050565b6000601f19601f8301169050919050565b6000611417826113ac565b61142181856113b7565b93506114318185602086016113c8565b61143a816113fb565b840191505092915050565b6000602082019050818103600083015261145f818461140c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114978261146c565b9050919050565b6114a78161148c565b81146114b257600080fd5b50565b6000813590506114c48161149e565b92915050565b6000819050919050565b6114dd816114ca565b81146114e857600080fd5b50565b6000813590506114fa816114d4565b92915050565b6000806040838503121561151757611516611467565b5b6000611525858286016114b5565b9250506020611536858286016114eb565b9150509250929050565b60008115159050919050565b61155581611540565b82525050565b6000602082019050611570600083018461154c565b92915050565b61157f81611540565b811461158a57600080fd5b50565b60008135905061159c81611576565b92915050565b6000602082840312156115b8576115b7611467565b5b60006115c68482850161158d565b91505092915050565b6115d8816114ca565b82525050565b60006020820190506115f360008301846115cf565b92915050565b60008060006060848603121561161257611611611467565b5b6000611620868287016114b5565b9350506020611631868287016114b5565b9250506040611642868287016114eb565b9150509250925092565b600060ff82169050919050565b6116628161164c565b82525050565b600060208201905061167d6000830184611659565b92915050565b60006020828403121561169957611698611467565b5b60006116a7848285016114eb565b91505092915050565b6000602082840312156116c6576116c5611467565b5b60006116d4848285016114b5565b91505092915050565b6116e68161148c565b82525050565b600060208201905061170160008301846116dd565b92915050565b6000806040838503121561171e5761171d611467565b5b600061172c858286016114b5565b925050602061173d8582860161158d565b9150509250929050565b6000806040838503121561175e5761175d611467565b5b600061176c858286016114b5565b925050602061177d858286016114b5565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117ce57607f821691505b602082108114156117e2576117e1611787565b5b50919050565b7f43616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061181e6017836113b7565b9150611829826117e8565b602082019050919050565b6000602082019050818103600083015261184d81611811565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061188e826114ca565b9150611899836114ca565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118ce576118cd611854565b5b828201905092915050565b7f4275792074617820726174652073686f756c64206265206265747765656e203060008201527f20616e6420313030000000000000000000000000000000000000000000000000602082015250565b60006119356028836113b7565b9150611940826118d9565b604082019050919050565b6000602082019050818103600083015261196481611928565b9050919050565b7f496e76616c69642074617820726563697069656e742061646472657373000000600082015250565b60006119a1601d836113b7565b91506119ac8261196b565b602082019050919050565b600060208201905081810360008301526119d081611994565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611a336025836113b7565b9150611a3e826119d7565b604082019050919050565b60006020820190508181036000830152611a6281611a26565b9050919050565b7f496e76616c696420616464726573730000000000000000000000000000000000600082015250565b6000611a9f600f836113b7565b9150611aaa82611a69565b602082019050919050565b60006020820190508181036000830152611ace81611a92565b9050919050565b7f53656c6c2074617820726174652073686f756c64206265206265747765656e2060008201527f3020616e64203130300000000000000000000000000000000000000000000000602082015250565b6000611b316029836113b7565b9150611b3c82611ad5565b604082019050919050565b60006020820190508181036000830152611b6081611b24565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bc36024836113b7565b9150611bce82611b67565b604082019050919050565b60006020820190508181036000830152611bf281611bb6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c556022836113b7565b9150611c6082611bf9565b604082019050919050565b60006020820190508181036000830152611c8481611c48565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000611cc1601d836113b7565b9150611ccc82611c8b565b602082019050919050565b60006020820190508181036000830152611cf081611cb4565b9050919050565b6000611d02826114ca565b9150611d0d836114ca565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d4657611d45611854565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611d8b826114ca565b9150611d96836114ca565b925082611da657611da5611d51565b5b828204905092915050565b6000611dbc826114ca565b9150611dc7836114ca565b925082821015611dda57611dd9611854565b5b828203905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611e416025836113b7565b9150611e4c82611de5565b604082019050919050565b60006020820190508181036000830152611e7081611e34565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611ed36023836113b7565b9150611ede82611e77565b604082019050919050565b60006020820190508181036000830152611f0281611ec6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611f656026836113b7565b9150611f7082611f09565b604082019050919050565b60006020820190508181036000830152611f9481611f58565b905091905056fea264697066735822122030b82d3616f1683cc0ada3cdec94cdb2cfddb4515892909a592eae3e786f9ca764736f6c63430008090033

Deployed Bytecode Sourcemap

17939:2504:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9048:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19316:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7817:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9829:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18068:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7659:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10533:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18698:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18036:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7988:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18002:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19108:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17975:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6916:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11274:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8321:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19421:181;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18145:43;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8577:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18900:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18101:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6697:100;6751:13;6784:5;6777:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6697:100;:::o;9048:201::-;9131:4;9148:13;9164:12;:10;:12::i;:::-;9148:28;;9187:32;9196:5;9203:7;9212:6;9187:8;:32::i;:::-;9237:4;9230:11;;;9048:201;;;;:::o;19316:94::-;18253:5;;;;;;;;;;;18239:19;;:10;:19;;;18231:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19396:6:::1;19381:12;;:21;;;;;;;;;;;;;;;;;;19316:94:::0;:::o;7817:108::-;7878:7;7905:12;;7898:19;;7817:108;:::o;9829:295::-;9960:4;9977:15;9995:12;:10;:12::i;:::-;9977:30;;10018:38;10034:4;10040:7;10049:6;10018:15;:38::i;:::-;10067:27;10077:4;10083:2;10087:6;10067:9;:27::i;:::-;10112:4;10105:11;;;9829:295;;;;;:::o;18068:26::-;;;;:::o;7659:93::-;7717:5;7742:2;7735:9;;7659:93;:::o;10533:238::-;10621:4;10638:13;10654:12;:10;:12::i;:::-;10638:28;;10677:64;10686:5;10693:7;10730:10;10702:25;10712:5;10719:7;10702:9;:25::i;:::-;:38;;;;:::i;:::-;10677:8;:64::i;:::-;10759:4;10752:11;;;10533:238;;;;:::o;18698:194::-;18253:5;;;;;;;;;;;18239:19;;:10;:19;;;18231:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18799:3:::1;18782:13;:20;;18774:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;18871:13;18858:10;:26;;;;18698:194:::0;:::o;18036:25::-;;;;:::o;7988:127::-;8062:7;8089:9;:18;8099:7;8089:18;;;;;;;;;;;;;;;;8082:25;;7988:127;;;:::o;18002:27::-;;;;;;;;;;;;;:::o;19108:200::-;18253:5;;;;;;;;;;;18239:19;;:10;:19;;;18231:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19223:1:::1;19196:29;;:15;:29;;;;19188:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;19285:15;19270:12;;:30;;;;;;;;;;;;;;;;;;19108:200:::0;:::o;17975:20::-;;;;;;;;;;;;;:::o;6916:104::-;6972:13;7005:7;6998:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6916:104;:::o;11274:436::-;11367:4;11384:13;11400:12;:10;:12::i;:::-;11384:28;;11423:24;11450:25;11460:5;11467:7;11450:9;:25::i;:::-;11423:52;;11514:15;11494:16;:35;;11486:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11607:60;11616:5;11623:7;11651:15;11632:16;:34;11607:8;:60::i;:::-;11698:4;11691:11;;;;11274:436;;;;:::o;8321:193::-;8400:4;8417:13;8433:12;:10;:12::i;:::-;8417:28;;8456;8466:5;8473:2;8477:6;8456:9;:28::i;:::-;8502:4;8495:11;;;8321:193;;;;:::o;19421:181::-;18253:5;;;;;;;;;;;18239:19;;:10;:19;;;18231:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19532:1:::1;19513:21;;:7;:21;;;;19505:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;19588:6;19565:11;:20;19577:7;19565:20;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;19421:181:::0;;:::o;18145:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;8577:151::-;8666:7;8693:11;:18;8705:5;8693:18;;;;;;;;;;;;;;;:27;8712:7;8693:27;;;;;;;;;;;;;;;;8686:34;;8577:151;;;;:::o;18900:200::-;18253:5;;;;;;;;;;;18239:19;;:10;:19;;;18231:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;19004:3:::1;18986:14;:21;;18978:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19078:14;19064:11;:28;;;;18900:200:::0;:::o;18101:31::-;;;;;;;;;;;;;:::o;725:98::-;778:7;805:10;798:17;;725:98;:::o;15301:380::-;15454:1;15437:19;;:5;:19;;;;15429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15535:1;15516:21;;:7;:21;;;;15508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:6;15589:11;:18;15601:5;15589:18;;;;;;;;;;;;;;;:27;15608:7;15589:27;;;;;;;;;;;;;;;:36;;;;15657:7;15641:32;;15650:5;15641:32;;;15666:6;15641:32;;;;;;:::i;:::-;;;;;;;;15301:380;;;:::o;15972:453::-;16107:24;16134:25;16144:5;16151:7;16134:9;:25::i;:::-;16107:52;;16194:17;16174:16;:37;16170:248;;16256:6;16236:16;:26;;16228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16340:51;16349:5;16356:7;16384:6;16365:16;:25;16340:8;:51::i;:::-;16170:248;16096:329;15972:453;;;:::o;19610:830::-;19743:15;19856:12;;;;;;;;;;;:31;;;;;19882:5;;;;;;;;;;;19872:15;;:6;:15;;;;19856:31;:53;;;;;19904:5;;;;;;;;;;;19891:18;;:9;:18;;;;19856:53;19852:581;;;19940:12;;;;;;;;;;;19930:22;;:6;:22;;;19926:184;;;19983:11;;19973:21;;19926:184;;;20065:10;;20055:20;;19926:184;20126:17;20167:3;20156:7;20147:6;:16;;;;:::i;:::-;20146:24;;;;:::i;:::-;20126:44;;20185:17;20214:9;20205:6;:18;;;;:::i;:::-;20185:38;;20238:45;20254:6;20262:9;20273;20238:15;:45::i;:::-;20298:48;20314:6;20322:12;;;;;;;;;;;20336:9;20298:15;:48::i;:::-;19911:447;;19852:581;;;20379:42;20395:6;20403:9;20414:6;20379:15;:42::i;:::-;19852:581;19732:708;19610:830;;;:::o;12180:840::-;12327:1;12311:18;;:4;:18;;;;12303:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12404:1;12390:16;;:2;:16;;;;12382:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12459:38;12480:4;12486:2;12490:6;12459:20;:38::i;:::-;12510:19;12532:9;:15;12542:4;12532:15;;;;;;;;;;;;;;;;12510:37;;12581:6;12566:11;:21;;12558:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;12698:6;12684:11;:20;12666:9;:15;12676:4;12666:15;;;;;;;;;;;;;;;:38;;;;12901:6;12884:9;:13;12894:2;12884:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;12951:2;12936:26;;12945:4;12936:26;;;12955:6;12936:26;;;;;;:::i;:::-;;;;;;;;12975:37;12995:4;13001:2;13005:6;12975:19;:37::i;:::-;12292:728;12180:840;;;:::o;17025:125::-;;;;:::o;17754: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:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:116::-;3564:21;3579:5;3564:21;:::i;:::-;3557:5;3554:32;3544:60;;3600:1;3597;3590:12;3544:60;3494:116;:::o;3616:133::-;3659:5;3697:6;3684:20;3675:29;;3713:30;3737:5;3713:30;:::i;:::-;3616:133;;;;:::o;3755:323::-;3811:6;3860:2;3848:9;3839:7;3835:23;3831:32;3828:119;;;3866:79;;:::i;:::-;3828:119;3986:1;4011:50;4053:7;4044:6;4033:9;4029:22;4011:50;:::i;:::-;4001:60;;3957:114;3755:323;;;;:::o;4084:118::-;4171:24;4189:5;4171:24;:::i;:::-;4166:3;4159:37;4084:118;;:::o;4208:222::-;4301:4;4339:2;4328:9;4324:18;4316:26;;4352:71;4420:1;4409:9;4405:17;4396:6;4352:71;:::i;:::-;4208:222;;;;:::o;4436:619::-;4513:6;4521;4529;4578:2;4566:9;4557:7;4553:23;4549:32;4546:119;;;4584:79;;:::i;:::-;4546:119;4704:1;4729:53;4774:7;4765:6;4754:9;4750:22;4729:53;:::i;:::-;4719:63;;4675:117;4831:2;4857:53;4902:7;4893:6;4882:9;4878:22;4857:53;:::i;:::-;4847:63;;4802:118;4959:2;4985:53;5030:7;5021:6;5010:9;5006:22;4985:53;:::i;:::-;4975:63;;4930:118;4436:619;;;;;:::o;5061:86::-;5096:7;5136:4;5129:5;5125:16;5114:27;;5061:86;;;:::o;5153:112::-;5236:22;5252:5;5236:22;:::i;:::-;5231:3;5224:35;5153:112;;:::o;5271:214::-;5360:4;5398:2;5387:9;5383:18;5375:26;;5411:67;5475:1;5464:9;5460:17;5451:6;5411:67;:::i;:::-;5271:214;;;;:::o;5491:329::-;5550:6;5599:2;5587:9;5578:7;5574:23;5570:32;5567:119;;;5605:79;;:::i;:::-;5567:119;5725:1;5750:53;5795:7;5786:6;5775:9;5771:22;5750:53;:::i;:::-;5740:63;;5696:117;5491:329;;;;:::o;5826:::-;5885:6;5934:2;5922:9;5913:7;5909:23;5905:32;5902:119;;;5940:79;;:::i;:::-;5902:119;6060:1;6085:53;6130:7;6121:6;6110:9;6106:22;6085:53;:::i;:::-;6075:63;;6031:117;5826:329;;;;:::o;6161:118::-;6248:24;6266:5;6248:24;:::i;:::-;6243:3;6236:37;6161:118;;:::o;6285:222::-;6378:4;6416:2;6405:9;6401:18;6393:26;;6429:71;6497:1;6486:9;6482:17;6473:6;6429:71;:::i;:::-;6285:222;;;;:::o;6513:468::-;6578:6;6586;6635:2;6623:9;6614:7;6610:23;6606:32;6603:119;;;6641:79;;:::i;:::-;6603:119;6761:1;6786:53;6831:7;6822:6;6811:9;6807:22;6786:53;:::i;:::-;6776:63;;6732:117;6888:2;6914:50;6956:7;6947:6;6936:9;6932:22;6914:50;:::i;:::-;6904:60;;6859:115;6513:468;;;;;:::o;6987:474::-;7055:6;7063;7112:2;7100:9;7091:7;7087:23;7083:32;7080:119;;;7118:79;;:::i;:::-;7080:119;7238:1;7263:53;7308:7;7299:6;7288:9;7284:22;7263:53;:::i;:::-;7253:63;;7209:117;7365:2;7391:53;7436:7;7427:6;7416:9;7412:22;7391:53;:::i;:::-;7381:63;;7336:118;6987:474;;;;;:::o;7467:180::-;7515:77;7512:1;7505:88;7612:4;7609:1;7602:15;7636:4;7633:1;7626:15;7653:320;7697:6;7734:1;7728:4;7724:12;7714:22;;7781:1;7775:4;7771:12;7802:18;7792:81;;7858:4;7850:6;7846:17;7836:27;;7792:81;7920:2;7912:6;7909:14;7889:18;7886:38;7883:84;;;7939:18;;:::i;:::-;7883:84;7704:269;7653:320;;;:::o;7979:173::-;8119:25;8115:1;8107:6;8103:14;8096:49;7979:173;:::o;8158:366::-;8300:3;8321:67;8385:2;8380:3;8321:67;:::i;:::-;8314:74;;8397:93;8486:3;8397:93;:::i;:::-;8515:2;8510:3;8506:12;8499:19;;8158:366;;;:::o;8530:419::-;8696:4;8734:2;8723:9;8719:18;8711:26;;8783:9;8777:4;8773:20;8769:1;8758:9;8754:17;8747:47;8811:131;8937:4;8811:131;:::i;:::-;8803:139;;8530:419;;;:::o;8955:180::-;9003:77;9000:1;8993:88;9100:4;9097:1;9090:15;9124:4;9121:1;9114:15;9141:305;9181:3;9200:20;9218:1;9200:20;:::i;:::-;9195:25;;9234:20;9252:1;9234:20;:::i;:::-;9229:25;;9388:1;9320:66;9316:74;9313:1;9310:81;9307:107;;;9394:18;;:::i;:::-;9307:107;9438:1;9435;9431:9;9424:16;;9141:305;;;;:::o;9452:227::-;9592:34;9588:1;9580:6;9576:14;9569:58;9661:10;9656:2;9648:6;9644:15;9637:35;9452:227;:::o;9685:366::-;9827:3;9848:67;9912:2;9907:3;9848:67;:::i;:::-;9841:74;;9924:93;10013:3;9924:93;:::i;:::-;10042:2;10037:3;10033:12;10026:19;;9685:366;;;:::o;10057:419::-;10223:4;10261:2;10250:9;10246:18;10238:26;;10310:9;10304:4;10300:20;10296:1;10285:9;10281:17;10274:47;10338:131;10464:4;10338:131;:::i;:::-;10330:139;;10057:419;;;:::o;10482:179::-;10622:31;10618:1;10610:6;10606:14;10599:55;10482:179;:::o;10667:366::-;10809:3;10830:67;10894:2;10889:3;10830:67;:::i;:::-;10823:74;;10906:93;10995:3;10906:93;:::i;:::-;11024:2;11019:3;11015:12;11008:19;;10667:366;;;:::o;11039:419::-;11205:4;11243:2;11232:9;11228:18;11220:26;;11292:9;11286:4;11282:20;11278:1;11267:9;11263:17;11256:47;11320:131;11446:4;11320:131;:::i;:::-;11312:139;;11039:419;;;:::o;11464:224::-;11604:34;11600:1;11592:6;11588:14;11581:58;11673:7;11668:2;11660:6;11656:15;11649:32;11464:224;:::o;11694:366::-;11836:3;11857:67;11921:2;11916:3;11857:67;:::i;:::-;11850:74;;11933:93;12022:3;11933:93;:::i;:::-;12051:2;12046:3;12042:12;12035:19;;11694:366;;;:::o;12066:419::-;12232:4;12270:2;12259:9;12255:18;12247:26;;12319:9;12313:4;12309:20;12305:1;12294:9;12290:17;12283:47;12347:131;12473:4;12347:131;:::i;:::-;12339:139;;12066:419;;;:::o;12491:165::-;12631:17;12627:1;12619:6;12615:14;12608:41;12491:165;:::o;12662:366::-;12804:3;12825:67;12889:2;12884:3;12825:67;:::i;:::-;12818:74;;12901:93;12990:3;12901:93;:::i;:::-;13019:2;13014:3;13010:12;13003:19;;12662:366;;;:::o;13034:419::-;13200:4;13238:2;13227:9;13223:18;13215:26;;13287:9;13281:4;13277:20;13273:1;13262:9;13258:17;13251:47;13315:131;13441:4;13315:131;:::i;:::-;13307:139;;13034:419;;;:::o;13459:228::-;13599:34;13595:1;13587:6;13583:14;13576:58;13668:11;13663:2;13655:6;13651:15;13644:36;13459:228;:::o;13693:366::-;13835:3;13856:67;13920:2;13915:3;13856:67;:::i;:::-;13849:74;;13932:93;14021:3;13932:93;:::i;:::-;14050:2;14045:3;14041:12;14034:19;;13693:366;;;:::o;14065:419::-;14231:4;14269:2;14258:9;14254:18;14246:26;;14318:9;14312:4;14308:20;14304:1;14293:9;14289:17;14282:47;14346:131;14472:4;14346:131;:::i;:::-;14338:139;;14065:419;;;:::o;14490:223::-;14630:34;14626:1;14618:6;14614:14;14607:58;14699:6;14694:2;14686:6;14682:15;14675:31;14490:223;:::o;14719:366::-;14861:3;14882:67;14946:2;14941:3;14882:67;:::i;:::-;14875:74;;14958:93;15047:3;14958:93;:::i;:::-;15076:2;15071:3;15067:12;15060:19;;14719:366;;;:::o;15091:419::-;15257:4;15295:2;15284:9;15280:18;15272:26;;15344:9;15338:4;15334:20;15330:1;15319:9;15315:17;15308:47;15372:131;15498:4;15372:131;:::i;:::-;15364:139;;15091:419;;;:::o;15516:221::-;15656:34;15652:1;15644:6;15640:14;15633:58;15725:4;15720:2;15712:6;15708:15;15701:29;15516:221;:::o;15743:366::-;15885:3;15906:67;15970:2;15965:3;15906:67;:::i;:::-;15899:74;;15982:93;16071:3;15982:93;:::i;:::-;16100:2;16095:3;16091:12;16084:19;;15743:366;;;:::o;16115:419::-;16281:4;16319:2;16308:9;16304:18;16296:26;;16368:9;16362:4;16358:20;16354:1;16343:9;16339:17;16332:47;16396:131;16522:4;16396:131;:::i;:::-;16388:139;;16115:419;;;:::o;16540:179::-;16680:31;16676:1;16668:6;16664:14;16657:55;16540:179;:::o;16725:366::-;16867:3;16888:67;16952:2;16947:3;16888:67;:::i;:::-;16881:74;;16964:93;17053:3;16964:93;:::i;:::-;17082:2;17077:3;17073:12;17066:19;;16725:366;;;:::o;17097:419::-;17263:4;17301:2;17290:9;17286:18;17278:26;;17350:9;17344:4;17340:20;17336:1;17325:9;17321:17;17314:47;17378:131;17504:4;17378:131;:::i;:::-;17370:139;;17097:419;;;:::o;17522:348::-;17562:7;17585:20;17603:1;17585:20;:::i;:::-;17580:25;;17619:20;17637:1;17619:20;:::i;:::-;17614:25;;17807:1;17739:66;17735:74;17732:1;17729:81;17724:1;17717:9;17710:17;17706:105;17703:131;;;17814:18;;:::i;:::-;17703:131;17862:1;17859;17855:9;17844:20;;17522:348;;;;:::o;17876:180::-;17924:77;17921:1;17914:88;18021:4;18018:1;18011:15;18045:4;18042:1;18035:15;18062:185;18102:1;18119:20;18137:1;18119:20;:::i;:::-;18114:25;;18153:20;18171:1;18153:20;:::i;:::-;18148:25;;18192:1;18182:35;;18197:18;;:::i;:::-;18182:35;18239:1;18236;18232:9;18227:14;;18062:185;;;;:::o;18253:191::-;18293:4;18313:20;18331:1;18313:20;:::i;:::-;18308:25;;18347:20;18365:1;18347:20;:::i;:::-;18342:25;;18386:1;18383;18380:8;18377:34;;;18391:18;;:::i;:::-;18377:34;18436:1;18433;18429:9;18421:17;;18253:191;;;;:::o;18450:224::-;18590:34;18586:1;18578:6;18574:14;18567:58;18659:7;18654:2;18646:6;18642:15;18635:32;18450:224;:::o;18680:366::-;18822:3;18843:67;18907:2;18902:3;18843:67;:::i;:::-;18836:74;;18919:93;19008:3;18919:93;:::i;:::-;19037:2;19032:3;19028:12;19021:19;;18680:366;;;:::o;19052:419::-;19218:4;19256:2;19245:9;19241:18;19233:26;;19305:9;19299:4;19295:20;19291:1;19280:9;19276:17;19269:47;19333:131;19459:4;19333:131;:::i;:::-;19325:139;;19052:419;;;:::o;19477:222::-;19617:34;19613:1;19605:6;19601:14;19594:58;19686:5;19681:2;19673:6;19669:15;19662:30;19477:222;:::o;19705:366::-;19847:3;19868:67;19932:2;19927:3;19868:67;:::i;:::-;19861:74;;19944:93;20033:3;19944:93;:::i;:::-;20062:2;20057:3;20053:12;20046:19;;19705:366;;;:::o;20077:419::-;20243:4;20281:2;20270:9;20266:18;20258:26;;20330:9;20324:4;20320:20;20316:1;20305:9;20301:17;20294:47;20358:131;20484:4;20358:131;:::i;:::-;20350:139;;20077:419;;;:::o;20502:225::-;20642:34;20638:1;20630:6;20626:14;20619:58;20711:8;20706:2;20698:6;20694:15;20687:33;20502:225;:::o;20733:366::-;20875:3;20896:67;20960:2;20955:3;20896:67;:::i;:::-;20889:74;;20972:93;21061:3;20972:93;:::i;:::-;21090:2;21085:3;21081:12;21074:19;;20733:366;;;:::o;21105:419::-;21271:4;21309:2;21298:9;21294:18;21286:26;;21358:9;21352:4;21348:20;21344:1;21333:9;21329:17;21322:47;21386:131;21512:4;21386:131;:::i;:::-;21378:139;;21105:419;;;:::o

Swarm Source

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