Token Fubuki Token

 

Overview [ERC-20]

Max Total Supply:
100,000,069 FUBUKI

Holders:
229

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FubukiToken

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-29
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.2;

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

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

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

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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

/**
 * @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, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) _blacklisted;

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

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

        return true;
    }

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

    function blacklistMultipleAccounts(address[] calldata accounts, bool blacklisted) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _blacklisted[accounts[i]] = blacklisted;
        }
    }
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
abstract contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, deducting from the caller's
     * allowance.
     *
     * See {ERC20-_burn} and {ERC20-allowance}.
     *
     * Requirements:
     *
     * - the caller must have allowance for ``accounts``'s tokens of at least
     * `amount`.
     */
    function burnFrom(address account, uint256 amount) public virtual {
        uint256 currentAllowance = allowance(account, _msgSender());
        require(currentAllowance >= amount, "ERC20: burn amount exceeds allowance");
        unchecked {
            _approve(account, _msgSender(), currentAllowance - amount);
        }
        _burn(account, amount);
    }
}

contract FubukiToken is ERC20, ERC20Burnable {
    constructor() ERC20("Fubuki Token", "FUBUKI") {
        _mint(msg.sender, 100000069 * 10 ** decimals());
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"blacklisted","type":"bool"}],"name":"blacklistMultipleAccounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600c81526020017f467562756b6920546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600681526020017f465542554b4900000000000000000000000000000000000000000000000000008152506200009e620000926200011860201b60201c565b6200012060201b60201c565b8160059080519060200190620000b692919062000371565b508060069080519060200190620000cf92919062000371565b5050506200011233620000e7620001e460201b60201c565b600a620000f5919062000561565b6305f5e1456200010691906200069e565b620001ed60201b60201c565b620007e0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006009905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000260576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002579062000459565b60405180910390fd5b62000274600083836200036760201b60201c565b8060046000828254620002889190620004a9565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002e09190620004a9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200034791906200047b565b60405180910390a362000363600083836200036c60201b60201c565b5050565b505050565b505050565b8280546200037f9062000716565b90600052602060002090601f016020900481019282620003a35760008555620003ef565b82601f10620003be57805160ff1916838001178555620003ef565b82800160010185558215620003ef579182015b82811115620003ee578251825591602001919060010190620003d1565b5b509050620003fe919062000402565b5090565b5b808211156200041d57600081600090555060010162000403565b5090565b600062000430601f8362000498565b91506200043d82620007b7565b602082019050919050565b6200045381620006ff565b82525050565b60006020820190508181036000830152620004748162000421565b9050919050565b600060208201905062000492600083018462000448565b92915050565b600082825260208201905092915050565b6000620004b682620006ff565b9150620004c383620006ff565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004fb57620004fa6200074c565b5b828201905092915050565b6000808291508390505b6001851115620005585780860481111562000530576200052f6200074c565b5b6001851615620005405780820291505b80810290506200055085620007aa565b945062000510565b94509492505050565b60006200056e82620006ff565b91506200057b8362000709565b9250620005aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005b2565b905092915050565b600082620005c4576001905062000697565b81620005d4576000905062000697565b8160018114620005ed5760028114620005f8576200062e565b600191505062000697565b60ff8411156200060d576200060c6200074c565b5b8360020a9150848211156200062757620006266200074c565b5b5062000697565b5060208310610133831016604e8410600b8410161715620006685782820a9050838111156200066257620006616200074c565b5b62000697565b62000677848484600162000506565b925090508184048111156200069157620006906200074c565b5b81810290505b9392505050565b6000620006ab82620006ff565b9150620006b883620006ff565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006f457620006f36200074c565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b600060028204905060018216806200072f57607f821691505b602082108114156200074657620007456200077b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61202080620007f06000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063a457c2d711610071578063a457c2d7146102a8578063a7b97fa9146102d8578063a9059cbb146102f4578063dd62ed3e14610324578063f2fde38b146103545761010b565b8063715018a61461024657806379cc6790146102505780638da5cb5b1461026c57806395d89b411461028a5761010b565b8063313ce567116100de578063313ce567146101ac57806339509351146101ca57806342966c68146101fa57806370a08231146102165761010b565b806306fdde0314610110578063095ea7b31461012e57806318160ddd1461015e57806323b872dd1461017c575b600080fd5b610118610370565b60405161012591906117b8565b60405180910390f35b61014860048036038101906101439190611489565b610402565b604051610155919061179d565b60405180910390f35b610166610420565b604051610173919061197a565b60405180910390f35b6101966004803603810190610191919061143a565b61042a565b6040516101a3919061179d565b60405180910390f35b6101b4610522565b6040516101c19190611995565b60405180910390f35b6101e460048036038101906101df9190611489565b61052b565b6040516101f1919061179d565b60405180910390f35b610214600480360381019061020f919061151d565b6105d7565b005b610230600480360381019061022b91906113d5565b6105eb565b60405161023d919061197a565b60405180910390f35b61024e610634565b005b61026a60048036038101906102659190611489565b6106bc565b005b610274610737565b6040516102819190611782565b60405180910390f35b610292610760565b60405161029f91906117b8565b60405180910390f35b6102c260048036038101906102bd9190611489565b6107f2565b6040516102cf919061179d565b60405180910390f35b6102f260048036038101906102ed91906114c5565b6108dd565b005b61030e60048036038101906103099190611489565b610a24565b60405161031b919061179d565b60405180910390f35b61033e600480360381019061033991906113fe565b610a42565b60405161034b919061197a565b60405180910390f35b61036e600480360381019061036991906113d5565b610ac9565b005b60606005805461037f90611ade565b80601f01602080910402602001604051908101604052809291908181526020018280546103ab90611ade565b80156103f85780601f106103cd576101008083540402835291602001916103f8565b820191906000526020600020905b8154815290600101906020018083116103db57829003601f168201915b5050505050905090565b600061041661040f610bc1565b8484610bc9565b6001905092915050565b6000600454905090565b6000610437848484610d94565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610482610bc1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104f99061187a565b60405180910390fd5b6105168561050e610bc1565b858403610bc9565b60019150509392505050565b60006009905090565b60006105cd610538610bc1565b848460026000610546610bc1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105c891906119cc565b610bc9565b6001905092915050565b6105e86105e2610bc1565b826110a5565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61063c610bc1565b73ffffffffffffffffffffffffffffffffffffffff1661065a610737565b73ffffffffffffffffffffffffffffffffffffffff16146106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a79061189a565b60405180910390fd5b6106ba600061127e565b565b60006106cf836106ca610bc1565b610a42565b905081811015610714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070b906118ba565b60405180910390fd5b61072883610720610bc1565b848403610bc9565b61073283836110a5565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606006805461076f90611ade565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611ade565b80156107e85780601f106107bd576101008083540402835291602001916107e8565b820191906000526020600020905b8154815290600101906020018083116107cb57829003601f168201915b5050505050905090565b60008060026000610801610bc1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156108be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b59061195a565b60405180910390fd5b6108d26108c9610bc1565b85858403610bc9565b600191505092915050565b6108e5610bc1565b73ffffffffffffffffffffffffffffffffffffffff16610903610737565b73ffffffffffffffffffffffffffffffffffffffff1614610959576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109509061189a565b60405180910390fd5b60005b83839050811015610a1e5781600360008686858181106109a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906109ba91906113d5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a1690611b10565b91505061095c565b50505050565b6000610a38610a31610bc1565b8484610d94565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ad1610bc1565b73ffffffffffffffffffffffffffffffffffffffff16610aef610737565b73ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c9061189a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bac9061181a565b60405180910390fd5b610bbe8161127e565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c309061193a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ca9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca09061183a565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d87919061197a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfb9061191a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b906117da565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef8906118fa565b60405180910390fd5b610f0c838383611342565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610f93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8a9061185a565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461102891906119cc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161108c919061197a565b60405180910390a361109f848484611347565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c906118da565b60405180910390fd5b61112182600083611342565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f906117fa565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008282546112009190611a22565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611265919061197a565b60405180910390a361127983600084611347565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b505050565b505050565b60008135905061135b81611fa5565b92915050565b60008083601f84011261137357600080fd5b8235905067ffffffffffffffff81111561138c57600080fd5b6020830191508360208202830111156113a457600080fd5b9250929050565b6000813590506113ba81611fbc565b92915050565b6000813590506113cf81611fd3565b92915050565b6000602082840312156113e757600080fd5b60006113f58482850161134c565b91505092915050565b6000806040838503121561141157600080fd5b600061141f8582860161134c565b92505060206114308582860161134c565b9150509250929050565b60008060006060848603121561144f57600080fd5b600061145d8682870161134c565b935050602061146e8682870161134c565b925050604061147f868287016113c0565b9150509250925092565b6000806040838503121561149c57600080fd5b60006114aa8582860161134c565b92505060206114bb858286016113c0565b9150509250929050565b6000806000604084860312156114da57600080fd5b600084013567ffffffffffffffff8111156114f457600080fd5b61150086828701611361565b93509350506020611513868287016113ab565b9150509250925092565b60006020828403121561152f57600080fd5b600061153d848285016113c0565b91505092915050565b61154f81611a56565b82525050565b61155e81611a68565b82525050565b600061156f826119b0565b61157981856119bb565b9350611589818560208601611aab565b61159281611bb7565b840191505092915050565b60006115aa6023836119bb565b91506115b582611bc8565b604082019050919050565b60006115cd6022836119bb565b91506115d882611c17565b604082019050919050565b60006115f06026836119bb565b91506115fb82611c66565b604082019050919050565b60006116136022836119bb565b915061161e82611cb5565b604082019050919050565b60006116366026836119bb565b915061164182611d04565b604082019050919050565b60006116596028836119bb565b915061166482611d53565b604082019050919050565b600061167c6020836119bb565b915061168782611da2565b602082019050919050565b600061169f6024836119bb565b91506116aa82611dcb565b604082019050919050565b60006116c26021836119bb565b91506116cd82611e1a565b604082019050919050565b60006116e56028836119bb565b91506116f082611e69565b604082019050919050565b60006117086025836119bb565b915061171382611eb8565b604082019050919050565b600061172b6024836119bb565b915061173682611f07565b604082019050919050565b600061174e6025836119bb565b915061175982611f56565b604082019050919050565b61176d81611a94565b82525050565b61177c81611a9e565b82525050565b60006020820190506117976000830184611546565b92915050565b60006020820190506117b26000830184611555565b92915050565b600060208201905081810360008301526117d28184611564565b905092915050565b600060208201905081810360008301526117f38161159d565b9050919050565b60006020820190508181036000830152611813816115c0565b9050919050565b60006020820190508181036000830152611833816115e3565b9050919050565b6000602082019050818103600083015261185381611606565b9050919050565b6000602082019050818103600083015261187381611629565b9050919050565b600060208201905081810360008301526118938161164c565b9050919050565b600060208201905081810360008301526118b38161166f565b9050919050565b600060208201905081810360008301526118d381611692565b9050919050565b600060208201905081810360008301526118f3816116b5565b9050919050565b60006020820190508181036000830152611913816116d8565b9050919050565b60006020820190508181036000830152611933816116fb565b9050919050565b600060208201905081810360008301526119538161171e565b9050919050565b6000602082019050818103600083015261197381611741565b9050919050565b600060208201905061198f6000830184611764565b92915050565b60006020820190506119aa6000830184611773565b92915050565b600081519050919050565b600082825260208201905092915050565b60006119d782611a94565b91506119e283611a94565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611a1757611a16611b59565b5b828201905092915050565b6000611a2d82611a94565b9150611a3883611a94565b925082821015611a4b57611a4a611b59565b5b828203905092915050565b6000611a6182611a74565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611ac9578082015181840152602081019050611aae565b83811115611ad8576000848401525b50505050565b60006002820490506001821680611af657607f821691505b60208210811415611b0a57611b09611b88565b5b50919050565b6000611b1b82611a94565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b4e57611b4d611b59565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20626c61636b6c697374656460008201527f2061646472657373000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b611fae81611a56565b8114611fb957600080fd5b50565b611fc581611a68565b8114611fd057600080fd5b50565b611fdc81611a94565b8114611fe757600080fd5b5056fea264697066735822122035677349903654904a7aa1e330ee9c71edfe5daf840325b0bb2240dbfb97ddbd64736f6c63430008020033

Deployed ByteCode Sourcemap

19971:167:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8525:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10691:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9644:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11342:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9487:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12243:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19186:91;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9815:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5678:103;;;:::i;:::-;;19596:368;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5027:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8744:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12961:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18569:231;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10155:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10393:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5936:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8525:100;8579:13;8612:5;8605:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8525:100;:::o;10691:169::-;10774:4;10791:39;10800:12;:10;:12::i;:::-;10814:7;10823:6;10791:8;:39::i;:::-;10848:4;10841:11;;10691:169;;;;:::o;9644:108::-;9705:7;9732:12;;9725:19;;9644:108;:::o;11342:492::-;11482:4;11499:36;11509:6;11517:9;11528:6;11499:9;:36::i;:::-;11548:24;11575:11;:19;11587:6;11575:19;;;;;;;;;;;;;;;:33;11595:12;:10;:12::i;:::-;11575:33;;;;;;;;;;;;;;;;11548:60;;11647:6;11627:16;:26;;11619:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11734:57;11743:6;11751:12;:10;:12::i;:::-;11784:6;11765:16;:25;11734:8;:57::i;:::-;11822:4;11815:11;;;11342:492;;;;;:::o;9487:92::-;9545:5;9570:1;9563:8;;9487:92;:::o;12243:215::-;12331:4;12348:80;12357:12;:10;:12::i;:::-;12371:7;12417:10;12380:11;:25;12392:12;:10;:12::i;:::-;12380:25;;;;;;;;;;;;;;;:34;12406:7;12380:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12348:8;:80::i;:::-;12446:4;12439:11;;12243:215;;;;:::o;19186:91::-;19242:27;19248:12;:10;:12::i;:::-;19262:6;19242:5;:27::i;:::-;19186:91;:::o;9815:127::-;9889:7;9916:9;:18;9926:7;9916:18;;;;;;;;;;;;;;;;9909:25;;9815:127;;;:::o;5678:103::-;5258:12;:10;:12::i;:::-;5247:23;;:7;:5;:7::i;:::-;:23;;;5239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5743:30:::1;5770:1;5743:18;:30::i;:::-;5678:103::o:0;19596:368::-;19673:24;19700:32;19710:7;19719:12;:10;:12::i;:::-;19700:9;:32::i;:::-;19673:59;;19771:6;19751:16;:26;;19743:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;19854:58;19863:7;19872:12;:10;:12::i;:::-;19905:6;19886:16;:25;19854:8;:58::i;:::-;19934:22;19940:7;19949:6;19934:5;:22::i;:::-;19596:368;;;:::o;5027:87::-;5073:7;5100:6;;;;;;;;;;;5093:13;;5027:87;:::o;8744:104::-;8800:13;8833:7;8826:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8744:104;:::o;12961:413::-;13054:4;13071:24;13098:11;:25;13110:12;:10;:12::i;:::-;13098:25;;;;;;;;;;;;;;;:34;13124:7;13098:34;;;;;;;;;;;;;;;;13071:61;;13171:15;13151:16;:35;;13143:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13264:67;13273:12;:10;:12::i;:::-;13287:7;13315:15;13296:16;:34;13264:8;:67::i;:::-;13362:4;13355:11;;;12961:413;;;;:::o;18569:231::-;5258:12;:10;:12::i;:::-;5247:23;;:7;:5;:7::i;:::-;:23;;;5239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18686:9:::1;18681:112;18705:8;;:15;;18701:1;:19;18681:112;;;18770:11;18742:12;:25;18755:8;;18764:1;18755:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18742:25;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;18722:3;;;;;:::i;:::-;;;;18681:112;;;;18569:231:::0;;;:::o;10155:175::-;10241:4;10258:42;10268:12;:10;:12::i;:::-;10282:9;10293:6;10258:9;:42::i;:::-;10318:4;10311:11;;10155:175;;;;:::o;10393:151::-;10482:7;10509:11;:18;10521:5;10509:18;;;;;;;;;;;;;;;:27;10528:7;10509:27;;;;;;;;;;;;;;;;10502:34;;10393:151;;;;:::o;5936:201::-;5258:12;:10;:12::i;:::-;5247:23;;:7;:5;:7::i;:::-;:23;;;5239:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6045:1:::1;6025:22;;:8;:22;;;;6017:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6101:28;6120:8;6101:18;:28::i;:::-;5936:201:::0;:::o;600:98::-;653:7;680:10;673:17;;600:98;:::o;16728:380::-;16881:1;16864:19;;:5;:19;;;;16856:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16962:1;16943:21;;:7;:21;;;;16935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17046:6;17016:11;:18;17028:5;17016:18;;;;;;;;;;;;;;;:27;17035:7;17016:27;;;;;;;;;;;;;;;:36;;;;17084:7;17068:32;;17077:5;17068:32;;;17093:6;17068:32;;;;;;:::i;:::-;;;;;;;;16728:380;;;:::o;13864:816::-;14022:1;14004:20;;:6;:20;;;;13996:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14106:1;14085:23;;:9;:23;;;;14077:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14168:12;:20;14181:6;14168:20;;;;;;;;;;;;;;;;;;;;;;;;;14167:21;14159:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14244:47;14265:6;14273:9;14284:6;14244:20;:47::i;:::-;14304:21;14328:9;:17;14338:6;14328:17;;;;;;;;;;;;;;;;14304:41;;14381:6;14364:13;:23;;14356:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14502:6;14486:13;:22;14466:9;:17;14476:6;14466:17;;;;;;;;;;;;;;;:42;;;;14554:6;14530:9;:20;14540:9;14530:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14595:9;14578:35;;14587:6;14578:35;;;14606:6;14578:35;;;;;;:::i;:::-;;;;;;;;14626:46;14646:6;14654:9;14665:6;14626:19;:46::i;:::-;13864:816;;;;:::o;15699:591::-;15802:1;15783:21;;:7;:21;;;;15775:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15855:49;15876:7;15893:1;15897:6;15855:20;:49::i;:::-;15917:22;15942:9;:18;15952:7;15942:18;;;;;;;;;;;;;;;;15917:43;;15997:6;15979:14;:24;;15971:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16116:6;16099:14;:23;16078:9;:18;16088:7;16078:18;;;;;;;;;;;;;;;:44;;;;16160:6;16144:12;;:22;;;;;;;:::i;:::-;;;;;;;;16210:1;16184:37;;16193:7;16184:37;;;16214:6;16184:37;;;;;;:::i;:::-;;;;;;;;16234:48;16254:7;16271:1;16275:6;16234:19;:48::i;:::-;15699:591;;;:::o;6297:191::-;6371:16;6390:6;;;;;;;;;;;6371:25;;6416:8;6407:6;;:17;;;;;;;;;;;;;;;;;;6471:8;6440:40;;6461:8;6440:40;;;;;;;;;;;;6297:191;;:::o;17708:125::-;;;;:::o;18437:124::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;169:367::-;;;302:3;295:4;287:6;283:17;279:27;269:2;;320:1;317;310:12;269:2;356:6;343:20;333:30;;386:18;378:6;375:30;372:2;;;418:1;415;408:12;372:2;455:4;447:6;443:17;431:29;;509:3;501:4;493:6;489:17;479:8;475:32;472:41;469:2;;;526:1;523;516:12;469:2;259:277;;;;;:::o;542:133::-;;623:6;610:20;601:29;;639:30;663:5;639:30;:::i;:::-;591:84;;;;:::o;681:139::-;;765:6;752:20;743:29;;781:33;808:5;781:33;:::i;:::-;733:87;;;;:::o;826:262::-;;934:2;922:9;913:7;909:23;905:32;902:2;;;950:1;947;940:12;902:2;993:1;1018:53;1063:7;1054:6;1043:9;1039:22;1018:53;:::i;:::-;1008:63;;964:117;892:196;;;;:::o;1094:407::-;;;1219:2;1207:9;1198:7;1194:23;1190:32;1187:2;;;1235:1;1232;1225:12;1187:2;1278:1;1303:53;1348:7;1339:6;1328:9;1324:22;1303:53;:::i;:::-;1293:63;;1249:117;1405:2;1431:53;1476:7;1467:6;1456:9;1452:22;1431:53;:::i;:::-;1421:63;;1376:118;1177:324;;;;;:::o;1507:552::-;;;;1649:2;1637:9;1628:7;1624:23;1620:32;1617:2;;;1665:1;1662;1655:12;1617:2;1708:1;1733:53;1778:7;1769:6;1758:9;1754:22;1733:53;:::i;:::-;1723:63;;1679:117;1835:2;1861:53;1906:7;1897:6;1886:9;1882:22;1861:53;:::i;:::-;1851:63;;1806:118;1963:2;1989:53;2034:7;2025:6;2014:9;2010:22;1989:53;:::i;:::-;1979:63;;1934:118;1607:452;;;;;:::o;2065:407::-;;;2190:2;2178:9;2169:7;2165:23;2161:32;2158:2;;;2206:1;2203;2196:12;2158:2;2249:1;2274:53;2319:7;2310:6;2299:9;2295:22;2274:53;:::i;:::-;2264:63;;2220:117;2376:2;2402:53;2447:7;2438:6;2427:9;2423:22;2402:53;:::i;:::-;2392:63;;2347:118;2148:324;;;;;:::o;2478:564::-;;;;2635:2;2623:9;2614:7;2610:23;2606:32;2603:2;;;2651:1;2648;2641:12;2603:2;2722:1;2711:9;2707:17;2694:31;2752:18;2744:6;2741:30;2738:2;;;2784:1;2781;2774:12;2738:2;2820:80;2892:7;2883:6;2872:9;2868:22;2820:80;:::i;:::-;2802:98;;;;2665:245;2949:2;2975:50;3017:7;3008:6;2997:9;2993:22;2975:50;:::i;:::-;2965:60;;2920:115;2593:449;;;;;:::o;3048:262::-;;3156:2;3144:9;3135:7;3131:23;3127:32;3124:2;;;3172:1;3169;3162:12;3124:2;3215:1;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;:::i;:::-;3230:63;;3186:117;3114:196;;;;:::o;3316:118::-;3403:24;3421:5;3403:24;:::i;:::-;3398:3;3391:37;3381:53;;:::o;3440:109::-;3521:21;3536:5;3521:21;:::i;:::-;3516:3;3509:34;3499:50;;:::o;3555:364::-;;3671:39;3704:5;3671:39;:::i;:::-;3726:71;3790:6;3785:3;3726:71;:::i;:::-;3719:78;;3806:52;3851:6;3846:3;3839:4;3832:5;3828:16;3806:52;:::i;:::-;3883:29;3905:6;3883:29;:::i;:::-;3878:3;3874:39;3867:46;;3647:272;;;;;:::o;3925:366::-;;4088:67;4152:2;4147:3;4088:67;:::i;:::-;4081:74;;4164:93;4253:3;4164:93;:::i;:::-;4282:2;4277:3;4273:12;4266:19;;4071:220;;;:::o;4297:366::-;;4460:67;4524:2;4519:3;4460:67;:::i;:::-;4453:74;;4536:93;4625:3;4536:93;:::i;:::-;4654:2;4649:3;4645:12;4638:19;;4443:220;;;:::o;4669:366::-;;4832:67;4896:2;4891:3;4832:67;:::i;:::-;4825:74;;4908:93;4997:3;4908:93;:::i;:::-;5026:2;5021:3;5017:12;5010:19;;4815:220;;;:::o;5041:366::-;;5204:67;5268:2;5263:3;5204:67;:::i;:::-;5197:74;;5280:93;5369:3;5280:93;:::i;:::-;5398:2;5393:3;5389:12;5382:19;;5187:220;;;:::o;5413:366::-;;5576:67;5640:2;5635:3;5576:67;:::i;:::-;5569:74;;5652:93;5741:3;5652:93;:::i;:::-;5770:2;5765:3;5761:12;5754:19;;5559:220;;;:::o;5785:366::-;;5948:67;6012:2;6007:3;5948:67;:::i;:::-;5941:74;;6024:93;6113:3;6024:93;:::i;:::-;6142:2;6137:3;6133:12;6126:19;;5931:220;;;:::o;6157:366::-;;6320:67;6384:2;6379:3;6320:67;:::i;:::-;6313:74;;6396:93;6485:3;6396:93;:::i;:::-;6514:2;6509:3;6505:12;6498:19;;6303:220;;;:::o;6529:366::-;;6692:67;6756:2;6751:3;6692:67;:::i;:::-;6685:74;;6768:93;6857:3;6768:93;:::i;:::-;6886:2;6881:3;6877:12;6870:19;;6675:220;;;:::o;6901:366::-;;7064:67;7128:2;7123:3;7064:67;:::i;:::-;7057:74;;7140:93;7229:3;7140:93;:::i;:::-;7258:2;7253:3;7249:12;7242:19;;7047:220;;;:::o;7273:366::-;;7436:67;7500:2;7495:3;7436:67;:::i;:::-;7429:74;;7512:93;7601:3;7512:93;:::i;:::-;7630:2;7625:3;7621:12;7614:19;;7419:220;;;:::o;7645:366::-;;7808:67;7872:2;7867:3;7808:67;:::i;:::-;7801:74;;7884:93;7973:3;7884:93;:::i;:::-;8002:2;7997:3;7993:12;7986:19;;7791:220;;;:::o;8017:366::-;;8180:67;8244:2;8239:3;8180:67;:::i;:::-;8173:74;;8256:93;8345:3;8256:93;:::i;:::-;8374:2;8369:3;8365:12;8358:19;;8163:220;;;:::o;8389:366::-;;8552:67;8616:2;8611:3;8552:67;:::i;:::-;8545:74;;8628:93;8717:3;8628:93;:::i;:::-;8746:2;8741:3;8737:12;8730:19;;8535:220;;;:::o;8761:118::-;8848:24;8866:5;8848:24;:::i;:::-;8843:3;8836:37;8826:53;;:::o;8885:112::-;8968:22;8984:5;8968:22;:::i;:::-;8963:3;8956:35;8946:51;;:::o;9003:222::-;;9134:2;9123:9;9119:18;9111:26;;9147:71;9215:1;9204:9;9200:17;9191:6;9147:71;:::i;:::-;9101:124;;;;:::o;9231:210::-;;9356:2;9345:9;9341:18;9333:26;;9369:65;9431:1;9420:9;9416:17;9407:6;9369:65;:::i;:::-;9323:118;;;;:::o;9447:313::-;;9598:2;9587:9;9583:18;9575:26;;9647:9;9641:4;9637:20;9633:1;9622:9;9618:17;9611:47;9675:78;9748:4;9739:6;9675:78;:::i;:::-;9667:86;;9565:195;;;;:::o;9766:419::-;;9970:2;9959:9;9955:18;9947:26;;10019:9;10013:4;10009:20;10005:1;9994:9;9990:17;9983:47;10047:131;10173:4;10047:131;:::i;:::-;10039:139;;9937:248;;;:::o;10191:419::-;;10395:2;10384:9;10380:18;10372:26;;10444:9;10438:4;10434:20;10430:1;10419:9;10415:17;10408:47;10472:131;10598:4;10472:131;:::i;:::-;10464:139;;10362:248;;;:::o;10616:419::-;;10820:2;10809:9;10805:18;10797:26;;10869:9;10863:4;10859:20;10855:1;10844:9;10840:17;10833:47;10897:131;11023:4;10897:131;:::i;:::-;10889:139;;10787:248;;;:::o;11041:419::-;;11245:2;11234:9;11230:18;11222:26;;11294:9;11288:4;11284:20;11280:1;11269:9;11265:17;11258:47;11322:131;11448:4;11322:131;:::i;:::-;11314:139;;11212:248;;;:::o;11466:419::-;;11670:2;11659:9;11655:18;11647:26;;11719:9;11713:4;11709:20;11705:1;11694:9;11690:17;11683:47;11747:131;11873:4;11747:131;:::i;:::-;11739:139;;11637:248;;;:::o;11891:419::-;;12095:2;12084:9;12080:18;12072:26;;12144:9;12138:4;12134:20;12130:1;12119:9;12115:17;12108:47;12172:131;12298:4;12172:131;:::i;:::-;12164:139;;12062:248;;;:::o;12316:419::-;;12520:2;12509:9;12505:18;12497:26;;12569:9;12563:4;12559:20;12555:1;12544:9;12540:17;12533:47;12597:131;12723:4;12597:131;:::i;:::-;12589:139;;12487:248;;;:::o;12741:419::-;;12945:2;12934:9;12930:18;12922:26;;12994:9;12988:4;12984:20;12980:1;12969:9;12965:17;12958:47;13022:131;13148:4;13022:131;:::i;:::-;13014:139;;12912:248;;;:::o;13166:419::-;;13370:2;13359:9;13355:18;13347:26;;13419:9;13413:4;13409:20;13405:1;13394:9;13390:17;13383:47;13447:131;13573:4;13447:131;:::i;:::-;13439:139;;13337:248;;;:::o;13591:419::-;;13795:2;13784:9;13780:18;13772:26;;13844:9;13838:4;13834:20;13830:1;13819:9;13815:17;13808:47;13872:131;13998:4;13872:131;:::i;:::-;13864:139;;13762:248;;;:::o;14016:419::-;;14220:2;14209:9;14205:18;14197:26;;14269:9;14263:4;14259:20;14255:1;14244:9;14240:17;14233:47;14297:131;14423:4;14297:131;:::i;:::-;14289:139;;14187:248;;;:::o;14441:419::-;;14645:2;14634:9;14630:18;14622:26;;14694:9;14688:4;14684:20;14680:1;14669:9;14665:17;14658:47;14722:131;14848:4;14722:131;:::i;:::-;14714:139;;14612:248;;;:::o;14866:419::-;;15070:2;15059:9;15055:18;15047:26;;15119:9;15113:4;15109:20;15105:1;15094:9;15090:17;15083:47;15147:131;15273:4;15147:131;:::i;:::-;15139:139;;15037:248;;;:::o;15291:222::-;;15422:2;15411:9;15407:18;15399:26;;15435:71;15503:1;15492:9;15488:17;15479:6;15435:71;:::i;:::-;15389:124;;;;:::o;15519:214::-;;15646:2;15635:9;15631:18;15623:26;;15659:67;15723:1;15712:9;15708:17;15699:6;15659:67;:::i;:::-;15613:120;;;;:::o;15739:99::-;;15825:5;15819:12;15809:22;;15798:40;;;:::o;15844:169::-;;15962:6;15957:3;15950:19;16002:4;15997:3;15993:14;15978:29;;15940:73;;;;:::o;16019:305::-;;16078:20;16096:1;16078:20;:::i;:::-;16073:25;;16112:20;16130:1;16112:20;:::i;:::-;16107:25;;16266:1;16198:66;16194:74;16191:1;16188:81;16185:2;;;16272:18;;:::i;:::-;16185:2;16316:1;16313;16309:9;16302:16;;16063:261;;;;:::o;16330:191::-;;16390:20;16408:1;16390:20;:::i;:::-;16385:25;;16424:20;16442:1;16424:20;:::i;:::-;16419:25;;16463:1;16460;16457:8;16454:2;;;16468:18;;:::i;:::-;16454:2;16513:1;16510;16506:9;16498:17;;16375:146;;;;:::o;16527:96::-;;16593:24;16611:5;16593:24;:::i;:::-;16582:35;;16572:51;;;:::o;16629:90::-;;16706:5;16699:13;16692:21;16681:32;;16671:48;;;:::o;16725:126::-;;16802:42;16795:5;16791:54;16780:65;;16770:81;;;:::o;16857:77::-;;16923:5;16912:16;;16902:32;;;:::o;16940:86::-;;17015:4;17008:5;17004:16;16993:27;;16983:43;;;:::o;17032:307::-;17100:1;17110:113;17124:6;17121:1;17118:13;17110:113;;;17209:1;17204:3;17200:11;17194:18;17190:1;17185:3;17181:11;17174:39;17146:2;17143:1;17139:10;17134:15;;17110:113;;;17241:6;17238:1;17235:13;17232:2;;;17321:1;17312:6;17307:3;17303:16;17296:27;17232:2;17081:258;;;;:::o;17345:320::-;;17426:1;17420:4;17416:12;17406:22;;17473:1;17467:4;17463:12;17494:18;17484:2;;17550:4;17542:6;17538:17;17528:27;;17484:2;17612;17604:6;17601:14;17581:18;17578:38;17575:2;;;17631:18;;:::i;:::-;17575:2;17396:269;;;;:::o;17671:233::-;;17733:24;17751:5;17733:24;:::i;:::-;17724:33;;17779:66;17772:5;17769:77;17766:2;;;17849:18;;:::i;:::-;17766:2;17896:1;17889:5;17885:13;17878:20;;17714:190;;;:::o;17910:180::-;17958:77;17955:1;17948:88;18055:4;18052:1;18045:15;18079:4;18076:1;18069:15;18096:180;18144:77;18141:1;18134:88;18241:4;18238:1;18231:15;18265:4;18262:1;18255:15;18282:102;;18374:2;18370:7;18365:2;18358:5;18354:14;18350:28;18340:38;;18330:54;;;:::o;18390:222::-;18530:34;18526:1;18518:6;18514:14;18507:58;18599:5;18594:2;18586:6;18582:15;18575:30;18496:116;:::o;18618:221::-;18758:34;18754:1;18746:6;18742:14;18735:58;18827:4;18822:2;18814:6;18810:15;18803:29;18724:115;:::o;18845:225::-;18985:34;18981:1;18973:6;18969:14;18962:58;19054:8;19049:2;19041:6;19037:15;19030:33;18951:119;:::o;19076:221::-;19216:34;19212:1;19204:6;19200:14;19193:58;19285:4;19280:2;19272:6;19268:15;19261:29;19182:115;:::o;19303:225::-;19443:34;19439:1;19431:6;19427:14;19420:58;19512:8;19507:2;19499:6;19495:15;19488:33;19409:119;:::o;19534:227::-;19674:34;19670:1;19662:6;19658:14;19651:58;19743:10;19738:2;19730:6;19726:15;19719:35;19640:121;:::o;19767:182::-;19907:34;19903:1;19895:6;19891:14;19884:58;19873:76;:::o;19955:223::-;20095:34;20091:1;20083:6;20079:14;20072:58;20164:6;20159:2;20151:6;20147:15;20140:31;20061:117;:::o;20184:220::-;20324:34;20320:1;20312:6;20308:14;20301:58;20393:3;20388:2;20380:6;20376:15;20369:28;20290:114;:::o;20410:227::-;20550:34;20546:1;20538:6;20534:14;20527:58;20619:10;20614:2;20606:6;20602:15;20595:35;20516:121;:::o;20643:224::-;20783:34;20779:1;20771:6;20767:14;20760:58;20852:7;20847:2;20839:6;20835:15;20828:32;20749:118;:::o;20873:223::-;21013:34;21009:1;21001:6;20997:14;20990:58;21082:6;21077:2;21069:6;21065:15;21058:31;20979:117;:::o;21102:224::-;21242:34;21238:1;21230:6;21226:14;21219:58;21311:7;21306:2;21298:6;21294:15;21287:32;21208:118;:::o;21332:122::-;21405:24;21423:5;21405:24;:::i;:::-;21398:5;21395:35;21385:2;;21444:1;21441;21434:12;21385:2;21375:79;:::o;21460:116::-;21530:21;21545:5;21530:21;:::i;:::-;21523:5;21520:32;21510:2;;21566:1;21563;21556:12;21510:2;21500:76;:::o;21582:122::-;21655:24;21673:5;21655:24;:::i;:::-;21648:5;21645:35;21635:2;;21694:1;21691;21684:12;21635:2;21625:79;:::o

Swarm Source

ipfs://35677349903654904a7aa1e330ee9c71edfe5daf840325b0bb2240dbfb97ddbd

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.