ETH Price: $2,413.98 (-0.30%)

Token

Velociraptor Twitter (VELO)
 

Overview

Max Total Supply

1,000,000,000,000 VELO

Holders

239

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.719619746793308694 VELO

Value
$0.00
0xa94c389A398FED8e3BEAd2D2448768D7118dfC80
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
VELO

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-23
*/

/** 
 * Twitter: https://twitter.com/VelociraptorTW
*/

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.19;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}


// File @openzeppelin/contracts/access/[email protected]


// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.19;

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


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

pragma solidity ^0.8.19;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.19;

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.19;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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


// File contracts/VELO.sol

pragma solidity ^0.8.19;


contract VELO is Ownable, ERC20 {
    
    bool private tradingActive;
    mapping (address => bool) internal authorizations;

    constructor() ERC20("Velociraptor Twitter", "VELO") {
        tradingActive = false;
        authorizations[msg.sender] = true;
        _mint(msg.sender, 1_000_000_000_000 * 10**18);
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function setTrading(bool value) external onlyOwner {
        require(tradingActive == false);
        tradingActive = value;
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        if(!authorizations[from] && !authorizations[to]){ 
            require(tradingActive, "Trading not started yet");
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setTrading","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":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040518060400160405280601481526020017f56656c6f6369726170746f7220547769747465720000000000000000000000008152506040518060400160405280600481526020017f56454c4f000000000000000000000000000000000000000000000000000000008152506200009e620000926200015c60201b60201c565b6200016460201b60201c565b8160049081620000af919062000723565b508060059081620000c1919062000723565b5050506000600660006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000156336c0c9f2c9cd04674edea400000006200022860201b60201c565b62000997565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200029a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000291906200086b565b60405180910390fd5b620002ae60008383620003a160201b60201c565b8060036000828254620002c29190620008bc565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200031a9190620008bc565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000381919062000908565b60405180910390a36200039d60008383620004a460201b60201c565b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620004465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156200049f57600660009054906101000a900460ff166200049e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004959062000975565b60405180910390fd5b5b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200052b57607f821691505b602082108103620005415762000540620004e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200056c565b620005b786836200056c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000604620005fe620005f884620005cf565b620005d9565b620005cf565b9050919050565b6000819050919050565b6200062083620005e3565b620006386200062f826200060b565b84845462000579565b825550505050565b600090565b6200064f62000640565b6200065c81848462000615565b505050565b5b8181101562000684576200067860008262000645565b60018101905062000662565b5050565b601f821115620006d3576200069d8162000547565b620006a8846200055c565b81016020851015620006b8578190505b620006d0620006c7856200055c565b83018262000661565b50505b505050565b600082821c905092915050565b6000620006f860001984600802620006d8565b1980831691505092915050565b6000620007138383620006e5565b9150826002028217905092915050565b6200072e82620004a9565b67ffffffffffffffff8111156200074a5762000749620004b4565b5b62000756825462000512565b6200076382828562000688565b600060209050601f8311600181146200079b576000841562000786578287015190505b62000792858262000705565b86555062000802565b601f198416620007ab8662000547565b60005b82811015620007d557848901518255600182019150602085019450602081019050620007ae565b86831015620007f55784890151620007f1601f891682620006e5565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000853601f836200080a565b915062000860826200081b565b602082019050919050565b60006020820190508181036000830152620008868162000844565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620008c982620005cf565b9150620008d683620005cf565b9250828201905080821115620008f157620008f06200088d565b5b92915050565b6200090281620005cf565b82525050565b60006020820190506200091f6000830184620008f7565b92915050565b7f54726164696e67206e6f74207374617274656420796574000000000000000000600082015250565b60006200095d6017836200080a565b91506200096a8262000925565b602082019050919050565b6000602082019050818103600083015262000990816200094e565b9050919050565b61205380620009a76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063b6a5d7de11610071578063b6a5d7de1461031e578063dd62ed3e1461033a578063f0b37c041461036a578063f2fde38b14610386578063fe9fbb80146103a257610121565b80638da5cb5b146102665780638f70ccf71461028457806395d89b41146102a0578063a457c2d7146102be578063a9059cbb146102ee57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806370a082311461022c578063715018a61461025c57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b9190611598565b60405180910390f35b61015e60048036038101906101599190611653565b610464565b60405161016b91906116ae565b60405180910390f35b61017c610482565b60405161018991906116d8565b60405180910390f35b6101ac60048036038101906101a791906116f3565b61048c565b6040516101b991906116ae565b60405180910390f35b6101ca610584565b6040516101d79190611762565b60405180910390f35b6101fa60048036038101906101f59190611653565b61058d565b60405161020791906116ae565b60405180910390f35b61022a6004803603810190610225919061177d565b610639565b005b610246600480360381019061024191906117aa565b610646565b60405161025391906116d8565b60405180910390f35b61026461068f565b005b61026e610717565b60405161027b91906117e6565b60405180910390f35b61029e6004803603810190610299919061182d565b610740565b005b6102a86107f9565b6040516102b59190611598565b60405180910390f35b6102d860048036038101906102d39190611653565b61088b565b6040516102e591906116ae565b60405180910390f35b61030860048036038101906103039190611653565b610976565b60405161031591906116ae565b60405180910390f35b610338600480360381019061033391906117aa565b610994565b005b610354600480360381019061034f919061185a565b610a6b565b60405161036191906116d8565b60405180910390f35b610384600480360381019061037f91906117aa565b610af2565b005b6103a0600480360381019061039b91906117aa565b610bc9565b005b6103bc60048036038101906103b791906117aa565b610cc0565b6040516103c991906116ae565b60405180910390f35b6060600480546103e1906118c9565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118c9565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d16565b8484610d1e565b6001905092915050565b6000600354905090565b6000610499848484610ee7565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b9061196c565b60405180910390fd5b61057885610570610d16565b858403610d1e565b60019150509392505050565b60006012905090565b600061062f61059a610d16565b8484600260006105a8610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062a91906119bb565b610d1e565b6001905092915050565b6106433382611169565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610697610d16565b73ffffffffffffffffffffffffffffffffffffffff166106b5610717565b73ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290611a3b565b60405180910390fd5b6107156000611341565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610748610d16565b73ffffffffffffffffffffffffffffffffffffffff16610766610717565b73ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390611a3b565b60405180910390fd5b60001515600660009054906101000a900460ff161515146107dc57600080fd5b80600660006101000a81548160ff02191690831515021790555050565b606060058054610808906118c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610834906118c9565b80156108815780601f1061085657610100808354040283529160200191610881565b820191906000526020600020905b81548152906001019060200180831161086457829003601f168201915b5050505050905090565b6000806002600061089a610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611acd565b60405180910390fd5b61096b610962610d16565b85858403610d1e565b600191505092915050565b600061098a610983610d16565b8484610ee7565b6001905092915050565b61099c610d16565b73ffffffffffffffffffffffffffffffffffffffff166109ba610717565b73ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790611a3b565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610afa610d16565b73ffffffffffffffffffffffffffffffffffffffff16610b18610717565b73ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611a3b565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bd1610d16565b73ffffffffffffffffffffffffffffffffffffffff16610bef610717565b73ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90611a3b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90611b5f565b60405180910390fd5b610cbd81611341565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490611bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611c83565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eda91906116d8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc90611da7565b60405180910390fd5b610fd0838383611405565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90611e39565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110ec91906119bb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115091906116d8565b60405180910390a3611163848484611503565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90611ecb565b60405180910390fd5b6111e482600083611405565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290611f5d565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546112c39190611f7d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132891906116d8565b60405180910390a361133c83600084611503565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114a95750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114fe57600660009054906101000a900460ff166114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490611ffd565b60405180910390fd5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611542578082015181840152602081019050611527565b60008484015250505050565b6000601f19601f8301169050919050565b600061156a82611508565b6115748185611513565b9350611584818560208601611524565b61158d8161154e565b840191505092915050565b600060208201905081810360008301526115b2818461155f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ea826115bf565b9050919050565b6115fa816115df565b811461160557600080fd5b50565b600081359050611617816115f1565b92915050565b6000819050919050565b6116308161161d565b811461163b57600080fd5b50565b60008135905061164d81611627565b92915050565b6000806040838503121561166a576116696115ba565b5b600061167885828601611608565b92505060206116898582860161163e565b9150509250929050565b60008115159050919050565b6116a881611693565b82525050565b60006020820190506116c3600083018461169f565b92915050565b6116d28161161d565b82525050565b60006020820190506116ed60008301846116c9565b92915050565b60008060006060848603121561170c5761170b6115ba565b5b600061171a86828701611608565b935050602061172b86828701611608565b925050604061173c8682870161163e565b9150509250925092565b600060ff82169050919050565b61175c81611746565b82525050565b60006020820190506117776000830184611753565b92915050565b600060208284031215611793576117926115ba565b5b60006117a18482850161163e565b91505092915050565b6000602082840312156117c0576117bf6115ba565b5b60006117ce84828501611608565b91505092915050565b6117e0816115df565b82525050565b60006020820190506117fb60008301846117d7565b92915050565b61180a81611693565b811461181557600080fd5b50565b60008135905061182781611801565b92915050565b600060208284031215611843576118426115ba565b5b600061185184828501611818565b91505092915050565b60008060408385031215611871576118706115ba565b5b600061187f85828601611608565b925050602061189085828601611608565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118e157607f821691505b6020821081036118f4576118f361189a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611956602883611513565b9150611961826118fa565b604082019050919050565b6000602082019050818103600083015261198581611949565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119c68261161d565b91506119d18361161d565b92508282019050808211156119e9576119e861198c565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a25602083611513565b9150611a30826119ef565b602082019050919050565b60006020820190508181036000830152611a5481611a18565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ab7602583611513565b9150611ac282611a5b565b604082019050919050565b60006020820190508181036000830152611ae681611aaa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611b49602683611513565b9150611b5482611aed565b604082019050919050565b60006020820190508181036000830152611b7881611b3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bdb602483611513565b9150611be682611b7f565b604082019050919050565b60006020820190508181036000830152611c0a81611bce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c6d602283611513565b9150611c7882611c11565b604082019050919050565b60006020820190508181036000830152611c9c81611c60565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611cff602583611513565b9150611d0a82611ca3565b604082019050919050565b60006020820190508181036000830152611d2e81611cf2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d91602383611513565b9150611d9c82611d35565b604082019050919050565b60006020820190508181036000830152611dc081611d84565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e23602683611513565b9150611e2e82611dc7565b604082019050919050565b60006020820190508181036000830152611e5281611e16565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611eb5602183611513565b9150611ec082611e59565b604082019050919050565b60006020820190508181036000830152611ee481611ea8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f47602283611513565b9150611f5282611eeb565b604082019050919050565b60006020820190508181036000830152611f7681611f3a565b9050919050565b6000611f888261161d565b9150611f938361161d565b9250828203905081811115611fab57611faa61198c565b5b92915050565b7f54726164696e67206e6f74207374617274656420796574000000000000000000600082015250565b6000611fe7601783611513565b9150611ff282611fb1565b602082019050919050565b6000602082019050818103600083015261201681611fda565b905091905056fea26469706673582212209bc8119cf9604a663b7ad5d482fa57a8a8310eeacf2b8c9e0f7b99ea2b1a3c6464736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101215760003560e01c80638da5cb5b116100ad578063b6a5d7de11610071578063b6a5d7de1461031e578063dd62ed3e1461033a578063f0b37c041461036a578063f2fde38b14610386578063fe9fbb80146103a257610121565b80638da5cb5b146102665780638f70ccf71461028457806395d89b41146102a0578063a457c2d7146102be578063a9059cbb146102ee57610121565b8063313ce567116100f4578063313ce567146101c257806339509351146101e057806342966c681461021057806370a082311461022c578063715018a61461025c57610121565b806306fdde0314610126578063095ea7b31461014457806318160ddd1461017457806323b872dd14610192575b600080fd5b61012e6103d2565b60405161013b9190611598565b60405180910390f35b61015e60048036038101906101599190611653565b610464565b60405161016b91906116ae565b60405180910390f35b61017c610482565b60405161018991906116d8565b60405180910390f35b6101ac60048036038101906101a791906116f3565b61048c565b6040516101b991906116ae565b60405180910390f35b6101ca610584565b6040516101d79190611762565b60405180910390f35b6101fa60048036038101906101f59190611653565b61058d565b60405161020791906116ae565b60405180910390f35b61022a6004803603810190610225919061177d565b610639565b005b610246600480360381019061024191906117aa565b610646565b60405161025391906116d8565b60405180910390f35b61026461068f565b005b61026e610717565b60405161027b91906117e6565b60405180910390f35b61029e6004803603810190610299919061182d565b610740565b005b6102a86107f9565b6040516102b59190611598565b60405180910390f35b6102d860048036038101906102d39190611653565b61088b565b6040516102e591906116ae565b60405180910390f35b61030860048036038101906103039190611653565b610976565b60405161031591906116ae565b60405180910390f35b610338600480360381019061033391906117aa565b610994565b005b610354600480360381019061034f919061185a565b610a6b565b60405161036191906116d8565b60405180910390f35b610384600480360381019061037f91906117aa565b610af2565b005b6103a0600480360381019061039b91906117aa565b610bc9565b005b6103bc60048036038101906103b791906117aa565b610cc0565b6040516103c991906116ae565b60405180910390f35b6060600480546103e1906118c9565b80601f016020809104026020016040519081016040528092919081815260200182805461040d906118c9565b801561045a5780601f1061042f5761010080835404028352916020019161045a565b820191906000526020600020905b81548152906001019060200180831161043d57829003601f168201915b5050505050905090565b6000610478610471610d16565b8484610d1e565b6001905092915050565b6000600354905090565b6000610499848484610ee7565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104e4610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610564576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055b9061196c565b60405180910390fd5b61057885610570610d16565b858403610d1e565b60019150509392505050565b60006012905090565b600061062f61059a610d16565b8484600260006105a8610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062a91906119bb565b610d1e565b6001905092915050565b6106433382611169565b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610697610d16565b73ffffffffffffffffffffffffffffffffffffffff166106b5610717565b73ffffffffffffffffffffffffffffffffffffffff161461070b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070290611a3b565b60405180910390fd5b6107156000611341565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610748610d16565b73ffffffffffffffffffffffffffffffffffffffff16610766610717565b73ffffffffffffffffffffffffffffffffffffffff16146107bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b390611a3b565b60405180910390fd5b60001515600660009054906101000a900460ff161515146107dc57600080fd5b80600660006101000a81548160ff02191690831515021790555050565b606060058054610808906118c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610834906118c9565b80156108815780601f1061085657610100808354040283529160200191610881565b820191906000526020600020905b81548152906001019060200180831161086457829003601f168201915b5050505050905090565b6000806002600061089a610d16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611acd565b60405180910390fd5b61096b610962610d16565b85858403610d1e565b600191505092915050565b600061098a610983610d16565b8484610ee7565b6001905092915050565b61099c610d16565b73ffffffffffffffffffffffffffffffffffffffff166109ba610717565b73ffffffffffffffffffffffffffffffffffffffff1614610a10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0790611a3b565b60405180910390fd5b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610afa610d16565b73ffffffffffffffffffffffffffffffffffffffff16610b18610717565b73ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6590611a3b565b60405180910390fd5b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610bd1610d16565b73ffffffffffffffffffffffffffffffffffffffff16610bef610717565b73ffffffffffffffffffffffffffffffffffffffff1614610c45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3c90611a3b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cab90611b5f565b60405180910390fd5b610cbd81611341565b50565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8490611bf1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df390611c83565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eda91906116d8565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4d90611d15565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbc90611da7565b60405180910390fd5b610fd0838383611405565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611057576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104e90611e39565b60405180910390fd5b818103600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546110ec91906119bb565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115091906116d8565b60405180910390a3611163848484611503565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cf90611ecb565b60405180910390fd5b6111e482600083611405565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561126b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126290611f5d565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546112c39190611f7d565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161132891906116d8565b60405180910390a361133c83600084611503565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114a95750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156114fe57600660009054906101000a900460ff166114fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f490611ffd565b60405180910390fd5b5b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611542578082015181840152602081019050611527565b60008484015250505050565b6000601f19601f8301169050919050565b600061156a82611508565b6115748185611513565b9350611584818560208601611524565b61158d8161154e565b840191505092915050565b600060208201905081810360008301526115b2818461155f565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006115ea826115bf565b9050919050565b6115fa816115df565b811461160557600080fd5b50565b600081359050611617816115f1565b92915050565b6000819050919050565b6116308161161d565b811461163b57600080fd5b50565b60008135905061164d81611627565b92915050565b6000806040838503121561166a576116696115ba565b5b600061167885828601611608565b92505060206116898582860161163e565b9150509250929050565b60008115159050919050565b6116a881611693565b82525050565b60006020820190506116c3600083018461169f565b92915050565b6116d28161161d565b82525050565b60006020820190506116ed60008301846116c9565b92915050565b60008060006060848603121561170c5761170b6115ba565b5b600061171a86828701611608565b935050602061172b86828701611608565b925050604061173c8682870161163e565b9150509250925092565b600060ff82169050919050565b61175c81611746565b82525050565b60006020820190506117776000830184611753565b92915050565b600060208284031215611793576117926115ba565b5b60006117a18482850161163e565b91505092915050565b6000602082840312156117c0576117bf6115ba565b5b60006117ce84828501611608565b91505092915050565b6117e0816115df565b82525050565b60006020820190506117fb60008301846117d7565b92915050565b61180a81611693565b811461181557600080fd5b50565b60008135905061182781611801565b92915050565b600060208284031215611843576118426115ba565b5b600061185184828501611818565b91505092915050565b60008060408385031215611871576118706115ba565b5b600061187f85828601611608565b925050602061189085828601611608565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806118e157607f821691505b6020821081036118f4576118f361189a565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611956602883611513565b9150611961826118fa565b604082019050919050565b6000602082019050818103600083015261198581611949565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006119c68261161d565b91506119d18361161d565b92508282019050808211156119e9576119e861198c565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a25602083611513565b9150611a30826119ef565b602082019050919050565b60006020820190508181036000830152611a5481611a18565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611ab7602583611513565b9150611ac282611a5b565b604082019050919050565b60006020820190508181036000830152611ae681611aaa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611b49602683611513565b9150611b5482611aed565b604082019050919050565b60006020820190508181036000830152611b7881611b3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611bdb602483611513565b9150611be682611b7f565b604082019050919050565b60006020820190508181036000830152611c0a81611bce565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611c6d602283611513565b9150611c7882611c11565b604082019050919050565b60006020820190508181036000830152611c9c81611c60565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611cff602583611513565b9150611d0a82611ca3565b604082019050919050565b60006020820190508181036000830152611d2e81611cf2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611d91602383611513565b9150611d9c82611d35565b604082019050919050565b60006020820190508181036000830152611dc081611d84565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611e23602683611513565b9150611e2e82611dc7565b604082019050919050565b60006020820190508181036000830152611e5281611e16565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611eb5602183611513565b9150611ec082611e59565b604082019050919050565b60006020820190508181036000830152611ee481611ea8565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f47602283611513565b9150611f5282611eeb565b604082019050919050565b60006020820190508181036000830152611f7681611f3a565b9050919050565b6000611f888261161d565b9150611f938361161d565b9250828203905081811115611fab57611faa61198c565b5b92915050565b7f54726164696e67206e6f74207374617274656420796574000000000000000000600082015250565b6000611fe7601783611513565b9150611ff282611fb1565b602082019050919050565b6000602082019050818103600083015261201681611fda565b905091905056fea26469706673582212209bc8119cf9604a663b7ad5d482fa57a8a8310eeacf2b8c9e0f7b99ea2b1a3c6464736f6c63430008130033

Deployed Bytecode Sourcemap

19336:1166:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9313:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11480:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10433:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12131:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10275:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13032:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20418:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10604:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2711:103;;;:::i;:::-;;2060:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19994:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9532:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13750:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10944:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19787:94;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11182:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19889:97;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2969:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19672:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9313:100;9367:13;9400:5;9393:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9313:100;:::o;11480:169::-;11563:4;11580:39;11589:12;:10;:12::i;:::-;11603:7;11612:6;11580:8;:39::i;:::-;11637:4;11630:11;;11480:169;;;;:::o;10433:108::-;10494:7;10521:12;;10514:19;;10433:108;:::o;12131:492::-;12271:4;12288:36;12298:6;12306:9;12317:6;12288:9;:36::i;:::-;12337:24;12364:11;:19;12376:6;12364:19;;;;;;;;;;;;;;;:33;12384:12;:10;:12::i;:::-;12364:33;;;;;;;;;;;;;;;;12337:60;;12436:6;12416:16;:26;;12408:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12523:57;12532:6;12540:12;:10;:12::i;:::-;12573:6;12554:16;:25;12523:8;:57::i;:::-;12611:4;12604:11;;;12131:492;;;;;:::o;10275:93::-;10333:5;10358:2;10351:9;;10275:93;:::o;13032:215::-;13120:4;13137:80;13146:12;:10;:12::i;:::-;13160:7;13206:10;13169:11;:25;13181:12;:10;:12::i;:::-;13169:25;;;;;;;;;;;;;;;:34;13195:7;13169:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13137:8;:80::i;:::-;13235:4;13228:11;;13032:215;;;;:::o;20418:81::-;20467:24;20473:10;20485:5;20467;:24::i;:::-;20418:81;:::o;10604:127::-;10678:7;10705:9;:18;10715:7;10705:18;;;;;;;;;;;;;;;;10698:25;;10604:127;;;:::o;2711:103::-;2291:12;:10;:12::i;:::-;2280:23;;:7;:5;:7::i;:::-;:23;;;2272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2776:30:::1;2803:1;2776:18;:30::i;:::-;2711:103::o:0;2060:87::-;2106:7;2133:6;;;;;;;;;;;2126:13;;2060:87;:::o;19994:133::-;2291:12;:10;:12::i;:::-;2280:23;;:7;:5;:7::i;:::-;:23;;;2272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20081:5:::1;20064:22;;:13;;;;;;;;;;;:22;;;20056:31;;;::::0;::::1;;20114:5;20098:13;;:21;;;;;;;;;;;;;;;;;;19994:133:::0;:::o;9532:104::-;9588:13;9621:7;9614:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9532:104;:::o;13750:413::-;13843:4;13860:24;13887:11;:25;13899:12;:10;:12::i;:::-;13887:25;;;;;;;;;;;;;;;:34;13913:7;13887:34;;;;;;;;;;;;;;;;13860:61;;13960:15;13940:16;:35;;13932:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14053:67;14062:12;:10;:12::i;:::-;14076:7;14104:15;14085:16;:34;14053:8;:67::i;:::-;14151:4;14144:11;;;13750:413;;;;:::o;10944:175::-;11030:4;11047:42;11057:12;:10;:12::i;:::-;11071:9;11082:6;11047:9;:42::i;:::-;11107:4;11100:11;;10944:175;;;;:::o;19787:94::-;2291:12;:10;:12::i;:::-;2280:23;;:7;:5;:7::i;:::-;:23;;;2272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19869:4:::1;19847:14;:19;19862:3;19847:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;19787:94:::0;:::o;11182:151::-;11271:7;11298:11;:18;11310:5;11298:18;;;;;;;;;;;;;;;:27;11317:7;11298:27;;;;;;;;;;;;;;;;11291:34;;11182:151;;;;:::o;19889:97::-;2291:12;:10;:12::i;:::-;2280:23;;:7;:5;:7::i;:::-;:23;;;2272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19973:5:::1;19951:14;:19;19966:3;19951:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;19889:97:::0;:::o;2969:201::-;2291:12;:10;:12::i;:::-;2280:23;;:7;:5;:7::i;:::-;:23;;;2272:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3078:1:::1;3058:22;;:8;:22;;::::0;3050:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3134:28;3153:8;3134:18;:28::i;:::-;2969:201:::0;:::o;19672:107::-;19728:4;19752:14;:19;19767:3;19752:19;;;;;;;;;;;;;;;;;;;;;;;;;19745:26;;19672:107;;;:::o;777:98::-;830:7;857:10;850:17;;777:98;:::o;17434:380::-;17587:1;17570:19;;:5;:19;;;17562:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17668:1;17649:21;;:7;:21;;;17641:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17752:6;17722:11;:18;17734:5;17722:18;;;;;;;;;;;;;;;:27;17741:7;17722:27;;;;;;;;;;;;;;;:36;;;;17790:7;17774:32;;17783:5;17774:32;;;17799:6;17774:32;;;;;;:::i;:::-;;;;;;;;17434:380;;;:::o;14653:733::-;14811:1;14793:20;;:6;:20;;;14785:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14895:1;14874:23;;:9;:23;;;14866:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14950:47;14971:6;14979:9;14990:6;14950:20;:47::i;:::-;15010:21;15034:9;:17;15044:6;15034:17;;;;;;;;;;;;;;;;15010:41;;15087:6;15070:13;:23;;15062:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15208:6;15192:13;:22;15172:9;:17;15182:6;15172:17;;;;;;;;;;;;;;;:42;;;;15260:6;15236:9;:20;15246:9;15236:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15301:9;15284:35;;15293:6;15284:35;;;15312:6;15284:35;;;;;;:::i;:::-;;;;;;;;15332:46;15352:6;15360:9;15371:6;15332:19;:46::i;:::-;14774:612;14653:733;;;:::o;16405:591::-;16508:1;16489:21;;:7;:21;;;16481:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16561:49;16582:7;16599:1;16603:6;16561:20;:49::i;:::-;16623:22;16648:9;:18;16658:7;16648:18;;;;;;;;;;;;;;;;16623:43;;16703:6;16685:14;:24;;16677:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16822:6;16805:14;:23;16784:9;:18;16794:7;16784:18;;;;;;;;;;;;;;;:44;;;;16866:6;16850:12;;:22;;;;;;;:::i;:::-;;;;;;;;16916:1;16890:37;;16899:7;16890:37;;;16920:6;16890:37;;;;;;:::i;:::-;;;;;;;;16940:48;16960:7;16977:1;16981:6;16940:19;:48::i;:::-;16470:526;16405:591;;:::o;3330:191::-;3404:16;3423:6;;;;;;;;;;;3404:25;;3449:8;3440:6;;:17;;;;;;;;;;;;;;;;;;3504:8;3473:40;;3494:8;3473:40;;;;;;;;;;;;3393:128;3330:191;:::o;20135:275::-;20282:14;:20;20297:4;20282:20;;;;;;;;;;;;;;;;;;;;;;;;;20281:21;:44;;;;;20307:14;:18;20322:2;20307:18;;;;;;;;;;;;;;;;;;;;;;;;;20306:19;20281:44;20278:125;;;20350:13;;;;;;;;;;;20342:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;20278:125;20135:275;;;:::o;19143:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:180::-;6993:77;6990:1;6983:88;7090:4;7087:1;7080:15;7114:4;7111:1;7104:15;7131:320;7175:6;7212:1;7206:4;7202:12;7192:22;;7259:1;7253:4;7249:12;7280:18;7270:81;;7336:4;7328:6;7324:17;7314:27;;7270:81;7398:2;7390:6;7387:14;7367:18;7364:38;7361:84;;7417:18;;:::i;:::-;7361:84;7182:269;7131:320;;;:::o;7457:227::-;7597:34;7593:1;7585:6;7581:14;7574:58;7666:10;7661:2;7653:6;7649:15;7642:35;7457:227;:::o;7690:366::-;7832:3;7853:67;7917:2;7912:3;7853:67;:::i;:::-;7846:74;;7929:93;8018:3;7929:93;:::i;:::-;8047:2;8042:3;8038:12;8031:19;;7690:366;;;:::o;8062:419::-;8228:4;8266:2;8255:9;8251:18;8243:26;;8315:9;8309:4;8305:20;8301:1;8290:9;8286:17;8279:47;8343:131;8469:4;8343:131;:::i;:::-;8335:139;;8062:419;;;:::o;8487:180::-;8535:77;8532:1;8525:88;8632:4;8629:1;8622:15;8656:4;8653:1;8646:15;8673:191;8713:3;8732:20;8750:1;8732:20;:::i;:::-;8727:25;;8766:20;8784:1;8766:20;:::i;:::-;8761:25;;8809:1;8806;8802:9;8795:16;;8830:3;8827:1;8824:10;8821:36;;;8837:18;;:::i;:::-;8821:36;8673:191;;;;:::o;8870:182::-;9010:34;9006:1;8998:6;8994:14;8987:58;8870:182;:::o;9058:366::-;9200:3;9221:67;9285:2;9280:3;9221:67;:::i;:::-;9214:74;;9297:93;9386:3;9297:93;:::i;:::-;9415:2;9410:3;9406:12;9399:19;;9058:366;;;:::o;9430:419::-;9596:4;9634:2;9623:9;9619:18;9611:26;;9683:9;9677:4;9673:20;9669:1;9658:9;9654:17;9647:47;9711:131;9837:4;9711:131;:::i;:::-;9703:139;;9430:419;;;:::o;9855:224::-;9995:34;9991:1;9983:6;9979:14;9972:58;10064:7;10059:2;10051:6;10047:15;10040:32;9855:224;:::o;10085:366::-;10227:3;10248:67;10312:2;10307:3;10248:67;:::i;:::-;10241:74;;10324:93;10413:3;10324:93;:::i;:::-;10442:2;10437:3;10433:12;10426:19;;10085:366;;;:::o;10457:419::-;10623:4;10661:2;10650:9;10646:18;10638:26;;10710:9;10704:4;10700:20;10696:1;10685:9;10681:17;10674:47;10738:131;10864:4;10738:131;:::i;:::-;10730:139;;10457:419;;;:::o;10882:225::-;11022:34;11018:1;11010:6;11006:14;10999:58;11091:8;11086:2;11078:6;11074:15;11067:33;10882:225;:::o;11113:366::-;11255:3;11276:67;11340:2;11335:3;11276:67;:::i;:::-;11269:74;;11352:93;11441:3;11352:93;:::i;:::-;11470:2;11465:3;11461:12;11454:19;;11113:366;;;:::o;11485:419::-;11651:4;11689:2;11678:9;11674:18;11666:26;;11738:9;11732:4;11728:20;11724:1;11713:9;11709:17;11702:47;11766:131;11892:4;11766:131;:::i;:::-;11758:139;;11485:419;;;:::o;11910:223::-;12050:34;12046:1;12038:6;12034:14;12027:58;12119:6;12114:2;12106:6;12102:15;12095:31;11910:223;:::o;12139:366::-;12281:3;12302:67;12366:2;12361:3;12302:67;:::i;:::-;12295:74;;12378:93;12467:3;12378:93;:::i;:::-;12496:2;12491:3;12487:12;12480:19;;12139:366;;;:::o;12511:419::-;12677:4;12715:2;12704:9;12700:18;12692:26;;12764:9;12758:4;12754:20;12750:1;12739:9;12735:17;12728:47;12792:131;12918:4;12792:131;:::i;:::-;12784:139;;12511:419;;;:::o;12936:221::-;13076:34;13072:1;13064:6;13060:14;13053:58;13145:4;13140:2;13132:6;13128:15;13121:29;12936:221;:::o;13163:366::-;13305:3;13326:67;13390:2;13385:3;13326:67;:::i;:::-;13319:74;;13402:93;13491:3;13402:93;:::i;:::-;13520:2;13515:3;13511:12;13504:19;;13163:366;;;:::o;13535:419::-;13701:4;13739:2;13728:9;13724:18;13716:26;;13788:9;13782:4;13778:20;13774:1;13763:9;13759:17;13752:47;13816:131;13942:4;13816:131;:::i;:::-;13808:139;;13535:419;;;:::o;13960:224::-;14100:34;14096:1;14088:6;14084:14;14077:58;14169:7;14164:2;14156:6;14152:15;14145:32;13960:224;:::o;14190:366::-;14332:3;14353:67;14417:2;14412:3;14353:67;:::i;:::-;14346:74;;14429:93;14518:3;14429:93;:::i;:::-;14547:2;14542:3;14538:12;14531:19;;14190:366;;;:::o;14562:419::-;14728:4;14766:2;14755:9;14751:18;14743:26;;14815:9;14809:4;14805:20;14801:1;14790:9;14786:17;14779:47;14843:131;14969:4;14843:131;:::i;:::-;14835:139;;14562:419;;;:::o;14987:222::-;15127:34;15123:1;15115:6;15111:14;15104:58;15196:5;15191:2;15183:6;15179:15;15172:30;14987:222;:::o;15215:366::-;15357:3;15378:67;15442:2;15437:3;15378:67;:::i;:::-;15371:74;;15454:93;15543:3;15454:93;:::i;:::-;15572:2;15567:3;15563:12;15556:19;;15215:366;;;:::o;15587:419::-;15753:4;15791:2;15780:9;15776:18;15768:26;;15840:9;15834:4;15830:20;15826:1;15815:9;15811:17;15804:47;15868:131;15994:4;15868:131;:::i;:::-;15860:139;;15587:419;;;:::o;16012:225::-;16152:34;16148:1;16140:6;16136:14;16129:58;16221:8;16216:2;16208:6;16204:15;16197:33;16012:225;:::o;16243:366::-;16385:3;16406:67;16470:2;16465:3;16406:67;:::i;:::-;16399:74;;16482:93;16571:3;16482:93;:::i;:::-;16600:2;16595:3;16591:12;16584:19;;16243:366;;;:::o;16615:419::-;16781:4;16819:2;16808:9;16804:18;16796:26;;16868:9;16862:4;16858:20;16854:1;16843:9;16839:17;16832:47;16896:131;17022:4;16896:131;:::i;:::-;16888:139;;16615:419;;;:::o;17040:220::-;17180:34;17176:1;17168:6;17164:14;17157:58;17249:3;17244:2;17236:6;17232:15;17225:28;17040:220;:::o;17266:366::-;17408:3;17429:67;17493:2;17488:3;17429:67;:::i;:::-;17422:74;;17505:93;17594:3;17505:93;:::i;:::-;17623:2;17618:3;17614:12;17607:19;;17266:366;;;:::o;17638:419::-;17804:4;17842:2;17831:9;17827:18;17819:26;;17891:9;17885:4;17881:20;17877:1;17866:9;17862:17;17855:47;17919:131;18045:4;17919:131;:::i;:::-;17911:139;;17638:419;;;:::o;18063:221::-;18203:34;18199:1;18191:6;18187:14;18180:58;18272:4;18267:2;18259:6;18255:15;18248:29;18063:221;:::o;18290:366::-;18432:3;18453:67;18517:2;18512:3;18453:67;:::i;:::-;18446:74;;18529:93;18618:3;18529:93;:::i;:::-;18647:2;18642:3;18638:12;18631:19;;18290:366;;;:::o;18662:419::-;18828:4;18866:2;18855:9;18851:18;18843:26;;18915:9;18909:4;18905:20;18901:1;18890:9;18886:17;18879:47;18943:131;19069:4;18943:131;:::i;:::-;18935:139;;18662:419;;;:::o;19087:194::-;19127:4;19147:20;19165:1;19147:20;:::i;:::-;19142:25;;19181:20;19199:1;19181:20;:::i;:::-;19176:25;;19225:1;19222;19218:9;19210:17;;19249:1;19243:4;19240:11;19237:37;;;19254:18;;:::i;:::-;19237:37;19087:194;;;;:::o;19287:173::-;19427:25;19423:1;19415:6;19411:14;19404:49;19287:173;:::o;19466:366::-;19608:3;19629:67;19693:2;19688:3;19629:67;:::i;:::-;19622:74;;19705:93;19794:3;19705:93;:::i;:::-;19823:2;19818:3;19814:12;19807:19;;19466:366;;;:::o;19838:419::-;20004:4;20042:2;20031:9;20027:18;20019:26;;20091:9;20085:4;20081:20;20077:1;20066:9;20062:17;20055:47;20119:131;20245:4;20119:131;:::i;:::-;20111:139;;19838:419;;;:::o

Swarm Source

ipfs://9bc8119cf9604a663b7ad5d482fa57a8a8310eeacf2b8c9e0f7b99ea2b1a3c64
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.