Contract 0x74b23882a30290451A17c44f4F05243b6b58C76d 14

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9bbe1f8b4e630a783ab8fdada57416512325110a5721e24c4d8e363f342af85bApprove551304002023-02-05 10:58:3911 mins ago0x70ad81d18f2838b8650d88740d8e337032c9baac IN  Wrapped Ether0 FTM0.003542160063
0xf32fe6b8a330ee8918729be5168806f6625e18ae897c00341bf61fd630e6d0b5Approve551303222023-02-05 10:56:4413 mins ago0xca7fa71073504a399383aa5d6b596378ba6bf0d4 IN  Wrapped Ether0 FTM0.003358969388
0xa428d99e754eaf4df3b2a61332d3d62e99bb72d0b265a330b1640f63fb916f93Approve551286192023-02-05 10:23:5845 mins ago0x564ef5adbfef8cd92081a5960cd7583ab03f93d5 IN  Wrapped Ether0 FTM0.003307400475
0x213f277acda3979646b942d0298cda5a7aac9a1648273fe0a3c8f7746922b4d3Approve551281552023-02-05 10:14:4655 mins ago0x3b59c26561d86c3ec6dcd9e3ed3587c0e08a3d2d IN  Wrapped Ether0 FTM0.003366601275
0x40b7c4d66922678aff4f0669aca2a216425ab7c089dceadae376191d6760edfeApprove551263112023-02-05 9:38:581 hr 30 mins ago0xcb128ea7d057e02f26dcf6dcac00eaa5ab5deeb2 IN  Wrapped Ether0 FTM0.005415005
0xe6aeee3f77fde04d658ce4eeeda876d2cfca3b162eb528c1e5eef7230a6ca024Approve551254622023-02-05 9:21:081 hr 48 mins ago0x2309e84fcf0909dd65d28f7836f972c126aca997 IN  Wrapped Ether0 FTM0.00375362149
0xd3e756672fc82276883483880f2824740992737ae03516c7298583afe46715ebApprove551250372023-02-05 9:12:101 hr 57 mins ago0x37818e06fa4805010b3fc0b72c7c2d4cd333567f IN  Wrapped Ether0 FTM0.004026843609
0xfc196fef0a5770f186278dd4633ed7543854cf77ed47d94e31cdb9b0f40be0b0Swapout551245802023-02-05 9:01:322 hrs 8 mins ago0x0de5599bfe6e03381b4234a429e1cd66957b35a9 IN  Wrapped Ether0 FTM0.002851997944
0x2d132ba952297ea29931034597e14c4dfa43a336f4712481e0e03d3d3994fce5Approve551239392023-02-05 8:48:412 hrs 21 mins ago0xb0eeb7df58d04172d197b2ebba138848e78ca52f IN  Wrapped Ether0 FTM0.004215274638
0xaa49e577d437e78a5f7fcbc16b3cd5bcada1050bede90d1246d712e450710a5eApprove551236922023-02-05 8:44:282 hrs 25 mins ago0x5147433a1eb7e40af096e455c101fc58d7f8c8d7 IN  Wrapped Ether0 FTM0.004221766172
0x089144346eb1314e28b261fc10ee680169e624279559e8c8a5f3a5332947fc6eTransfer551236822023-02-05 8:44:162 hrs 25 mins ago0x4280aebb039995e3561ea5aaca6ba984a36d3a16 IN  Wrapped Ether0 FTM0.002901326361
0x15a25ce210134a45eb9efcd2728045fba8109ebb828867c8375800fc53f05d18Approve551235552023-02-05 8:41:372 hrs 28 mins ago0xd08807f2e60f973b36a0b8be3b44c4fbc1443831 IN  Wrapped Ether0 FTM0.004802111492
0xa38eba989a7c88df3f9c6b04839e48b0cdf0e5b4af504019c2f5f02916943fa8Swapin551234262023-02-05 8:39:042 hrs 30 mins ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Wrapped Ether0 FTM0.005611095375
0x42d2ded9abb169694592d7562421f24f590fd8d1490d868e1cadc6570547c020Transfer551228262023-02-05 8:27:522 hrs 41 mins ago0x9021a2f42087bbf1ebb77639e010164bebd01e37 IN  Wrapped Ether0 FTM0.013960154544
0x50f8defeac3cccb1b67096049e612572cd0d09d2e60efc3df5f7035a4c2e70c0Approve551222032023-02-05 8:15:562 hrs 53 mins ago0x85b8583ca1abdea91481d3250b97bfad40eff450 IN  Wrapped Ether0 FTM0.005016470524
0x9624bf2cf1aee6b8c7f39c978c1bcc8cc221205105d308845844a29ead116ba6Approve551216572023-02-05 8:05:223 hrs 4 mins ago0xd9b49a81ee72af3c026a2c144c9ffd678a78c8b1 IN  Wrapped Ether0 FTM0.004782846737
0x64fc6ee6a17067db383efb252d5209fbd5ff975294c52a2afaaa21f0ccbcf1e3Approve551211542023-02-05 7:54:573 hrs 14 mins ago0x824995efc6b53c0d873391d25859312d139b722b IN  Wrapped Ether0 FTM0.004782873642
0x9c55edb63787c3e24805d760a5022bf35d8c0f24388e3f6d1eea23a2d96c2c09Approve551208072023-02-05 7:47:543 hrs 21 mins ago0x6088de18aaa2f6b174178ebf6e35091e07eb3078 IN  Wrapped Ether0 FTM0.004709716241
0xab3f0b06d7688be563b2215d09665090a31cf474cc43c87941dfc87819fdb3eaApprove551206632023-02-05 7:44:423 hrs 25 mins ago0x6088de18aaa2f6b174178ebf6e35091e07eb3078 IN  Wrapped Ether0 FTM0.002857677522
0x5d8790658172f2b4bbf974c60571541d5f1dbcdf8959d3cfe5c02875e52a11b3Approve551206502023-02-05 7:44:263 hrs 25 mins ago0x6088de18aaa2f6b174178ebf6e35091e07eb3078 IN  Wrapped Ether0 FTM0.004571474533
0xd9939f9f0dfc8e1737b0915c8d275245161b5607d0e2d7517e24d3175d9cf9a2Approve551194782023-02-05 7:21:153 hrs 48 mins ago0x98098214ad5b1b08cc9d94e32f056e9a0de18110 IN  Wrapped Ether0 FTM0.004862410152
0x2f330805597b6c1a1e6d6c3f55339c3c5215926063f7b2f06b02fc50e725500fSwapout551182192023-02-05 6:55:194 hrs 14 mins ago0x62dee93750e642e03991e5537819f36a002c72b6 IN  Wrapped Ether0 FTM0.003462141625
0x1f7da668453d15b31852d24eba38fe77c21d3bfe13c0815f9bda532ff83b5e1aApprove551180612023-02-05 6:52:144 hrs 17 mins ago0x9542fd6e4fd46208b33e161a5acff4d3ce89136b IN  Wrapped Ether0 FTM0.046991
0xbb6c0d1a5e1b90c9f272ae2ea31d7e94a9b25b34bb06e23517dee870db4eef05Swapin551175882023-02-05 6:42:594 hrs 26 mins ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Wrapped Ether0 FTM0.005862979676
0xefd856952307e37efc1e32fe31c86f33babbedf6bdcba46d36ea896dc10744e4Approve551171132023-02-05 6:33:174 hrs 36 mins ago0x8e2f7d5aaae5abbd5052acb74019b9b11cb74349 IN  Wrapped Ether0 FTM0.004101408512
[ Download CSV Export 

OVERVIEW

wETH is "wrapped ETH".

Latest 4 internal transactions
[ Download CSV Export 
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 FtmScan.com 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
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.