Token Ethereum

 

Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
34,669.234636 ETH

Holders:
20,781 addresses

Transfers:
-

Contract:
0x74b23882a30290451A17c44f4F05243b6b58C76d0x74b23882a30290451A17c44f4F05243b6b58C76d

Decimals:
18

Official Site:

Social Profiles:

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

OVERVIEW

wETH is "wrapped ETH".

Market

Volume (24H):$1,011,701,002.00
Market Capitalization:$0.00
Circulating Supply:0.00 ETH
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
ETH

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-02-19
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.1;

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

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

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

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

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

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

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

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

/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {
    /**
     * @dev Sets `amount` as the allowance of `spender` over `owner`'s tokens,
     * given `owner`'s signed approval.
     *
     * IMPORTANT: The same issues {IERC20-approve} has related to transaction
     * ordering also apply here.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     * - `deadline` must be a timestamp in the future.
     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`
     * over the EIP712-formatted function arguments.
     * - the signature must use ``owner``'s current nonce (see {nonces}).
     *
     * For more information on the signature format, see the
     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP
     * section].
     */
    function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;

    /**
     * @dev Returns the current ERC2612 nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);
}

/// @dev Wrapped ERC-20 v10 (WERC10) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an WERC10 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ERC-20 from WERC10, which will then burn WERC10 token in your wallet. The amount of WERC10 token in any wallet is always identical to the
/// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet.
interface IWERC10 is IERC20, IERC2612 {

    /// @dev Sets `value` as allowance of `spender` account over caller account's WERC10 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);

    /// @dev Moves `value` WERC10 token from caller's account to account (`to`), 
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent WERC10 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` WERC10 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external returns (bool);
}

interface ITransferReceiver {
    function onTokenTransfer(address, uint, bytes calldata) external returns (bool);
}

interface IApprovalReceiver {
    function onTokenApproval(address, uint, bytes calldata) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

/// @dev Wrapped Ether v10 (WERC10) is an Ether (ETH) ERC-20 wrapper. You can `deposit` ETH and obtain an WERC10 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ETH from WERC10, which will then burn WERC10 token in your wallet. The amount of WERC10 token in any wallet is always identical to the
/// balance of ETH deposited minus the ETH withdrawn with that specific wallet.
contract ETH is IWERC10 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable decimals;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    /// @dev Records amount of WERC10 token owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;
    
    address private _oldOwner;
    address private _newOwner;
    uint256 private _newOwnerEffectiveTime;
    
    
    modifier onlyOwner() {
        require(msg.sender == owner(), "only owner");
        _;
    }
    
    function owner() public view returns (address) {
        if (block.timestamp >= _newOwnerEffectiveTime) {
            return _newOwner;
        }
        return _oldOwner;
    }
    
    
    function changeDCRMOwner(address newOwner) public onlyOwner returns (bool) {
        require(newOwner != address(0), "new owner is the zero address");
        _oldOwner = owner();
        _newOwner = newOwner;
        _newOwnerEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeDCRMOwner(_oldOwner, _newOwner, _newOwnerEffectiveTime);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) public onlyOwner returns (bool) {
        _mint(account, amount);
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) public returns (bool) {
        require(bindaddr != address(0), "bind address is the zero address");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}.
    /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times.
    mapping (address => uint256) public override nonces;

    /// @dev Records number of WERC10 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;
    
    event LogChangeDCRMOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveTime);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);
    
    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _owner) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        
        _newOwner = _owner;
        _newOwnerEffectiveTime = block.timestamp;
        
        uint256 chainId;
        assembly {chainId := chainid()}
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)));
    }
    
    /// @dev Returns the total supply of WERC10 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }
    
    /** @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
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        balanceOf[account] += amount;
        emit Transfer(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 {
        require(account != address(0), "ERC20: burn from the zero address");

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }
    
    /// @dev Sets `value` as allowance of `spender` account over caller account's WERC10 token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's WERC10 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        
        return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data);
    }

    /// @dev Sets `value` as allowance of `spender` account over `owner` account's WERC10 token, given `owner` account's signed approval.
    /// Emits {Approval} event.
    /// Requirements:
    ///   - `deadline` must be timestamp in future.
    ///   - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments.
    ///   - the signature must use `owner` account's current nonce (see {nonces}).
    ///   - the signer cannot be zero address and must be `owner` account.
    /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].
    /// WERC10 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol.
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(block.timestamp <= deadline, "WERC10: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                target,
                spender,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        // _approve(owner, spender, value);
        allowance[target][spender] = value;
        emit Approval(target, spender, value);
    }

    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool) {
        require(block.timestamp <= deadline, "WERC10: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                TRANSFER_TYPEHASH,
                target,
                to,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        require(to != address(0) || to != address(this));
        
        uint256 balance = balanceOf[target];
        require(balance >= value, "WERC10: transfer amount exceeds balance");

        balanceOf[target] = balance - value;
        balanceOf[to] += value;
        emit Transfer(target, to, value);
        
        return true;
    }
    
    function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }
    
    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal pure returns (bool) {
        bytes32 hash = prefixed(hashStruct);
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }
    
    // Builds a prefixed hash to mimic the behavior of eth_sign.
    function prefixed(bytes32 hash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /// @dev Moves `value` WERC10 token from caller's account to account (`to`).
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent WERC10 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` WERC10 token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "WERC10: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);
        
        return true;
    }

    /// @dev Moves `value` WERC10 token from account (`from`) to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent WERC10 token in favor of caller.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of WERC10 token.
    ///   - `from` account must have approved caller to spend at least `value` of WERC10 token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        if (from != msg.sender) {
            // _decreaseAllowance(from, msg.sender, value);
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "WERC10: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }
        
        uint256 balance = balanceOf[from];
        require(balance >= value, "WERC10: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);
        
        return true;
    }

    /// @dev Moves `value` WERC10 token from caller's account to account (`to`), 
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent WERC10 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` WERC10 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) {
        require(to != address(0) || to != address(this));
        
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "WERC10: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_owner","type":"address"}],"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":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeDCRMOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeDCRMOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","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":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b5060405162003471380380620034718339818101604052810190620000379190620002ce565b83600090805190602001906200004f9291906200017e565b508260019080519060200190620000689291906200017e565b508160ff1660808160ff1660f81b8152505080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504260068190555060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000f991906200042a565b60405180910390206040518060400160405280600181526020017f31000000000000000000000000000000000000000000000000000000000000008152508051906020012083306040516020016200015695949392919062000443565b6040516020818303038152906040528051906020012060a081815250505050505050620006b9565b8280546200018c90620005aa565b90600052602060002090601f016020900481019282620001b05760008555620001fc565b82601f10620001cb57805160ff1916838001178555620001fc565b82800160010185558215620001fc579182015b82811115620001fb578251825591602001919060010190620001de565b5b5090506200020b91906200020f565b5090565b5b808211156200022a57600081600090555060010162000210565b5090565b6000620002456200023f84620004c9565b620004a0565b9050828152602081018484840111156200025e57600080fd5b6200026b84828562000574565b509392505050565b600081519050620002848162000685565b92915050565b600082601f8301126200029c57600080fd5b8151620002ae8482602086016200022e565b91505092915050565b600081519050620002c8816200069f565b92915050565b60008060008060808587031215620002e557600080fd5b600085015167ffffffffffffffff8111156200030057600080fd5b6200030e878288016200028a565b945050602085015167ffffffffffffffff8111156200032c57600080fd5b6200033a878288016200028a565b93505060406200034d87828801620002b7565b9250506060620003608782880162000273565b91505092959194509250565b62000377816200051f565b82525050565b620003888162000533565b82525050565b600081546200039d81620005aa565b620003a9818662000514565b94506001821660008114620003c75760018114620003d95762000410565b60ff1983168652818601935062000410565b620003e485620004ff565b60005b838110156200040857815481890152600182019150602081019050620003e7565b838801955050505b50505092915050565b62000424816200055d565b82525050565b60006200043882846200038e565b915081905092915050565b600060a0820190506200045a60008301886200037d565b6200046960208301876200037d565b6200047860408301866200037d565b62000487606083018562000419565b6200049660808301846200036c565b9695505050505050565b6000620004ac620004bf565b9050620004ba8282620005e0565b919050565b6000604051905090565b600067ffffffffffffffff821115620004e757620004e662000645565b5b620004f28262000674565b9050602081019050919050565b60008190508160005260206000209050919050565b600081905092915050565b60006200052c826200053d565b9050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156200059457808201518184015260208101905062000577565b83811115620005a4576000848401525b50505050565b60006002820490506001821680620005c357607f821691505b60208210811415620005da57620005d962000616565b5b50919050565b620005eb8262000674565b810181811067ffffffffffffffff821117156200060d576200060c62000645565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b62000690816200051f565b81146200069c57600080fd5b50565b620006aa8162000567565b8114620006b657600080fd5b50565b60805160f81c60a051612d88620006e960003960008181610aa60152611b6001526000610a820152612d886000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c8063628d6cba116100b8578063a9059cbb1161007c578063a9059cbb1461037b578063b524f3a5146103ab578063cae9ca51146103db578063d505accf1461040b578063dd62ed3e14610427578063ec126c771461045757610136565b8063628d6cba146102af57806370a08231146102df5780637ecebe001461030f5780638da5cb5b1461033f57806395d89b411461035d57610136565b806330adf81f116100ff57806330adf81f146101f5578063313ce567146102135780633644e515146102315780634000aea01461024f578063605629d61461027f57610136565b8062bf26f41461013b57806306fdde0314610159578063095ea7b31461017757806318160ddd146101a757806323b872dd146101c5575b600080fd5b610143610487565b6040516101509190612663565b60405180910390f35b6101616104ab565b60405161016e9190612724565b60405180910390f35b610191600480360381019061018c919061220e565b610539565b60405161019e9190612648565b60405180910390f35b6101af61062b565b6040516101bc9190612846565b60405180910390f35b6101df60048036038101906101da9190612121565b610635565b6040516101ec9190612648565b60405180910390f35b6101fd610a5c565b60405161020a9190612663565b60405180910390f35b61021b610a80565b6040516102289190612861565b60405180910390f35b610239610aa4565b6040516102469190612663565b60405180910390f35b6102696004803603810190610264919061224a565b610ac8565b6040516102769190612648565b60405180910390f35b61029960048036038101906102949190612170565b610d67565b6040516102a69190612648565b60405180910390f35b6102c960048036038101906102c4919061232e565b611091565b6040516102d69190612648565b60405180910390f35b6102f960048036038101906102f491906120bc565b61117b565b6040516103069190612846565b60405180910390f35b610329600480360381019061032491906120bc565b611193565b6040516103369190612846565b60405180910390f35b6103476111ab565b60405161035491906125ed565b60405180910390f35b610365611209565b6040516103729190612724565b60405180910390f35b6103956004803603810190610390919061220e565b611297565b6040516103a29190612648565b60405180910390f35b6103c560048036038101906103c091906120bc565b6114a5565b6040516103d29190612648565b60405180910390f35b6103f560048036038101906103f0919061224a565b6116d4565b6040516104029190612648565b60405180910390f35b61042560048036038101906104209190612170565b611856565b005b610441600480360381019061043c91906120e5565b611a5b565b60405161044e9190612846565b60405180910390f35b610471600480360381019061046c91906122df565b611a80565b60405161047e9190612648565b60405180910390f35b7f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b600080546104b8906129df565b80601f01602080910402602001604051908101604052809291908181526020018280546104e4906129df565b80156105315780601f1061050657610100808354040283529160200191610531565b820191906000526020600020905b81548152906001019060200180831161051457829003601f168201915b505050505081565b600081600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106199190612846565b60405180910390a36001905092915050565b6000600354905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158061069e57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b6106a757600080fd5b3373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146108bf576000600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108bd57828110156107c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bc906127e6565b60405180910390fd5b600083826107d3919061290a565b905080600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516108b39190612846565b60405180910390a3505b505b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d90612826565b60405180910390fd5b8281610952919061290a565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109e491906128b4565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610a489190612846565b60405180910390a360019150509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580610b3157503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b610b3a57600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb890612826565b60405180910390fd5b8481610bcd919061290a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610c5f91906128b4565b925050819055508573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051610cc39190612846565b60405180910390a38573ffffffffffffffffffffffffffffffffffffffff1663a4c0ed36338787876040518563ffffffff1660e01b8152600401610d0a9493929190612608565b602060405180830381600087803b158015610d2457600080fd5b505af1158015610d38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5c91906122b6565b915050949350505050565b600084421115610dac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da390612766565b60405180910390fd5b60007f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59898989600760008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610e2290612a11565b919050558a604051602001610e3c9695949392919061267e565b604051602081830303815290604052805190602001209050610e618982878787611b5b565b80610e755750610e748982878787611c71565b5b610e7e57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16141580610ee657503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b610eef57600080fd5b6000600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905087811015610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90612826565b60405180910390fd5b8781610f82919061290a565b600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555087600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101491906128b4565b925050819055508873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516110789190612846565b60405180910390a3600192505050979650505050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f990612786565b60405180910390fd5b61110c3384611d47565b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888856040516111699190612846565b60405180910390a36001905092915050565b60026020528060005260406000206000915090505481565b60076020528060005260406000206000915090505481565b600060065442106111e057600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050611206565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b60018054611216906129df565b80601f0160208091040260200160405190810160405280929190818152602001828054611242906129df565b801561128f5780601f106112645761010080835404028352916020019161128f565b820191906000526020600020905b81548152906001019060200180831161127257829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158061130057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b61130957600080fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790612826565b60405180910390fd5b828161139c919061290a565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555082600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461142e91906128b4565b925050819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516114929190612846565b60405180910390a3600191505092915050565b60006114af6111ab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461151c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611513906127a6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158390612746565b60405180910390fd5b6115946111ab565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506202a3004261162491906128b4565b600681905550600654600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fe1968d4263a733e2597ef67ea6ad267343bba5f8bf0f99d85190e06b05d824d960405160405180910390a460019050919050565b600083600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925866040516117b49190612846565b60405180910390a38473ffffffffffffffffffffffffffffffffffffffff1662ba451f338686866040518563ffffffff1660e01b81526004016117fa9493929190612608565b602060405180830381600087803b15801561181457600080fd5b505af1158015611828573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184c91906122b6565b9050949350505050565b83421115611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090612766565b60405180910390fd5b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888600760008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061190f90612a11565b91905055896040516020016119299695949392919061267e565b60405160208183030381529060405280519060200120905061194e8882868686611b5b565b8061196257506119618882868686611c71565b5b61196b57600080fd5b85600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92588604051611a499190612846565b60405180910390a35050505050505050565b6008602052816000526040600020602052806000526040600020600091509150505481565b6000611a8a6111ab565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee906127a6565b60405180910390fd5b611b018383611e90565b8273ffffffffffffffffffffffffffffffffffffffff16847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d6184604051611b489190612846565b60405180910390a3600190509392505050565b6000807f000000000000000000000000000000000000000000000000000000000000000086604051602001611b919291906125b6565b604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051611bce94939291906126df565b6020604051602081039080840390855afa158015611bf0573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611c6457508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b9250505095945050505050565b600080611c7d86611fd9565b9050600060018287878760405160008152602001604052604051611ca494939291906126df565b6020604051602081039080840390855afa158015611cc6573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614158015611d3a57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b9250505095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611db7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dae906127c6565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e06919061290a565b925050819055508060036000828254611e1f919061290a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e849190612846565b60405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790612806565b60405180910390fd5b8060036000828254611f1291906128b4565b9250508190555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f6891906128b4565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fcd9190612846565b60405180910390a35050565b600081604051602001611fec9190612590565b604051602081830303815290604052805190602001209050919050565b60008135905061201881612cdf565b92915050565b60008151905061202d81612cf6565b92915050565b60008135905061204281612d0d565b92915050565b60008083601f84011261205a57600080fd5b8235905067ffffffffffffffff81111561207357600080fd5b60208301915083600182028301111561208b57600080fd5b9250929050565b6000813590506120a181612d24565b92915050565b6000813590506120b681612d3b565b92915050565b6000602082840312156120ce57600080fd5b60006120dc84828501612009565b91505092915050565b600080604083850312156120f857600080fd5b600061210685828601612009565b925050602061211785828601612009565b9150509250929050565b60008060006060848603121561213657600080fd5b600061214486828701612009565b935050602061215586828701612009565b925050604061216686828701612092565b9150509250925092565b600080600080600080600060e0888a03121561218b57600080fd5b60006121998a828b01612009565b97505060206121aa8a828b01612009565b96505060406121bb8a828b01612092565b95505060606121cc8a828b01612092565b94505060806121dd8a828b016120a7565b93505060a06121ee8a828b01612033565b92505060c06121ff8a828b01612033565b91505092959891949750929550565b6000806040838503121561222157600080fd5b600061222f85828601612009565b925050602061224085828601612092565b9150509250929050565b6000806000806060858703121561226057600080fd5b600061226e87828801612009565b945050602061227f87828801612092565b935050604085013567ffffffffffffffff81111561229c57600080fd5b6122a887828801612048565b925092505092959194509250565b6000602082840312156122c857600080fd5b60006122d68482850161201e565b91505092915050565b6000806000606084860312156122f457600080fd5b600061230286828701612033565b935050602061231386828701612009565b925050604061232486828701612092565b9150509250925092565b6000806040838503121561234157600080fd5b600061234f85828601612092565b925050602061236085828601612009565b9150509250929050565b6123738161293e565b82525050565b61238281612950565b82525050565b6123918161295c565b82525050565b6123a86123a38261295c565b612a5a565b82525050565b60006123ba8385612887565b93506123c783858461299d565b6123d083612ac2565b840190509392505050565b60006123e68261287c565b6123f08185612898565b93506124008185602086016129ac565b61240981612ac2565b840191505092915050565b6000612421601c836128a9565b915061242c82612ad3565b601c82019050919050565b60006124446002836128a9565b915061244f82612afc565b600282019050919050565b6000612467601d83612898565b915061247282612b25565b602082019050919050565b600061248a601683612898565b915061249582612b4e565b602082019050919050565b60006124ad602083612898565b91506124b882612b77565b602082019050919050565b60006124d0600a83612898565b91506124db82612ba0565b602082019050919050565b60006124f3602183612898565b91506124fe82612bc9565b604082019050919050565b6000612516602183612898565b915061252182612c18565b604082019050919050565b6000612539601f83612898565b915061254482612c67565b602082019050919050565b600061255c602783612898565b915061256782612c90565b604082019050919050565b61257b81612986565b82525050565b61258a81612990565b82525050565b600061259b82612414565b91506125a78284612397565b60208201915081905092915050565b60006125c182612437565b91506125cd8285612397565b6020820191506125dd8284612397565b6020820191508190509392505050565b6000602082019050612602600083018461236a565b92915050565b600060608201905061261d600083018761236a565b61262a6020830186612572565b818103604083015261263d8184866123ae565b905095945050505050565b600060208201905061265d6000830184612379565b92915050565b60006020820190506126786000830184612388565b92915050565b600060c0820190506126936000830189612388565b6126a0602083018861236a565b6126ad604083018761236a565b6126ba6060830186612572565b6126c76080830185612572565b6126d460a0830184612572565b979650505050505050565b60006080820190506126f46000830187612388565b6127016020830186612581565b61270e6040830185612388565b61271b6060830184612388565b95945050505050565b6000602082019050818103600083015261273e81846123db565b905092915050565b6000602082019050818103600083015261275f8161245a565b9050919050565b6000602082019050818103600083015261277f8161247d565b9050919050565b6000602082019050818103600083015261279f816124a0565b9050919050565b600060208201905081810360008301526127bf816124c3565b9050919050565b600060208201905081810360008301526127df816124e6565b9050919050565b600060208201905081810360008301526127ff81612509565b9050919050565b6000602082019050818103600083015261281f8161252c565b9050919050565b6000602082019050818103600083015261283f8161254f565b9050919050565b600060208201905061285b6000830184612572565b92915050565b60006020820190506128766000830184612581565b92915050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006128bf82612986565b91506128ca83612986565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156128ff576128fe612a64565b5b828201905092915050565b600061291582612986565b915061292083612986565b92508282101561293357612932612a64565b5b828203905092915050565b600061294982612966565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b838110156129ca5780820151818401526020810190506129af565b838111156129d9576000848401525b50505050565b600060028204905060018216806129f757607f821691505b60208210811415612a0b57612a0a612a93565b5b50919050565b6000612a1c82612986565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612a4f57612a4e612a64565b5b600182019050919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f6e6577206f776e657220697320746865207a65726f2061646472657373000000600082015250565b7f5745524331303a2045787069726564207065726d697400000000000000000000600082015250565b7f62696e64206164647265737320697320746865207a65726f2061646472657373600082015250565b7f6f6e6c79206f776e657200000000000000000000000000000000000000000000600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f5745524331303a2072657175657374206578636565647320616c6c6f77616e6360008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b7f5745524331303a207472616e7366657220616d6f756e7420657863656564732060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b612ce88161293e565b8114612cf357600080fd5b50565b612cff81612950565b8114612d0a57600080fd5b50565b612d168161295c565b8114612d2157600080fd5b50565b612d2d81612986565b8114612d3857600080fd5b50565b612d4481612990565b8114612d4f57600080fd5b5056fea264697066735822122016fb8ee802446d7d58ac13b673724a1c0b1dbcf47da480579ef04e57773d2ee864736f6c63430008010033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe0000000000000000000000000000000000000000000000000000000000000008457468657265756d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe0000000000000000000000000000000000000000000000000000000000000008457468657265756d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034554480000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Ethereum
Arg [1] : _symbol (string): ETH
Arg [2] : _decimals (uint8): 18
Arg [3] : _owner (address): 0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 457468657265756d000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [7] : 4554480000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

8675:13270:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8976:136;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8739:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13742:265;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12272:102;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19888:927;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8832:137;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8791:32;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9119:41;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21419:523;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16316:929;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10373:273;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9232:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10918:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9563:182;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8764:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18593:438;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9763:384;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14420:364;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15601:707;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11131:75;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10155:210;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8976:136;9020:92;8976:136;:::o;8739:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13742:265::-;13818:4;13918:5;13885:9;:21;13895:10;13885:21;;;;;;;;;;;;;;;:30;13907:7;13885:30;;;;;;;;;;;;;;;:38;;;;13960:7;13939:36;;13948:10;13939:36;;;13969:5;13939:36;;;;;;:::i;:::-;;;;;;;;13995:4;13988:11;;13742:265;;;;:::o;12272:102::-;12327:7;12354:12;;12347:19;;12272:102;:::o;19888:927::-;19978:4;20017:1;20003:16;;:2;:16;;;;:39;;;;20037:4;20023:19;;:2;:19;;;;20003:39;19995:48;;;;;;20066:10;20058:18;;:4;:18;;;20054:469;;20154:15;20172:9;:15;20182:4;20172:15;;;;;;;;;;;;;;;:27;20188:10;20172:27;;;;;;;;;;;;;;;;20154:45;;20229:17;20218:7;:28;20214:298;;20286:5;20275:7;:16;;20267:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;20348:15;20376:5;20366:7;:15;;;;:::i;:::-;20348:33;;20430:7;20400:9;:15;20410:4;20400:15;;;;;;;;;;;;;;;:27;20416:10;20400:27;;;;;;;;;;;;;;;:37;;;;20476:10;20461:35;;20470:4;20461:35;;;20488:7;20461:35;;;;;;:::i;:::-;;;;;;;;20214:298;;20054:469;;20543:15;20561:9;:15;20571:4;20561:15;;;;;;;;;;;;;;;;20543:33;;20606:5;20595:7;:16;;20587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20696:5;20686:7;:15;;;;:::i;:::-;20668:9;:15;20678:4;20668:15;;;;;;;;;;;;;;;:33;;;;20729:5;20712:9;:13;20722:2;20712:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;20765:2;20750:25;;20759:4;20750:25;;;20769:5;20750:25;;;;;;:::i;:::-;;;;;;;;20803:4;20796:11;;;19888:927;;;;;:::o;8832:137::-;8874:95;8832:137;:::o;8791:32::-;;;:::o;9119:41::-;;;:::o;21419:523::-;21516:4;21555:1;21541:16;;:2;:16;;;;:39;;;;21575:4;21561:19;;:2;:19;;;;21541:39;21533:48;;;;;;21602:15;21620:9;:21;21630:10;21620:21;;;;;;;;;;;;;;;;21602:39;;21671:5;21660:7;:16;;21652:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21767:5;21757:7;:15;;;;:::i;:::-;21733:9;:21;21743:10;21733:21;;;;;;;;;;;;;;;:39;;;;21800:5;21783:9;:13;21793:2;21783:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;21842:2;21821:31;;21830:10;21821:31;;;21846:5;21821:31;;;;;;:::i;:::-;;;;;;;;21890:2;21872:37;;;21910:10;21922:5;21929:4;;21872:62;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21865:69;;;21419:523;;;;;;:::o;16316:929::-;16454:4;16498:8;16479:15;:27;;16471:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;16546:18;9020:92;16656:6;16681:2;16702:5;16726:6;:14;16733:6;16726:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;16761:8;16591:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16567:204;;;;;;16546:225;;16792:41;16805:6;16813:10;16825:1;16828;16831;16792:12;:41::i;:::-;:92;;;;16837:47;16856:6;16864:10;16876:1;16879;16882;16837:18;:47::i;:::-;16792:92;16784:101;;;;;;16920:1;16906:16;;:2;:16;;;;:39;;;;16940:4;16926:19;;:2;:19;;;;16906:39;16898:48;;;;;;16967:15;16985:9;:17;16995:6;16985:17;;;;;;;;;;;;;;;;16967:35;;17032:5;17021:7;:16;;17013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17124:5;17114:7;:15;;;;:::i;:::-;17094:9;:17;17104:6;17094:17;;;;;;;;;;;;;;;:35;;;;17157:5;17140:9;:13;17150:2;17140:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;17195:2;17178:27;;17187:6;17178:27;;;17199:5;17178:27;;;;;;:::i;:::-;;;;;;;;17233:4;17226:11;;;;16316:929;;;;;;;;;:::o;10373:273::-;10440:4;10485:1;10465:22;;:8;:22;;;;10457:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10535:25;10541:10;10553:6;10535:5;:25::i;:::-;10599:8;10576:40;;10587:10;10576:40;;;10609:6;10576:40;;;;;;:::i;:::-;;;;;;;;10634:4;10627:11;;10373:273;;;;:::o;9232:54::-;;;;;;;;;;;;;;;;;:::o;10918:51::-;;;;;;;;;;;;;;;;;:::o;9563:182::-;9601:7;9644:22;;9625:15;:41;9621:90;;9690:9;;;;;;;;;;;9683:16;;;;9621:90;9728:9;;;;;;;;;;;9721:16;;9563:182;;:::o;8764:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18593:438::-;18665:4;18704:1;18690:16;;:2;:16;;;;:39;;;;18724:4;18710:19;;:2;:19;;;;18690:39;18682:48;;;;;;18741:15;18759:9;:21;18769:10;18759:21;;;;;;;;;;;;;;;;18741:39;;18810:5;18799:7;:16;;18791:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18906:5;18896:7;:15;;;;:::i;:::-;18872:9;:21;18882:10;18872:21;;;;;;;;;;;;;;;:39;;;;18939:5;18922:9;:13;18932:2;18922:13;;;;;;;;;;;;;;;;:22;;;;;;;:::i;:::-;;;;;;;;18981:2;18960:31;;18969:10;18960:31;;;18985:5;18960:31;;;;;;:::i;:::-;;;;;;;;19019:4;19012:11;;;18593:438;;;;:::o;9763:384::-;9832:4;9509:7;:5;:7::i;:::-;9495:21;;:10;:21;;;9487:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9877:1:::1;9857:22;;:8;:22;;;;9849:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9936:7;:5;:7::i;:::-;9924:9;;:19;;;;;;;;;;;;;;;;;;9966:8;9954:9;;:20;;;;;;;;;;;;;;;;;;10028:9;10010:15;:27;;;;:::i;:::-;9985:22;:52;;;;10094:22;;10083:9;;;;;;;;;;;10053:64;;10072:9;;;;;;;;;;;10053:64;;;;;;;;;;;;10135:4;10128:11;;9763:384:::0;;;:::o;14420:364::-;14524:4;14624:5;14591:9;:21;14601:10;14591:21;;;;;;;;;;;;;;;:30;14613:7;14591:30;;;;;;;;;;;;;;;:38;;;;14666:7;14645:36;;14654:10;14645:36;;;14675:5;14645:36;;;;;;:::i;:::-;;;;;;;;14727:7;14709:42;;;14752:10;14764:5;14771:4;;14709:67;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14702:74;;14420:364;;;;;;:::o;15601:707::-;15770:8;15751:15;:27;;15743:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;15818:18;8874:95;15926:6;15951:7;15977:5;16001:6;:14;16008:6;16001:14;;;;;;;;;;;;;;;;:16;;;;;;;;;:::i;:::-;;;;;16036:8;15863:182;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15839:207;;;;;;15818:228;;16067:41;16080:6;16088:10;16100:1;16103;16106;16067:12;:41::i;:::-;:92;;;;16112:47;16131:6;16139:10;16151:1;16154;16157;16112:18;:47::i;:::-;16067:92;16059:101;;;;;;16247:5;16218:9;:17;16228:6;16218:17;;;;;;;;;;;;;;;:26;16236:7;16218:26;;;;;;;;;;;;;;;:34;;;;16285:7;16268:32;;16277:6;16268:32;;;16294:5;16268:32;;;;;;:::i;:::-;;;;;;;;15601:707;;;;;;;;:::o;11131:75::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10155:210::-;10246:4;9509:7;:5;:7::i;:::-;9495:21;;:10;:21;;;9487:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;10263:22:::1;10269:7;10278:6;10263:5;:22::i;:::-;10319:7;10301:34;;10311:6;10301:34;10328:6;10301:34;;;;;;:::i;:::-;;;;;;;;10353:4;10346:11;;10155:210:::0;;;;;:::o;17257:399::-;17369:4;17386:12;17489:16;17524:10;17425:110;;;;;;;;;:::i;:::-;;;;;;;;;;;;;17401:135;;;;;;17386:150;;17547:14;17564:24;17574:4;17580:1;17583;17586;17564:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17547:41;;17625:1;17607:20;;:6;:20;;;;:40;;;;;17641:6;17631:16;;:6;:16;;;17607:40;17599:49;;;;17257:399;;;;;;;:::o;17668:290::-;17786:4;17803:12;17818:20;17827:10;17818:8;:20::i;:::-;17803:35;;17849:14;17866:24;17876:4;17882:1;17885;17888;17866:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17849:41;;17927:1;17909:20;;:6;:20;;;;:40;;;;;17943:6;17933:16;;:6;:16;;;17909:40;17901:49;;;;17668:290;;;;;;;:::o;13259:270::-;13354:1;13335:21;;:7;:21;;;;13327:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13429:6;13407:9;:18;13417:7;13407:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13462:6;13446:12;;:22;;;;;;;:::i;:::-;;;;;;;;13510:1;13484:37;;13493:7;13484:37;;;13514:6;13484:37;;;;;;:::i;:::-;;;;;;;;13259:270;;:::o;12659:268::-;12754:1;12735:21;;:7;:21;;;;12727:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12821:6;12805:12;;:22;;;;;;;:::i;:::-;;;;;;;;12860:6;12838:9;:18;12848:7;12838:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;12903:7;12882:37;;12899:1;12882:37;;;12912:6;12882:37;;;;;;:::i;:::-;;;;;;;;12659:268;;:::o;18036:159::-;18091:7;18181:4;18128:58;;;;;;;;:::i;:::-;;;;;;;;;;;;;18118:69;;;;;;18111:76;;18036:159;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:137::-;;237:6;231:13;222:22;;253:30;277:5;253:30;:::i;:::-;212:77;;;;:::o;295:139::-;;379:6;366:20;357:29;;395:33;422:5;395:33;:::i;:::-;347:87;;;;:::o;453:351::-;;;570:3;563:4;555:6;551:17;547:27;537:2;;588:1;585;578:12;537:2;624:6;611:20;601:30;;654:18;646:6;643:30;640:2;;;686:1;683;676:12;640:2;723:4;715:6;711:17;699:29;;777:3;769:4;761:6;757:17;747:8;743:32;740:41;737:2;;;794:1;791;784:12;737:2;527:277;;;;;:::o;810:139::-;;894:6;881:20;872:29;;910:33;937:5;910:33;:::i;:::-;862:87;;;;:::o;955:135::-;;1037:6;1024:20;1015:29;;1053:31;1078:5;1053:31;:::i;:::-;1005:85;;;;:::o;1096:262::-;;1204:2;1192:9;1183:7;1179:23;1175:32;1172:2;;;1220:1;1217;1210:12;1172:2;1263:1;1288:53;1333:7;1324:6;1313:9;1309:22;1288:53;:::i;:::-;1278:63;;1234:117;1162:196;;;;:::o;1364:407::-;;;1489:2;1477:9;1468:7;1464:23;1460:32;1457:2;;;1505:1;1502;1495:12;1457:2;1548:1;1573:53;1618:7;1609:6;1598:9;1594:22;1573:53;:::i;:::-;1563:63;;1519:117;1675:2;1701:53;1746:7;1737:6;1726:9;1722:22;1701:53;:::i;:::-;1691:63;;1646:118;1447:324;;;;;:::o;1777:552::-;;;;1919:2;1907:9;1898:7;1894:23;1890:32;1887:2;;;1935:1;1932;1925:12;1887:2;1978:1;2003:53;2048:7;2039:6;2028:9;2024:22;2003:53;:::i;:::-;1993:63;;1949:117;2105:2;2131:53;2176:7;2167:6;2156:9;2152:22;2131:53;:::i;:::-;2121:63;;2076:118;2233:2;2259:53;2304:7;2295:6;2284:9;2280:22;2259:53;:::i;:::-;2249:63;;2204:118;1877:452;;;;;:::o;2335:1132::-;;;;;;;;2543:3;2531:9;2522:7;2518:23;2514:33;2511:2;;;2560:1;2557;2550:12;2511:2;2603:1;2628:53;2673:7;2664:6;2653:9;2649:22;2628:53;:::i;:::-;2618:63;;2574:117;2730:2;2756:53;2801:7;2792:6;2781:9;2777:22;2756:53;:::i;:::-;2746:63;;2701:118;2858:2;2884:53;2929:7;2920:6;2909:9;2905:22;2884:53;:::i;:::-;2874:63;;2829:118;2986:2;3012:53;3057:7;3048:6;3037:9;3033:22;3012:53;:::i;:::-;3002:63;;2957:118;3114:3;3141:51;3184:7;3175:6;3164:9;3160:22;3141:51;:::i;:::-;3131:61;;3085:117;3241:3;3268:53;3313:7;3304:6;3293:9;3289:22;3268:53;:::i;:::-;3258:63;;3212:119;3370:3;3397:53;3442:7;3433:6;3422:9;3418:22;3397:53;:::i;:::-;3387:63;;3341:119;2501:966;;;;;;;;;;:::o;3473:407::-;;;3598:2;3586:9;3577:7;3573:23;3569:32;3566:2;;;3614:1;3611;3604:12;3566:2;3657:1;3682:53;3727:7;3718:6;3707:9;3703:22;3682:53;:::i;:::-;3672:63;;3628:117;3784:2;3810:53;3855:7;3846:6;3835:9;3831:22;3810:53;:::i;:::-;3800:63;;3755:118;3556:324;;;;;:::o;3886:683::-;;;;;4047:2;4035:9;4026:7;4022:23;4018:32;4015:2;;;4063:1;4060;4053:12;4015:2;4106:1;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;:::i;:::-;4121:63;;4077:117;4233:2;4259:53;4304:7;4295:6;4284:9;4280:22;4259:53;:::i;:::-;4249:63;;4204:118;4389:2;4378:9;4374:18;4361:32;4420:18;4412:6;4409:30;4406:2;;;4452:1;4449;4442:12;4406:2;4488:64;4544:7;4535:6;4524:9;4520:22;4488:64;:::i;:::-;4470:82;;;;4332:230;4005:564;;;;;;;:::o;4575:278::-;;4691:2;4679:9;4670:7;4666:23;4662:32;4659:2;;;4707:1;4704;4697:12;4659:2;4750:1;4775:61;4828:7;4819:6;4808:9;4804:22;4775:61;:::i;:::-;4765:71;;4721:125;4649:204;;;;:::o;4859:552::-;;;;5001:2;4989:9;4980:7;4976:23;4972:32;4969:2;;;5017:1;5014;5007:12;4969:2;5060:1;5085:53;5130:7;5121:6;5110:9;5106:22;5085:53;:::i;:::-;5075:63;;5031:117;5187:2;5213:53;5258:7;5249:6;5238:9;5234:22;5213:53;:::i;:::-;5203:63;;5158:118;5315:2;5341:53;5386:7;5377:6;5366:9;5362:22;5341:53;:::i;:::-;5331:63;;5286:118;4959:452;;;;;:::o;5417:407::-;;;5542:2;5530:9;5521:7;5517:23;5513:32;5510:2;;;5558:1;5555;5548:12;5510:2;5601:1;5626:53;5671:7;5662:6;5651:9;5647:22;5626:53;:::i;:::-;5616:63;;5572:117;5728:2;5754:53;5799:7;5790:6;5779:9;5775:22;5754:53;:::i;:::-;5744:63;;5699:118;5500:324;;;;;:::o;5830:118::-;5917:24;5935:5;5917:24;:::i;:::-;5912:3;5905:37;5895:53;;:::o;5954:109::-;6035:21;6050:5;6035:21;:::i;:::-;6030:3;6023:34;6013:50;;:::o;6069:118::-;6156:24;6174:5;6156:24;:::i;:::-;6151:3;6144:37;6134:53;;:::o;6193:157::-;6298:45;6318:24;6336:5;6318:24;:::i;:::-;6298:45;:::i;:::-;6293:3;6286:58;6276:74;;:::o;6378:301::-;;6495:70;6558:6;6553:3;6495:70;:::i;:::-;6488:77;;6575:43;6611:6;6606:3;6599:5;6575:43;:::i;:::-;6643:29;6665:6;6643:29;:::i;:::-;6638:3;6634:39;6627:46;;6478:201;;;;;:::o;6685:364::-;;6801:39;6834:5;6801:39;:::i;:::-;6856:71;6920:6;6915:3;6856:71;:::i;:::-;6849:78;;6936:52;6981:6;6976:3;6969:4;6962:5;6958:16;6936:52;:::i;:::-;7013:29;7035:6;7013:29;:::i;:::-;7008:3;7004:39;6997:46;;6777:272;;;;;:::o;7055:402::-;;7236:85;7318:2;7313:3;7236:85;:::i;:::-;7229:92;;7330:93;7419:3;7330:93;:::i;:::-;7448:2;7443:3;7439:12;7432:19;;7219:238;;;:::o;7463:400::-;;7644:84;7726:1;7721:3;7644:84;:::i;:::-;7637:91;;7737:93;7826:3;7737:93;:::i;:::-;7855:1;7850:3;7846:11;7839:18;;7627:236;;;:::o;7869:366::-;;8032:67;8096:2;8091:3;8032:67;:::i;:::-;8025:74;;8108:93;8197:3;8108:93;:::i;:::-;8226:2;8221:3;8217:12;8210:19;;8015:220;;;:::o;8241:366::-;;8404:67;8468:2;8463:3;8404:67;:::i;:::-;8397:74;;8480:93;8569:3;8480:93;:::i;:::-;8598:2;8593:3;8589:12;8582:19;;8387:220;;;:::o;8613:366::-;;8776:67;8840:2;8835:3;8776:67;:::i;:::-;8769:74;;8852:93;8941:3;8852:93;:::i;:::-;8970:2;8965:3;8961:12;8954:19;;8759:220;;;:::o;8985:366::-;;9148:67;9212:2;9207:3;9148:67;:::i;:::-;9141:74;;9224:93;9313:3;9224:93;:::i;:::-;9342:2;9337:3;9333:12;9326:19;;9131:220;;;:::o;9357:366::-;;9520:67;9584:2;9579:3;9520:67;:::i;:::-;9513:74;;9596:93;9685:3;9596:93;:::i;:::-;9714:2;9709:3;9705:12;9698:19;;9503:220;;;:::o;9729:366::-;;9892:67;9956:2;9951:3;9892:67;:::i;:::-;9885:74;;9968:93;10057:3;9968:93;:::i;:::-;10086:2;10081:3;10077:12;10070:19;;9875:220;;;:::o;10101:366::-;;10264:67;10328:2;10323:3;10264:67;:::i;:::-;10257:74;;10340:93;10429:3;10340:93;:::i;:::-;10458:2;10453:3;10449:12;10442:19;;10247:220;;;:::o;10473:366::-;;10636:67;10700:2;10695:3;10636:67;:::i;:::-;10629:74;;10712:93;10801:3;10712:93;:::i;:::-;10830:2;10825:3;10821:12;10814:19;;10619:220;;;:::o;10845:118::-;10932:24;10950:5;10932:24;:::i;:::-;10927:3;10920:37;10910:53;;:::o;10969:112::-;11052:22;11068:5;11052:22;:::i;:::-;11047:3;11040:35;11030:51;;:::o;11087:522::-;;11322:148;11466:3;11322:148;:::i;:::-;11315:155;;11480:75;11551:3;11542:6;11480:75;:::i;:::-;11580:2;11575:3;11571:12;11564:19;;11600:3;11593:10;;11304:305;;;;:::o;11615:663::-;;11878:148;12022:3;11878:148;:::i;:::-;11871:155;;12036:75;12107:3;12098:6;12036:75;:::i;:::-;12136:2;12131:3;12127:12;12120:19;;12149:75;12220:3;12211:6;12149:75;:::i;:::-;12249:2;12244:3;12240:12;12233:19;;12269:3;12262:10;;11860:418;;;;;:::o;12284:222::-;;12415:2;12404:9;12400:18;12392:26;;12428:71;12496:1;12485:9;12481:17;12472:6;12428:71;:::i;:::-;12382:124;;;;:::o;12512:549::-;;12727:2;12716:9;12712:18;12704:26;;12740:71;12808:1;12797:9;12793:17;12784:6;12740:71;:::i;:::-;12821:72;12889:2;12878:9;12874:18;12865:6;12821:72;:::i;:::-;12940:9;12934:4;12930:20;12925:2;12914:9;12910:18;12903:48;12968:86;13049:4;13040:6;13032;12968:86;:::i;:::-;12960:94;;12694:367;;;;;;;:::o;13067:210::-;;13192:2;13181:9;13177:18;13169:26;;13205:65;13267:1;13256:9;13252:17;13243:6;13205:65;:::i;:::-;13159:118;;;;:::o;13283:222::-;;13414:2;13403:9;13399:18;13391:26;;13427:71;13495:1;13484:9;13480:17;13471:6;13427:71;:::i;:::-;13381:124;;;;:::o;13511:775::-;;13782:3;13771:9;13767:19;13759:27;;13796:71;13864:1;13853:9;13849:17;13840:6;13796:71;:::i;:::-;13877:72;13945:2;13934:9;13930:18;13921:6;13877:72;:::i;:::-;13959;14027:2;14016:9;14012:18;14003:6;13959:72;:::i;:::-;14041;14109:2;14098:9;14094:18;14085:6;14041:72;:::i;:::-;14123:73;14191:3;14180:9;14176:19;14167:6;14123:73;:::i;:::-;14206;14274:3;14263:9;14259:19;14250:6;14206:73;:::i;:::-;13749:537;;;;;;;;;:::o;14292:545::-;;14503:3;14492:9;14488:19;14480:27;;14517:71;14585:1;14574:9;14570:17;14561:6;14517:71;:::i;:::-;14598:68;14662:2;14651:9;14647:18;14638:6;14598:68;:::i;:::-;14676:72;14744:2;14733:9;14729:18;14720:6;14676:72;:::i;:::-;14758;14826:2;14815:9;14811:18;14802:6;14758:72;:::i;:::-;14470:367;;;;;;;:::o;14843:313::-;;14994:2;14983:9;14979:18;14971:26;;15043:9;15037:4;15033:20;15029:1;15018:9;15014:17;15007:47;15071:78;15144:4;15135:6;15071:78;:::i;:::-;15063:86;;14961:195;;;;:::o;15162:419::-;;15366:2;15355:9;15351:18;15343:26;;15415:9;15409:4;15405:20;15401:1;15390:9;15386:17;15379:47;15443:131;15569:4;15443:131;:::i;:::-;15435:139;;15333:248;;;:::o;15587:419::-;;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;;15758:248;;;:::o;16012:419::-;;16216:2;16205:9;16201:18;16193:26;;16265:9;16259:4;16255:20;16251:1;16240:9;16236:17;16229:47;16293:131;16419:4;16293:131;:::i;:::-;16285:139;;16183:248;;;:::o;16437:419::-;;16641:2;16630:9;16626:18;16618:26;;16690:9;16684:4;16680:20;16676:1;16665:9;16661:17;16654:47;16718:131;16844:4;16718:131;:::i;:::-;16710:139;;16608:248;;;:::o;16862:419::-;;17066:2;17055:9;17051:18;17043:26;;17115:9;17109:4;17105:20;17101:1;17090:9;17086:17;17079:47;17143:131;17269:4;17143:131;:::i;:::-;17135:139;;17033:248;;;:::o;17287:419::-;;17491:2;17480:9;17476:18;17468:26;;17540:9;17534:4;17530:20;17526:1;17515:9;17511:17;17504:47;17568:131;17694:4;17568:131;:::i;:::-;17560:139;;17458:248;;;:::o;17712:419::-;;17916:2;17905:9;17901:18;17893:26;;17965:9;17959:4;17955:20;17951:1;17940:9;17936:17;17929:47;17993:131;18119:4;17993:131;:::i;:::-;17985:139;;17883:248;;;:::o;18137:419::-;;18341:2;18330:9;18326:18;18318:26;;18390:9;18384:4;18380:20;18376:1;18365:9;18361:17;18354:47;18418:131;18544:4;18418:131;:::i;:::-;18410:139;;18308:248;;;:::o;18562:222::-;;18693:2;18682:9;18678:18;18670:26;;18706:71;18774:1;18763:9;18759:17;18750:6;18706:71;:::i;:::-;18660:124;;;;:::o;18790:214::-;;18917:2;18906:9;18902:18;18894:26;;18930:67;18994:1;18983:9;18979:17;18970:6;18930:67;:::i;:::-;18884:120;;;;:::o;19010:99::-;;19096:5;19090:12;19080:22;;19069:40;;;:::o;19115:168::-;;19232:6;19227:3;19220:19;19272:4;19267:3;19263:14;19248:29;;19210:73;;;;:::o;19289:169::-;;19407:6;19402:3;19395:19;19447:4;19442:3;19438:14;19423:29;;19385:73;;;;:::o;19464:148::-;;19603:3;19588:18;;19578:34;;;;:::o;19618:305::-;;19677:20;19695:1;19677:20;:::i;:::-;19672:25;;19711:20;19729:1;19711:20;:::i;:::-;19706:25;;19865:1;19797:66;19793:74;19790:1;19787:81;19784:2;;;19871:18;;:::i;:::-;19784:2;19915:1;19912;19908:9;19901:16;;19662:261;;;;:::o;19929:191::-;;19989:20;20007:1;19989:20;:::i;:::-;19984:25;;20023:20;20041:1;20023:20;:::i;:::-;20018:25;;20062:1;20059;20056:8;20053:2;;;20067:18;;:::i;:::-;20053:2;20112:1;20109;20105:9;20097:17;;19974:146;;;;:::o;20126:96::-;;20192:24;20210:5;20192:24;:::i;:::-;20181:35;;20171:51;;;:::o;20228:90::-;;20305:5;20298:13;20291:21;20280:32;;20270:48;;;:::o;20324:77::-;;20390:5;20379:16;;20369:32;;;:::o;20407:126::-;;20484:42;20477:5;20473:54;20462:65;;20452:81;;;:::o;20539:77::-;;20605:5;20594:16;;20584:32;;;:::o;20622:86::-;;20697:4;20690:5;20686:16;20675:27;;20665:43;;;:::o;20714:154::-;20798:6;20793:3;20788;20775:30;20860:1;20851:6;20846:3;20842:16;20835:27;20765:103;;;:::o;20874:307::-;20942:1;20952:113;20966:6;20963:1;20960:13;20952:113;;;21051:1;21046:3;21042:11;21036:18;21032:1;21027:3;21023:11;21016:39;20988:2;20985:1;20981:10;20976:15;;20952:113;;;21083:6;21080:1;21077:13;21074:2;;;21163:1;21154:6;21149:3;21145:16;21138:27;21074:2;20923:258;;;;:::o;21187:320::-;;21268:1;21262:4;21258:12;21248:22;;21315:1;21309:4;21305:12;21336:18;21326:2;;21392:4;21384:6;21380:17;21370:27;;21326:2;21454;21446:6;21443:14;21423:18;21420:38;21417:2;;;21473:18;;:::i;:::-;21417:2;21238:269;;;;:::o;21513:233::-;;21575:24;21593:5;21575:24;:::i;:::-;21566:33;;21621:66;21614:5;21611:77;21608:2;;;21691:18;;:::i;:::-;21608:2;21738:1;21731:5;21727:13;21720:20;;21556:190;;;:::o;21752:79::-;;21820:5;21809:16;;21799:32;;;:::o;21837:180::-;21885:77;21882:1;21875:88;21982:4;21979:1;21972:15;22006:4;22003:1;21996:15;22023:180;22071:77;22068:1;22061:88;22168:4;22165:1;22158:15;22192:4;22189:1;22182:15;22209:102;;22301:2;22297:7;22292:2;22285:5;22281:14;22277:28;22267:38;;22257:54;;;:::o;22317:214::-;22457:66;22453:1;22445:6;22441:14;22434:90;22423:108;:::o;22537:214::-;22677:66;22673:1;22665:6;22661:14;22654:90;22643:108;:::o;22757:179::-;22897:31;22893:1;22885:6;22881:14;22874:55;22863:73;:::o;22942:172::-;23082:24;23078:1;23070:6;23066:14;23059:48;23048:66;:::o;23120:182::-;23260:34;23256:1;23248:6;23244:14;23237:58;23226:76;:::o;23308:160::-;23448:12;23444:1;23436:6;23432:14;23425:36;23414:54;:::o;23474:220::-;23614:34;23610:1;23602:6;23598:14;23591:58;23683:3;23678:2;23670:6;23666:15;23659:28;23580:114;:::o;23700:220::-;23840:34;23836:1;23828:6;23824:14;23817:58;23909:3;23904:2;23896:6;23892:15;23885:28;23806:114;:::o;23926:181::-;24066:33;24062:1;24054:6;24050:14;24043:57;24032:75;:::o;24113:226::-;24253:34;24249:1;24241:6;24237:14;24230:58;24322:9;24317:2;24309:6;24305:15;24298:34;24219:120;:::o;24345:122::-;24418:24;24436:5;24418:24;:::i;:::-;24411:5;24408:35;24398:2;;24457:1;24454;24447:12;24398:2;24388:79;:::o;24473:116::-;24543:21;24558:5;24543:21;:::i;:::-;24536:5;24533:32;24523:2;;24579:1;24576;24569:12;24523:2;24513:76;:::o;24595:122::-;24668:24;24686:5;24668:24;:::i;:::-;24661:5;24658:35;24648:2;;24707:1;24704;24697:12;24648:2;24638:79;:::o;24723:122::-;24796:24;24814:5;24796:24;:::i;:::-;24789:5;24786:35;24776:2;;24835:1;24832;24825:12;24776:2;24766:79;:::o;24851:118::-;24922:22;24938:5;24922:22;:::i;:::-;24915:5;24912:33;24902:2;;24959:1;24956;24949:12;24902:2;24892:77;:::o

Swarm Source

ipfs://16fb8ee802446d7d58ac13b673724a1c0b1dbcf47da480579ef04e57773d2ee8
Loading