Token

SonicSoda ($SODA)

Overview

Max Total Supply

1,000,000,000,000 $SODA

Holders

12

Market

Price

-

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
119,639,572.105032571136963798 $SODA

Value
$0.00
0x47fc9d7751806339d820e1c26cf0badb04363196
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
SonicSoda

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-18
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.10;

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

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_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 {
        _setOwner(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"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

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

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

abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor() {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

contract SonicSoda is ERC20, Ownable, Pausable {
    constructor() ERC20("SonicSoda", "$SODA") {
        _mint(msg.sender, 1000000000000000000000000000000);
    }

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

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal override whenNotPaused {
        super._beforeTokenTransfer(from, to, 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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280600981526020017f536f6e6963536f646100000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f24534f4441000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620003ea565b508060049080519060200190620000af929190620003ea565b505050620000d2620000c66200011260201b60201c565b6200011a60201b60201c565b6000600560146101000a81548160ff0219169083151502179055506200010c336c0c9f2c9cd04674edea40000000620001e060201b60201c565b620006b8565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000253576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200024a90620004fb565b60405180910390fd5b62000267600083836200035960201b60201c565b80600260008282546200027b919062000556565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620002d2919062000556565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003399190620005c4565b60405180910390a36200035560008383620003c960201b60201c565b5050565b62000369620003ce60201b60201c565b15620003ac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a39062000631565b60405180910390fd5b620003c4838383620003e560201b62000b201760201c565b505050565b505050565b6000600560149054906101000a900460ff16905090565b505050565b828054620003f89062000682565b90600052602060002090601f0160209004810192826200041c576000855562000468565b82601f106200043757805160ff191683800117855562000468565b8280016001018555821562000468579182015b82811115620004675782518255916020019190600101906200044a565b5b5090506200047791906200047b565b5090565b5b80821115620004965760008160009055506001016200047c565b5090565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620004e3601f836200049a565b9150620004f082620004ab565b602082019050919050565b600060208201905081810360008301526200051681620004d4565b9050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000563826200051d565b915062000570836200051d565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005a857620005a762000527565b5b828201905092915050565b620005be816200051d565b82525050565b6000602082019050620005db6000830184620005b3565b92915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000620006196010836200049a565b91506200062682620005e1565b602082019050919050565b600060208201905081810360008301526200064c816200060a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200069b57607f821691505b60208210811415620006b257620006b162000653565b5b50919050565b611f4280620006c86000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a257806395d89b411161007157806395d89b41146102ab578063a457c2d7146102c9578063a9059cbb146102f9578063dd62ed3e14610329578063f2fde38b1461035957610116565b806370a0823114610249578063715018a6146102795780638456cb59146102835780638da5cb5b1461028d57610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d55780633f4ba83a1461020557806342966c681461020f5780635c975abb1461022b57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b610123610375565b6040516101309190611451565b60405180910390f35b610153600480360381019061014e919061150c565b610407565b6040516101609190611567565b60405180910390f35b610171610425565b60405161017e9190611591565b60405180910390f35b6101a1600480360381019061019c91906115ac565b61042f565b6040516101ae9190611567565b60405180910390f35b6101bf610527565b6040516101cc919061161b565b60405180910390f35b6101ef60048036038101906101ea919061150c565b610530565b6040516101fc9190611567565b60405180910390f35b61020d6105dc565b005b61022960048036038101906102249190611636565b610662565b005b61023361066f565b6040516102409190611567565b60405180910390f35b610263600480360381019061025e9190611663565b610686565b6040516102709190611591565b60405180910390f35b6102816106ce565b005b61028b610756565b005b6102956107dc565b6040516102a2919061169f565b60405180910390f35b6102b3610806565b6040516102c09190611451565b60405180910390f35b6102e360048036038101906102de919061150c565b610898565b6040516102f09190611567565b60405180910390f35b610313600480360381019061030e919061150c565b610983565b6040516103209190611567565b60405180910390f35b610343600480360381019061033e91906116ba565b6109a1565b6040516103509190611591565b60405180910390f35b610373600480360381019061036e9190611663565b610a28565b005b60606003805461038490611729565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090611729565b80156103fd5780601f106103d2576101008083540402835291602001916103fd565b820191906000526020600020905b8154815290600101906020018083116103e057829003601f168201915b5050505050905090565b600061041b610414610b25565b8484610b2d565b6001905092915050565b6000600254905090565b600061043c848484610cf8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610487610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe906117cd565b60405180910390fd5b61051b85610513610b25565b858403610b2d565b60019150509392505050565b60006012905090565b60006105d261053d610b25565b84846001600061054b610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105cd919061181c565b610b2d565b6001905092915050565b6105e4610b25565b73ffffffffffffffffffffffffffffffffffffffff166106026107dc565b73ffffffffffffffffffffffffffffffffffffffff1614610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f906118be565b60405180910390fd5b610660610f79565b565b61066c338261101b565b50565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106d6610b25565b73ffffffffffffffffffffffffffffffffffffffff166106f46107dc565b73ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610741906118be565b60405180910390fd5b61075460006111f2565b565b61075e610b25565b73ffffffffffffffffffffffffffffffffffffffff1661077c6107dc565b73ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c9906118be565b60405180910390fd5b6107da6112b8565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461081590611729565b80601f016020809104026020016040519081016040528092919081815260200182805461084190611729565b801561088e5780601f106108635761010080835404028352916020019161088e565b820191906000526020600020905b81548152906001019060200180831161087157829003601f168201915b5050505050905090565b600080600160006108a7610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b90611950565b60405180910390fd5b61097861096f610b25565b85858403610b2d565b600191505092915050565b6000610997610990610b25565b8484610cf8565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a30610b25565b73ffffffffffffffffffffffffffffffffffffffff16610a4e6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b906118be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906119e2565b60405180910390fd5b610b1d816111f2565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9490611a74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490611b06565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ceb9190611591565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90611b98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90611c2a565b60405180910390fd5b610de383838361135b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611cbc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610efc919061181c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f609190611591565b60405180910390a3610f738484846113b3565b50505050565b610f8161066f565b610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790611d28565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611004610b25565b604051611011919061169f565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290611dba565b60405180910390fd5b6110978260008361135b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490611e4c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546111749190611e6c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d99190611591565b60405180910390a36111ed836000846113b3565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112c061066f565b15611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790611eec565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611344610b25565b604051611351919061169f565b60405180910390a1565b61136361066f565b156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90611eec565b60405180910390fd5b6113ae838383610b20565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113f25780820151818401526020810190506113d7565b83811115611401576000848401525b50505050565b6000601f19601f8301169050919050565b6000611423826113b8565b61142d81856113c3565b935061143d8185602086016113d4565b61144681611407565b840191505092915050565b6000602082019050818103600083015261146b8184611418565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114a382611478565b9050919050565b6114b381611498565b81146114be57600080fd5b50565b6000813590506114d0816114aa565b92915050565b6000819050919050565b6114e9816114d6565b81146114f457600080fd5b50565b600081359050611506816114e0565b92915050565b6000806040838503121561152357611522611473565b5b6000611531858286016114c1565b9250506020611542858286016114f7565b9150509250929050565b60008115159050919050565b6115618161154c565b82525050565b600060208201905061157c6000830184611558565b92915050565b61158b816114d6565b82525050565b60006020820190506115a66000830184611582565b92915050565b6000806000606084860312156115c5576115c4611473565b5b60006115d3868287016114c1565b93505060206115e4868287016114c1565b92505060406115f5868287016114f7565b9150509250925092565b600060ff82169050919050565b611615816115ff565b82525050565b6000602082019050611630600083018461160c565b92915050565b60006020828403121561164c5761164b611473565b5b600061165a848285016114f7565b91505092915050565b60006020828403121561167957611678611473565b5b6000611687848285016114c1565b91505092915050565b61169981611498565b82525050565b60006020820190506116b46000830184611690565b92915050565b600080604083850312156116d1576116d0611473565b5b60006116df858286016114c1565b92505060206116f0858286016114c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061174157607f821691505b60208210811415611755576117546116fa565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006117b76028836113c3565b91506117c28261175b565b604082019050919050565b600060208201905081810360008301526117e6816117aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611827826114d6565b9150611832836114d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611867576118666117ed565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118a86020836113c3565b91506118b382611872565b602082019050919050565b600060208201905081810360008301526118d78161189b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061193a6025836113c3565b9150611945826118de565b604082019050919050565b600060208201905081810360008301526119698161192d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119cc6026836113c3565b91506119d782611970565b604082019050919050565b600060208201905081810360008301526119fb816119bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a5e6024836113c3565b9150611a6982611a02565b604082019050919050565b60006020820190508181036000830152611a8d81611a51565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611af06022836113c3565b9150611afb82611a94565b604082019050919050565b60006020820190508181036000830152611b1f81611ae3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b826025836113c3565b9150611b8d82611b26565b604082019050919050565b60006020820190508181036000830152611bb181611b75565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611c146023836113c3565b9150611c1f82611bb8565b604082019050919050565b60006020820190508181036000830152611c4381611c07565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611ca66026836113c3565b9150611cb182611c4a565b604082019050919050565b60006020820190508181036000830152611cd581611c99565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000611d126014836113c3565b9150611d1d82611cdc565b602082019050919050565b60006020820190508181036000830152611d4181611d05565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611da46021836113c3565b9150611daf82611d48565b604082019050919050565b60006020820190508181036000830152611dd381611d97565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e366022836113c3565b9150611e4182611dda565b604082019050919050565b60006020820190508181036000830152611e6581611e29565b9050919050565b6000611e77826114d6565b9150611e82836114d6565b925082821015611e9557611e946117ed565b5b828203905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000611ed66010836113c3565b9150611ee182611ea0565b602082019050919050565b60006020820190508181036000830152611f0581611ec9565b905091905056fea2646970667358221220130b24215d9fd57d51d7b0b07310daf16f958ab6e571f689c21d3a14da7fef5764736f6c634300080a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c806370a08231116100a257806395d89b411161007157806395d89b41146102ab578063a457c2d7146102c9578063a9059cbb146102f9578063dd62ed3e14610329578063f2fde38b1461035957610116565b806370a0823114610249578063715018a6146102795780638456cb59146102835780638da5cb5b1461028d57610116565b8063313ce567116100e9578063313ce567146101b757806339509351146101d55780633f4ba83a1461020557806342966c681461020f5780635c975abb1461022b57610116565b806306fdde031461011b578063095ea7b31461013957806318160ddd1461016957806323b872dd14610187575b600080fd5b610123610375565b6040516101309190611451565b60405180910390f35b610153600480360381019061014e919061150c565b610407565b6040516101609190611567565b60405180910390f35b610171610425565b60405161017e9190611591565b60405180910390f35b6101a1600480360381019061019c91906115ac565b61042f565b6040516101ae9190611567565b60405180910390f35b6101bf610527565b6040516101cc919061161b565b60405180910390f35b6101ef60048036038101906101ea919061150c565b610530565b6040516101fc9190611567565b60405180910390f35b61020d6105dc565b005b61022960048036038101906102249190611636565b610662565b005b61023361066f565b6040516102409190611567565b60405180910390f35b610263600480360381019061025e9190611663565b610686565b6040516102709190611591565b60405180910390f35b6102816106ce565b005b61028b610756565b005b6102956107dc565b6040516102a2919061169f565b60405180910390f35b6102b3610806565b6040516102c09190611451565b60405180910390f35b6102e360048036038101906102de919061150c565b610898565b6040516102f09190611567565b60405180910390f35b610313600480360381019061030e919061150c565b610983565b6040516103209190611567565b60405180910390f35b610343600480360381019061033e91906116ba565b6109a1565b6040516103509190611591565b60405180910390f35b610373600480360381019061036e9190611663565b610a28565b005b60606003805461038490611729565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090611729565b80156103fd5780601f106103d2576101008083540402835291602001916103fd565b820191906000526020600020905b8154815290600101906020018083116103e057829003601f168201915b5050505050905090565b600061041b610414610b25565b8484610b2d565b6001905092915050565b6000600254905090565b600061043c848484610cf8565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610487610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fe906117cd565b60405180910390fd5b61051b85610513610b25565b858403610b2d565b60019150509392505050565b60006012905090565b60006105d261053d610b25565b84846001600061054b610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105cd919061181c565b610b2d565b6001905092915050565b6105e4610b25565b73ffffffffffffffffffffffffffffffffffffffff166106026107dc565b73ffffffffffffffffffffffffffffffffffffffff1614610658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161064f906118be565b60405180910390fd5b610660610f79565b565b61066c338261101b565b50565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106d6610b25565b73ffffffffffffffffffffffffffffffffffffffff166106f46107dc565b73ffffffffffffffffffffffffffffffffffffffff161461074a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610741906118be565b60405180910390fd5b61075460006111f2565b565b61075e610b25565b73ffffffffffffffffffffffffffffffffffffffff1661077c6107dc565b73ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c9906118be565b60405180910390fd5b6107da6112b8565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461081590611729565b80601f016020809104026020016040519081016040528092919081815260200182805461084190611729565b801561088e5780601f106108635761010080835404028352916020019161088e565b820191906000526020600020905b81548152906001019060200180831161087157829003601f168201915b5050505050905090565b600080600160006108a7610b25565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610964576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095b90611950565b60405180910390fd5b61097861096f610b25565b85858403610b2d565b600191505092915050565b6000610997610990610b25565b8484610cf8565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610a30610b25565b73ffffffffffffffffffffffffffffffffffffffff16610a4e6107dc565b73ffffffffffffffffffffffffffffffffffffffff1614610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b906118be565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610b14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0b906119e2565b60405180910390fd5b610b1d816111f2565b50565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9490611a74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490611b06565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ceb9190611591565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f90611b98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcf90611c2a565b60405180910390fd5b610de383838361135b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6090611cbc565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610efc919061181c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f609190611591565b60405180910390a3610f738484846113b3565b50505050565b610f8161066f565b610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790611d28565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611004610b25565b604051611011919061169f565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561108b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108290611dba565b60405180910390fd5b6110978260008361135b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561111d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111490611e4c565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546111749190611e6c565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111d99190611591565b60405180910390a36111ed836000846113b3565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112c061066f565b15611300576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f790611eec565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611344610b25565b604051611351919061169f565b60405180910390a1565b61136361066f565b156113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90611eec565b60405180910390fd5b6113ae838383610b20565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156113f25780820151818401526020810190506113d7565b83811115611401576000848401525b50505050565b6000601f19601f8301169050919050565b6000611423826113b8565b61142d81856113c3565b935061143d8185602086016113d4565b61144681611407565b840191505092915050565b6000602082019050818103600083015261146b8184611418565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114a382611478565b9050919050565b6114b381611498565b81146114be57600080fd5b50565b6000813590506114d0816114aa565b92915050565b6000819050919050565b6114e9816114d6565b81146114f457600080fd5b50565b600081359050611506816114e0565b92915050565b6000806040838503121561152357611522611473565b5b6000611531858286016114c1565b9250506020611542858286016114f7565b9150509250929050565b60008115159050919050565b6115618161154c565b82525050565b600060208201905061157c6000830184611558565b92915050565b61158b816114d6565b82525050565b60006020820190506115a66000830184611582565b92915050565b6000806000606084860312156115c5576115c4611473565b5b60006115d3868287016114c1565b93505060206115e4868287016114c1565b92505060406115f5868287016114f7565b9150509250925092565b600060ff82169050919050565b611615816115ff565b82525050565b6000602082019050611630600083018461160c565b92915050565b60006020828403121561164c5761164b611473565b5b600061165a848285016114f7565b91505092915050565b60006020828403121561167957611678611473565b5b6000611687848285016114c1565b91505092915050565b61169981611498565b82525050565b60006020820190506116b46000830184611690565b92915050565b600080604083850312156116d1576116d0611473565b5b60006116df858286016114c1565b92505060206116f0858286016114c1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061174157607f821691505b60208210811415611755576117546116fa565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006117b76028836113c3565b91506117c28261175b565b604082019050919050565b600060208201905081810360008301526117e6816117aa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611827826114d6565b9150611832836114d6565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611867576118666117ed565b5b828201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006118a86020836113c3565b91506118b382611872565b602082019050919050565b600060208201905081810360008301526118d78161189b565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061193a6025836113c3565b9150611945826118de565b604082019050919050565b600060208201905081810360008301526119698161192d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006119cc6026836113c3565b91506119d782611970565b604082019050919050565b600060208201905081810360008301526119fb816119bf565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a5e6024836113c3565b9150611a6982611a02565b604082019050919050565b60006020820190508181036000830152611a8d81611a51565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611af06022836113c3565b9150611afb82611a94565b604082019050919050565b60006020820190508181036000830152611b1f81611ae3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b826025836113c3565b9150611b8d82611b26565b604082019050919050565b60006020820190508181036000830152611bb181611b75565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611c146023836113c3565b9150611c1f82611bb8565b604082019050919050565b60006020820190508181036000830152611c4381611c07565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611ca66026836113c3565b9150611cb182611c4a565b604082019050919050565b60006020820190508181036000830152611cd581611c99565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000611d126014836113c3565b9150611d1d82611cdc565b602082019050919050565b60006020820190508181036000830152611d4181611d05565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611da46021836113c3565b9150611daf82611d48565b604082019050919050565b60006020820190508181036000830152611dd381611d97565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e366022836113c3565b9150611e4182611dda565b604082019050919050565b60006020820190508181036000830152611e6581611e29565b9050919050565b6000611e77826114d6565b9150611e82836114d6565b925082821015611e9557611e946117ed565b5b828203905092915050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000611ed66010836113c3565b9150611ee182611ea0565b602082019050919050565b60006020820190508181036000830152611f0581611ec9565b905091905056fea2646970667358221220130b24215d9fd57d51d7b0b07310daf16f958ab6e571f689c21d3a14da7fef5764736f6c634300080a0033

Deployed Bytecode Sourcemap

18579:614:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6596:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8829:194;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7716:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9505:529;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7558:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10443:290;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18914:67;;;:::i;:::-;;18752:83;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17393:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7887:143;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1895:94;;;:::i;:::-;;18843:63;;;:::i;:::-;;1244:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6815:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11236:475;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8243:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8506:176;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2144:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6596:100;6650:13;6683:5;6676:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6596:100;:::o;8829:194::-;8937:4;8954:39;8963:12;:10;:12::i;:::-;8977:7;8986:6;8954:8;:39::i;:::-;9011:4;9004:11;;8829:194;;;;:::o;7716:108::-;7777:7;7804:12;;7797:19;;7716:108;:::o;9505:529::-;9645:4;9662:36;9672:6;9680:9;9691:6;9662:9;:36::i;:::-;9711:24;9738:11;:19;9750:6;9738:19;;;;;;;;;;;;;;;:33;9758:12;:10;:12::i;:::-;9738:33;;;;;;;;;;;;;;;;9711:60;;9824:6;9804:16;:26;;9782:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;9934:57;9943:6;9951:12;:10;:12::i;:::-;9984:6;9965:16;:25;9934:8;:57::i;:::-;10022:4;10015:11;;;9505:529;;;;;:::o;7558:93::-;7616:5;7641:2;7634:9;;7558:93;:::o;10443:290::-;10556:4;10573:130;10596:12;:10;:12::i;:::-;10623:7;10682:10;10645:11;:25;10657:12;:10;:12::i;:::-;10645:25;;;;;;;;;;;;;;;:34;10671:7;10645:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;10573:8;:130::i;:::-;10721:4;10714:11;;10443:290;;;;:::o;18914:67::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18963:10:::1;:8;:10::i;:::-;18914:67::o:0;18752:83::-;18802:25;18808:10;18820:6;18802:5;:25::i;:::-;18752:83;:::o;17393:86::-;17440:4;17464:7;;;;;;;;;;;17457:14;;17393:86;:::o;7887:143::-;7977:7;8004:9;:18;8014:7;8004:18;;;;;;;;;;;;;;;;7997:25;;7887:143;;;:::o;1895:94::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1960:21:::1;1978:1;1960:9;:21::i;:::-;1895:94::o:0;18843:63::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18890:8:::1;:6;:8::i;:::-;18843:63::o:0;1244:87::-;1290:7;1317:6;;;;;;;;;;;1310:13;;1244:87;:::o;6815:104::-;6871:13;6904:7;6897:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6815:104;:::o;11236:475::-;11354:4;11371:24;11398:11;:25;11410:12;:10;:12::i;:::-;11398:25;;;;;;;;;;;;;;;:34;11424:7;11398:34;;;;;;;;;;;;;;;;11371:61;;11485:15;11465:16;:35;;11443:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;11601:67;11610:12;:10;:12::i;:::-;11624:7;11652:15;11633:16;:34;11601:8;:67::i;:::-;11699:4;11692:11;;;11236:475;;;;:::o;8243:200::-;8354:4;8371:42;8381:12;:10;:12::i;:::-;8395:9;8406:6;8371:9;:42::i;:::-;8431:4;8424:11;;8243:200;;;;:::o;8506:176::-;8620:7;8647:11;:18;8659:5;8647:18;;;;;;;;;;;;;;;:27;8666:7;8647:27;;;;;;;;;;;;;;;;8640:34;;8506:176;;;;:::o;2144:229::-;1475:12;:10;:12::i;:::-;1464:23;;:7;:5;:7::i;:::-;:23;;;1456:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2267:1:::1;2247:22;;:8;:22;;;;2225:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;2346:19;2356:8;2346:9;:19::i;:::-;2144:229:::0;:::o;15999:125::-;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;15019:380::-;15172:1;15155:19;;:5;:19;;;;15147:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15253:1;15234:21;;:7;:21;;;;15226:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15337:6;15307:11;:18;15319:5;15307:18;;;;;;;;;;;;;;;:27;15326:7;15307:27;;;;;;;;;;;;;;;:36;;;;15375:7;15359:32;;15368:5;15359:32;;;15384:6;15359:32;;;;;;:::i;:::-;;;;;;;;15019:380;;;:::o;12201:770::-;12359:1;12341:20;;:6;:20;;;;12333:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12443:1;12422:23;;:9;:23;;;;12414:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12498:47;12519:6;12527:9;12538:6;12498:20;:47::i;:::-;12558:21;12582:9;:17;12592:6;12582:17;;;;;;;;;;;;;;;;12558:41;;12649:6;12632:13;:23;;12610:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;12793:6;12777:13;:22;12757:9;:17;12767:6;12757:17;;;;;;;;;;;;;;;:42;;;;12845:6;12821:9;:20;12831:9;12821:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12886:9;12869:35;;12878:6;12869:35;;;12897:6;12869:35;;;;;;:::i;:::-;;;;;;;;12917:46;12937:6;12945:9;12956:6;12917:19;:46::i;:::-;12322:649;12201:770;;;:::o;18452:120::-;17996:8;:6;:8::i;:::-;17988:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;18521:5:::1;18511:7;;:15;;;;;;;;;;;;;;;;;;18542:22;18551:12;:10;:12::i;:::-;18542:22;;;;;;:::i;:::-;;;;;;;;18452:120::o:0;13990:591::-;14093:1;14074:21;;:7;:21;;;;14066:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14146:49;14167:7;14184:1;14188:6;14146:20;:49::i;:::-;14208:22;14233:9;:18;14243:7;14233:18;;;;;;;;;;;;;;;;14208:43;;14288:6;14270:14;:24;;14262:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14407:6;14390:14;:23;14369:9;:18;14379:7;14369:18;;;;;;;;;;;;;;;:44;;;;14451:6;14435:12;;:22;;;;;;;:::i;:::-;;;;;;;;14501:1;14475:37;;14484:7;14475:37;;;14505:6;14475:37;;;;;;:::i;:::-;;;;;;;;14525:48;14545:7;14562:1;14566:6;14525:19;:48::i;:::-;14055:526;13990:591;;:::o;2381:173::-;2437:16;2456:6;;;;;;;;;;;2437:25;;2482:8;2473:6;;:17;;;;;;;;;;;;;;;;;;2537:8;2506:40;;2527:8;2506:40;;;;;;;;;;;;2426:128;2381:173;:::o;18193:118::-;17719:8;:6;:8::i;:::-;17718:9;17710:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;18263:4:::1;18253:7;;:14;;;;;;;;;;;;;;;;;;18283:20;18290:12;:10;:12::i;:::-;18283:20;;;;;;:::i;:::-;;;;;;;;18193:118::o:0;18989:201::-;17719:8;:6;:8::i;:::-;17718:9;17710:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;19138:44:::1;19165:4;19171:2;19175:6;19138:26;:44::i;:::-;18989:201:::0;;;:::o;16728: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:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:86::-;4506:7;4546:4;4539:5;4535:16;4524:27;;4471:86;;;:::o;4563:112::-;4646:22;4662:5;4646:22;:::i;:::-;4641:3;4634:35;4563:112;;:::o;4681:214::-;4770:4;4808:2;4797:9;4793:18;4785:26;;4821:67;4885:1;4874:9;4870:17;4861:6;4821:67;:::i;:::-;4681:214;;;;:::o;4901:329::-;4960:6;5009:2;4997:9;4988:7;4984:23;4980:32;4977:119;;;5015:79;;:::i;:::-;4977:119;5135:1;5160:53;5205:7;5196:6;5185:9;5181:22;5160:53;:::i;:::-;5150:63;;5106:117;4901:329;;;;:::o;5236:::-;5295:6;5344:2;5332:9;5323:7;5319:23;5315:32;5312:119;;;5350:79;;:::i;:::-;5312:119;5470:1;5495:53;5540:7;5531:6;5520:9;5516:22;5495:53;:::i;:::-;5485:63;;5441:117;5236:329;;;;:::o;5571:118::-;5658:24;5676:5;5658:24;:::i;:::-;5653:3;5646:37;5571:118;;:::o;5695:222::-;5788:4;5826:2;5815:9;5811:18;5803:26;;5839:71;5907:1;5896:9;5892:17;5883:6;5839:71;:::i;:::-;5695:222;;;;:::o;5923:474::-;5991:6;5999;6048:2;6036:9;6027:7;6023:23;6019:32;6016:119;;;6054:79;;:::i;:::-;6016:119;6174:1;6199:53;6244:7;6235:6;6224:9;6220:22;6199:53;:::i;:::-;6189:63;;6145:117;6301:2;6327:53;6372:7;6363:6;6352:9;6348:22;6327:53;:::i;:::-;6317:63;;6272:118;5923:474;;;;;:::o;6403:180::-;6451:77;6448:1;6441:88;6548:4;6545:1;6538:15;6572:4;6569:1;6562:15;6589:320;6633:6;6670:1;6664:4;6660:12;6650:22;;6717:1;6711:4;6707:12;6738:18;6728:81;;6794:4;6786:6;6782:17;6772:27;;6728:81;6856:2;6848:6;6845:14;6825:18;6822:38;6819:84;;;6875:18;;:::i;:::-;6819:84;6640:269;6589:320;;;:::o;6915:227::-;7055:34;7051:1;7043:6;7039:14;7032:58;7124:10;7119:2;7111:6;7107:15;7100:35;6915:227;:::o;7148:366::-;7290:3;7311:67;7375:2;7370:3;7311:67;:::i;:::-;7304:74;;7387:93;7476:3;7387:93;:::i;:::-;7505:2;7500:3;7496:12;7489:19;;7148:366;;;:::o;7520:419::-;7686:4;7724:2;7713:9;7709:18;7701:26;;7773:9;7767:4;7763:20;7759:1;7748:9;7744:17;7737:47;7801:131;7927:4;7801:131;:::i;:::-;7793:139;;7520:419;;;:::o;7945:180::-;7993:77;7990:1;7983:88;8090:4;8087:1;8080:15;8114:4;8111:1;8104:15;8131:305;8171:3;8190:20;8208:1;8190:20;:::i;:::-;8185:25;;8224:20;8242:1;8224:20;:::i;:::-;8219:25;;8378:1;8310:66;8306:74;8303:1;8300:81;8297:107;;;8384:18;;:::i;:::-;8297:107;8428:1;8425;8421:9;8414:16;;8131:305;;;;:::o;8442:182::-;8582:34;8578:1;8570:6;8566:14;8559:58;8442:182;:::o;8630:366::-;8772:3;8793:67;8857:2;8852:3;8793:67;:::i;:::-;8786:74;;8869:93;8958:3;8869:93;:::i;:::-;8987:2;8982:3;8978:12;8971:19;;8630:366;;;:::o;9002:419::-;9168:4;9206:2;9195:9;9191:18;9183:26;;9255:9;9249:4;9245:20;9241:1;9230:9;9226:17;9219:47;9283:131;9409:4;9283:131;:::i;:::-;9275:139;;9002:419;;;:::o;9427:224::-;9567:34;9563:1;9555:6;9551:14;9544:58;9636:7;9631:2;9623:6;9619:15;9612:32;9427:224;:::o;9657:366::-;9799:3;9820:67;9884:2;9879:3;9820:67;:::i;:::-;9813:74;;9896:93;9985:3;9896:93;:::i;:::-;10014:2;10009:3;10005:12;9998:19;;9657:366;;;:::o;10029:419::-;10195:4;10233:2;10222:9;10218:18;10210:26;;10282:9;10276:4;10272:20;10268:1;10257:9;10253:17;10246:47;10310:131;10436:4;10310:131;:::i;:::-;10302:139;;10029:419;;;:::o;10454:225::-;10594:34;10590:1;10582:6;10578:14;10571:58;10663:8;10658:2;10650:6;10646:15;10639:33;10454:225;:::o;10685:366::-;10827:3;10848:67;10912:2;10907:3;10848:67;:::i;:::-;10841:74;;10924:93;11013:3;10924:93;:::i;:::-;11042:2;11037:3;11033:12;11026:19;;10685:366;;;:::o;11057:419::-;11223:4;11261:2;11250:9;11246:18;11238:26;;11310:9;11304:4;11300:20;11296:1;11285:9;11281:17;11274:47;11338:131;11464:4;11338:131;:::i;:::-;11330:139;;11057:419;;;:::o;11482:223::-;11622:34;11618:1;11610:6;11606:14;11599:58;11691:6;11686:2;11678:6;11674:15;11667:31;11482:223;:::o;11711:366::-;11853:3;11874:67;11938:2;11933:3;11874:67;:::i;:::-;11867:74;;11950:93;12039:3;11950:93;:::i;:::-;12068:2;12063:3;12059:12;12052:19;;11711:366;;;:::o;12083:419::-;12249:4;12287:2;12276:9;12272:18;12264:26;;12336:9;12330:4;12326:20;12322:1;12311:9;12307:17;12300:47;12364:131;12490:4;12364:131;:::i;:::-;12356:139;;12083:419;;;:::o;12508:221::-;12648:34;12644:1;12636:6;12632:14;12625:58;12717:4;12712:2;12704:6;12700:15;12693:29;12508:221;:::o;12735:366::-;12877:3;12898:67;12962:2;12957:3;12898:67;:::i;:::-;12891:74;;12974:93;13063:3;12974:93;:::i;:::-;13092:2;13087:3;13083:12;13076:19;;12735:366;;;:::o;13107:419::-;13273:4;13311:2;13300:9;13296:18;13288:26;;13360:9;13354:4;13350:20;13346:1;13335:9;13331:17;13324:47;13388:131;13514:4;13388:131;:::i;:::-;13380:139;;13107:419;;;:::o;13532:224::-;13672:34;13668:1;13660:6;13656:14;13649:58;13741:7;13736:2;13728:6;13724:15;13717:32;13532:224;:::o;13762:366::-;13904:3;13925:67;13989:2;13984:3;13925:67;:::i;:::-;13918:74;;14001:93;14090:3;14001:93;:::i;:::-;14119:2;14114:3;14110:12;14103:19;;13762:366;;;:::o;14134:419::-;14300:4;14338:2;14327:9;14323:18;14315:26;;14387:9;14381:4;14377:20;14373:1;14362:9;14358:17;14351:47;14415:131;14541:4;14415:131;:::i;:::-;14407:139;;14134:419;;;:::o;14559:222::-;14699:34;14695:1;14687:6;14683:14;14676:58;14768:5;14763:2;14755:6;14751:15;14744:30;14559:222;:::o;14787:366::-;14929:3;14950:67;15014:2;15009:3;14950:67;:::i;:::-;14943:74;;15026:93;15115:3;15026:93;:::i;:::-;15144:2;15139:3;15135:12;15128:19;;14787:366;;;:::o;15159:419::-;15325:4;15363:2;15352:9;15348:18;15340:26;;15412:9;15406:4;15402:20;15398:1;15387:9;15383:17;15376:47;15440:131;15566:4;15440:131;:::i;:::-;15432:139;;15159:419;;;:::o;15584:225::-;15724:34;15720:1;15712:6;15708:14;15701:58;15793:8;15788:2;15780:6;15776:15;15769:33;15584:225;:::o;15815:366::-;15957:3;15978:67;16042:2;16037:3;15978:67;:::i;:::-;15971:74;;16054:93;16143:3;16054:93;:::i;:::-;16172:2;16167:3;16163:12;16156:19;;15815:366;;;:::o;16187:419::-;16353:4;16391:2;16380:9;16376:18;16368:26;;16440:9;16434:4;16430:20;16426:1;16415:9;16411:17;16404:47;16468:131;16594:4;16468:131;:::i;:::-;16460:139;;16187:419;;;:::o;16612:170::-;16752:22;16748:1;16740:6;16736:14;16729:46;16612:170;:::o;16788:366::-;16930:3;16951:67;17015:2;17010:3;16951:67;:::i;:::-;16944:74;;17027:93;17116:3;17027:93;:::i;:::-;17145:2;17140:3;17136:12;17129:19;;16788:366;;;:::o;17160:419::-;17326:4;17364:2;17353:9;17349:18;17341:26;;17413:9;17407:4;17403:20;17399:1;17388:9;17384:17;17377:47;17441:131;17567:4;17441:131;:::i;:::-;17433:139;;17160:419;;;:::o;17585:220::-;17725:34;17721:1;17713:6;17709:14;17702:58;17794:3;17789:2;17781:6;17777:15;17770:28;17585:220;:::o;17811:366::-;17953:3;17974:67;18038:2;18033:3;17974:67;:::i;:::-;17967:74;;18050:93;18139:3;18050:93;:::i;:::-;18168:2;18163:3;18159:12;18152:19;;17811:366;;;:::o;18183:419::-;18349:4;18387:2;18376:9;18372:18;18364:26;;18436:9;18430:4;18426:20;18422:1;18411:9;18407:17;18400:47;18464:131;18590:4;18464:131;:::i;:::-;18456:139;;18183:419;;;:::o;18608:221::-;18748:34;18744:1;18736:6;18732:14;18725:58;18817:4;18812:2;18804:6;18800:15;18793:29;18608:221;:::o;18835:366::-;18977:3;18998:67;19062:2;19057:3;18998:67;:::i;:::-;18991:74;;19074:93;19163:3;19074:93;:::i;:::-;19192:2;19187:3;19183:12;19176:19;;18835:366;;;:::o;19207:419::-;19373:4;19411:2;19400:9;19396:18;19388:26;;19460:9;19454:4;19450:20;19446:1;19435:9;19431:17;19424:47;19488:131;19614:4;19488:131;:::i;:::-;19480:139;;19207:419;;;:::o;19632:191::-;19672:4;19692:20;19710:1;19692:20;:::i;:::-;19687:25;;19726:20;19744:1;19726:20;:::i;:::-;19721:25;;19765:1;19762;19759:8;19756:34;;;19770:18;;:::i;:::-;19756:34;19815:1;19812;19808:9;19800:17;;19632:191;;;;:::o;19829:166::-;19969:18;19965:1;19957:6;19953:14;19946:42;19829:166;:::o;20001:366::-;20143:3;20164:67;20228:2;20223:3;20164:67;:::i;:::-;20157:74;;20240:93;20329:3;20240:93;:::i;:::-;20358:2;20353:3;20349:12;20342:19;;20001:366;;;:::o;20373:419::-;20539:4;20577:2;20566:9;20562:18;20554:26;;20626:9;20620:4;20616:20;20612:1;20601:9;20597:17;20590:47;20654:131;20780:4;20654:131;:::i;:::-;20646:139;;20373:419;;;:::o

Swarm Source

ipfs://130b24215d9fd57d51d7b0b07310daf16f958ab6e571f689c21d3a14da7fef57
[ 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.