ETH Price: $2,448.33 (+0.55%)

Contract

0x00000000009726632680FB29d3F7A9734E3010E2
 

Overview

ETH Balance

1.006149492167612166 ETH

ETH Value

$2,463.39 (@ $2,448.33/ETH)

Token Holdings

Transaction Hash
Method
Block
From
To
Fill Quote Eth T...98196522024-10-09 4:45:191 hr ago1728449119IN
0x00000000...34E3010E2
0.0678 ETH0.000000230.00091828
Fill Quote Token...98077962024-10-08 22:10:078 hrs ago1728425407IN
0x00000000...34E3010E2
0 ETH0.000000240.00098388
Fill Quote Token...98077732024-10-08 22:09:218 hrs ago1728425361IN
0x00000000...34E3010E2
0 ETH0.000000220.00099453
Fill Quote Token...98057722024-10-08 21:02:399 hrs ago1728421359IN
0x00000000...34E3010E2
0 ETH0.000000160.00066103
Fill Quote Token...98057092024-10-08 21:00:339 hrs ago1728421233IN
0x00000000...34E3010E2
0 ETH0.000000150.00066222
Fill Quote Token...98038572024-10-08 19:58:4910 hrs ago1728417529IN
0x00000000...34E3010E2
0 ETH0.000000240.00084534
Fill Quote Eth T...98038362024-10-08 19:58:0710 hrs ago1728417487IN
0x00000000...34E3010E2
0.0045 ETH0.000000240.00084693
Fill Quote Token...98031862024-10-08 19:36:2710 hrs ago1728416187IN
0x00000000...34E3010E2
0 ETH0.000000410.00100342
Fill Quote Token...97994992024-10-08 17:33:3312 hrs ago1728408813IN
0x00000000...34E3010E2
0 ETH0.000000380.00165553
Fill Quote Token...97932692024-10-08 14:05:5316 hrs ago1728396353IN
0x00000000...34E3010E2
0 ETH0.000000590.00207679
Fill Quote Eth T...97922132024-10-08 13:30:4116 hrs ago1728394241IN
0x00000000...34E3010E2
0.2 ETH0.000000540.00185843
Fill Quote Token...97817642024-10-08 7:42:2322 hrs ago1728373343IN
0x00000000...34E3010E2
0 ETH0.000000550.00196304
Fill Quote Token...97708682024-10-08 1:39:1128 hrs ago1728351551IN
0x00000000...34E3010E2
0 ETH0.000000310.00117379
Fill Quote Token...97707612024-10-08 1:35:3728 hrs ago1728351337IN
0x00000000...34E3010E2
0 ETH0.000000310.0011367
Fill Quote Token...97703662024-10-08 1:22:2729 hrs ago1728350547IN
0x00000000...34E3010E2
0 ETH0.000000240.00101483
Fill Quote Token...97692032024-10-08 0:43:4129 hrs ago1728348221IN
0x00000000...34E3010E2
0 ETH0.000000250.00106946
Fill Quote Token...97649432024-10-07 22:21:4132 hrs ago1728339701IN
0x00000000...34E3010E2
0 ETH0.000000310.00117576
Fill Quote Eth T...97638452024-10-07 21:45:0532 hrs ago1728337505IN
0x00000000...34E3010E2
0.0022 ETH0.00000030.00139231
Fill Quote Token...97623982024-10-07 20:56:5133 hrs ago1728334611IN
0x00000000...34E3010E2
0 ETH0.000000770.00268965
Fill Quote Eth T...97623642024-10-07 20:55:4333 hrs ago1728334543IN
0x00000000...34E3010E2
0.0045 ETH0.00000080.00276677
Fill Quote Token...97612742024-10-07 20:19:2334 hrs ago1728332363IN
0x00000000...34E3010E2
0 ETH0.000001050.00441807
Fill Quote Token...97605292024-10-07 19:54:3334 hrs ago1728330873IN
0x00000000...34E3010E2
0 ETH0.000000780.00342049
Fill Quote Token...97600072024-10-07 19:37:0934 hrs ago1728329829IN
0x00000000...34E3010E2
0 ETH0.000000470.0020141
Fill Quote Eth T...97582502024-10-07 18:38:3535 hrs ago1728326315IN
0x00000000...34E3010E2
0.00071102 ETH0.000000570.00259131
Fill Quote Token...97558752024-10-07 17:19:2537 hrs ago1728321565IN
0x00000000...34E3010E2
0 ETH0.000001840.00644827
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
98196522024-10-09 4:45:191 hr ago1728449119
0x00000000...34E3010E2
0.0672237 ETH
98057092024-10-08 21:00:339 hrs ago1728421233
0x00000000...34E3010E2
0.00111951 ETH
98057092024-10-08 21:00:339 hrs ago1728421233
0x00000000...34E3010E2
0.0011291 ETH
98038572024-10-08 19:58:4910 hrs ago1728417529
0x00000000...34E3010E2
0.00442062 ETH
98038572024-10-08 19:58:4910 hrs ago1728417529
0x00000000...34E3010E2
0.00445852 ETH
98038362024-10-08 19:58:0710 hrs ago1728417487
0x00000000...34E3010E2
0.00446175 ETH
97994992024-10-08 17:33:3312 hrs ago1728408813
0x00000000...34E3010E2
0.00095615 ETH
97994992024-10-08 17:33:3312 hrs ago1728408813
0x00000000...34E3010E2
0.00096434 ETH
97932692024-10-08 14:05:5316 hrs ago1728396353
0x00000000...34E3010E2
0.00043028 ETH
97932692024-10-08 14:05:5316 hrs ago1728396353
0x00000000...34E3010E2
0.00043397 ETH
97922132024-10-08 13:30:4116 hrs ago1728394241
0x00000000...34E3010E2
0.1983 ETH
97817642024-10-08 7:42:2322 hrs ago1728373343
0x00000000...34E3010E2
0.03484975 ETH
97817642024-10-08 7:42:2322 hrs ago1728373343
0x00000000...34E3010E2
0.03514851 ETH
97708682024-10-08 1:39:1128 hrs ago1728351551
0x00000000...34E3010E2
0.01579127 ETH
97708682024-10-08 1:39:1128 hrs ago1728351551
0x00000000...34E3010E2
0.01592664 ETH
97707612024-10-08 1:35:3728 hrs ago1728351337
0x00000000...34E3010E2
0.00021522 ETH
97707612024-10-08 1:35:3728 hrs ago1728351337
0x00000000...34E3010E2
0.00021707 ETH
97703662024-10-08 1:22:2729 hrs ago1728350547
0x00000000...34E3010E2
0.00021016 ETH
97703662024-10-08 1:22:2729 hrs ago1728350547
0x00000000...34E3010E2
0.00021196 ETH
97692032024-10-08 0:43:4129 hrs ago1728348221
0x00000000...34E3010E2
0.00094589 ETH
97692032024-10-08 0:43:4129 hrs ago1728348221
0x00000000...34E3010E2
0.000954 ETH
97649432024-10-07 22:21:4132 hrs ago1728339701
0x00000000...34E3010E2
0.03682954 ETH
97649432024-10-07 22:21:4132 hrs ago1728339701
0x00000000...34E3010E2
0.03714527 ETH
97638452024-10-07 21:45:0532 hrs ago1728337505
0x00000000...34E3010E2
0.0021813 ETH
97623982024-10-07 20:56:5133 hrs ago1728334611
0x00000000...34E3010E2
0.0044194 ETH
View All Internal Transactions

Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RainbowRouter

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at blastscan.io on 2024-03-26
*/

/*

                                                            ▐██▒           ███
                                            ,╓, ▄▄  ,▄▄▄,   .▄▄. ,╓, ▄▄▄   ██▌ ▄▄▄     ,▄▄▄,  ,╓╓   ╓╓   ,╓
                                            ██████ ███▀▀██⌐ ▐██⌐ ███▀▀███⌐ ████▀▀███ ╓██▀▀▀██▄`██▌ ▐██▌ ▐██
                                            ███    ▄▄█████▌ ▐██⌐ ██▌  ▐██▌ ██▌   ║██⌐███   ▓██ ╙██▄█▌██▄██⌐
                                            ██▌   ▐██▄▄███▌,▐██⌐ ██▌  ▐██▌ ███▓▄▄███ ╙██▄▄▄██▀  ║███¬╙███▌
                                            ╙╙└    ╙╙▀╙─╙▀▀└"╙╙` ╙╙└   ╙╙" ╙╙`╙╙▀▀└    ╙╙▀▀╙`    ╙╙└  ╙╙╙
                                            

        
                                            _," _   _"""ⁿ=-,  _
                                            ⌠            _    __"=.__
                                            ▐░......   _  _          "=._
                                            ▐░░░░░░░░░░░░░░░░.           "= _
                                            ╚╩╩╩╩╩╩δφφφφ░░░░░░░░░░░          >__
                                            ▐░░░░░░░░__ _ ╙╙╚╩φφ░░░░░░░        ^=_
                                            ▐░░░░░░░░░░░░░░░,░  `╙╠φ░░░░░░░       ⁿ
                                            ▐░░░░░░░░░░░░░░░░░░░░._ `╚Åφ░░░░░       " _
                                            ╚╠╠╠╠╠╠╠╬╬╬▒▒φ░░░░░░░░░░░░  ╙╠░░░░░       "
                                            ╚╝╝╝╝╝╝╝╬╬╬╠╢╬╠╬╠╬▒░░░░░░░░░░ "╚φ░░░░       ½_
                                            ▐░░░░░░░░░░;░╙╙╝╬╠╬╠╠▒▒░░░░░░░░_ ╚φ░░░░      "_
                                            ╚▒φφφ░░░░░░░░░░░░-╙╚╬╠╠╠╬▒░░░░░░░ `╠▒░░░░      ,
                                            ╞╬╬╬╠╠╠╬╬╬╬▒φ▒░░░░░░░╙╚╬╬╠╬▒▒░░░░░ .╙╠░░░░      ≥
                                            _▒░░░ΓΓ╙╙╙╚╩╬╠╬╠▒▒░░░░░░╙╬╬╠╬▒▒░░░░░' ╠▒░░░░     ≥
                                            `╙ⁿⁿ≈≈σ╓░ '╙╙╚╬╠╬▒░░░░░░╙╬╬╠╬▒░░░░░  ╠▒░░░░     [
                                                        _╙Θ░ ░╙╠╠╬╬▒░░░░░╬╠╠╠▒▒░░░░  ╠▒░░░░    '_
                                                        _╙φ░'╙╠╠╬▒░░░░░╟╠╠╠▒░░░░░ _╠▒░░░     ░_
                                                            _`φ ░╚╬╠╠▒░░░░║╠╠╠▒░░░░░.`╠░░░░     [
                                                            _╚░⌡╚╠╬╬▒░░░░╠╠╠╬▒░░░░░ ╠▒░░░░    ░
                                                                _╙░⌡╚╠╠╬▒░░░"▒╠╠╬▒░░░░ ⌠╠░░░░    ⌡_
                                                                ╠ ░╠╠╠╬▒░░░║╠╬╠╬▒░░░ _╠▒░░░     Γ
                                                                ▐░░░╠╠╠▒░░░╟╠╠╠╬▒░░░░ ╠▒░░░░    [
                                                                _░.░╠╠╠▒░░░▐╬╠╠╬▒░░░░[╠╬░░░░    │
                                                                _╙φ░╠╠╠╬▒░░▐╬╬╠╬╬▒░░░[╠╬░░░░  ░≥_
                                                                    ____ ____  __ _______ ____

    /$$$$$$                                           /$$$$$$                                                                /$$                        
    /$$__  $$                                         /$$__  $$                                                              | $$                        
    | $$  \__/ /$$  /$$  /$$  /$$$$$$   /$$$$$$       | $$  \ $$  /$$$$$$   /$$$$$$   /$$$$$$   /$$$$$$   /$$$$$$   /$$$$$$  /$$$$$$    /$$$$$$   /$$$$$$ 
    |  $$$$$$ | $$ | $$ | $$ |____  $$ /$$__  $$      | $$$$$$$$ /$$__  $$ /$$__  $$ /$$__  $$ /$$__  $$ /$$__  $$ |____  $$|_  $$_/   /$$__  $$ /$$__  $$
    \____  $$| $$ | $$ | $$  /$$$$$$$| $$  \ $$      | $$__  $$| $$  \ $$| $$  \ $$| $$  \__/| $$$$$$$$| $$  \ $$  /$$$$$$$  | $$    | $$  \ $$| $$  \__/
    /$$  \ $$| $$ | $$ | $$ /$$__  $$| $$  | $$      | $$  | $$| $$  | $$| $$  | $$| $$      | $$_____/| $$  | $$ /$$__  $$  | $$ /$$| $$  | $$| $$      
    |  $$$$$$/|  $$$$$/$$$$/|  $$$$$$$| $$$$$$$/      | $$  | $$|  $$$$$$$|  $$$$$$$| $$      |  $$$$$$$|  $$$$$$$|  $$$$$$$  |  $$$$/|  $$$$$$/| $$      
    \______/  \_____/\___/  \_______/| $$____/       |__/  |__/ \____  $$ \____  $$|__/       \_______/ \____  $$ \_______/   \___/   \______/ |__/      
                                    | $$                       /$$  \ $$ /$$  \ $$                     /$$  \ $$                                        
                                    | $$                      |  $$$$$$/|  $$$$$$/                    |  $$$$$$/                                        
                                    |__/                       \______/  \______/                      \______/                                         
                
     
*/

//SPDX-License-Identifier: GPL-3.0
pragma solidity =0.8.11;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*///////////////////////////////////////////////////////////////
                                  EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*///////////////////////////////////////////////////////////////
                             METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*///////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*///////////////////////////////////////////////////////////////
                             EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    bytes32 public constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*///////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*///////////////////////////////////////////////////////////////
                              ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*///////////////////////////////////////////////////////////////
                              EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            bytes32 digest = keccak256(
                abi.encodePacked(
                    "\x19\x01",
                    DOMAIN_SEPARATOR(),
                    keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
                )
            );

            address recoveredAddress = ecrecover(digest, v, r, s);

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/Rari-Capital/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @author Modified from Gnosis (https://github.com/gnosis/gp-v2-contracts/blob/main/src/contracts/libraries/GPv2SafeERC20.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
library SafeTransferLib {
    /*///////////////////////////////////////////////////////////////
                            ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool callStatus;

        assembly {
            // Transfer the ETH and store if it succeeded or not.
            callStatus := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(callStatus, "ETH_TRANSFER_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                           ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        ERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "from" argument.
            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 100 because the calldata length is 4 + 32 * 3.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 100, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "TRANSFER_FAILED");
    }

    function safeApprove(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool callStatus;

        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata to memory piece by piece:
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000) // Begin with the function selector.
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Mask and append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Finally append the "amount" argument. No mask as it's a full 32 byte value.

            // Call the token and store if it succeeded or not.
            // We use 68 because the calldata length is 4 + 32 * 2.
            callStatus := call(gas(), token, 0, freeMemoryPointer, 68, 0, 0)
        }

        require(didLastOptionalReturnCallSucceed(callStatus), "APPROVE_FAILED");
    }

    /*///////////////////////////////////////////////////////////////
                         INTERNAL HELPER LOGIC
    //////////////////////////////////////////////////////////////*/

    function didLastOptionalReturnCallSucceed(bool callStatus) private pure returns (bool success) {
        assembly {
            // Get how many bytes the call returned.
            let returnDataSize := returndatasize()

            // If the call reverted:
            if iszero(callStatus) {
                // Copy the revert message into memory.
                returndatacopy(0, 0, returnDataSize)

                // Revert with the same message.
                revert(0, returnDataSize)
            }

            switch returnDataSize
            case 32 {
                // Copy the return data into memory.
                returndatacopy(0, 0, returnDataSize)

                // Set success to whether it returned true.
                success := iszero(iszero(mload(0)))
            }
            case 0 {
                // There was no return data.
                success := 1
            }
            default {
                // It returned some malformed input.
                success := 0
            }
        }
    }
}

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

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

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

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

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

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

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

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

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

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

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

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

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

// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/draft-IERC20Permit.sol)

/**
 * @dev Interface of the ERC20 Permit extension allowing approvals to be made via signatures, as defined in
 * https://eips.ethereum.org/EIPS/eip-2612[EIP-2612].
 *
 * Adds the {permit} method, which can be used to change an account's ERC20 allowance (see {IERC20-allowance}) by
 * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't
 * need to send a transaction, and thus is not required to hold Ether at all.
 */
interface IERC20Permit {
    /**
     * @dev Sets `value` 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:
     *
     * - `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 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    /**
     * @dev Returns the current 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 Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.
     */
    // solhint-disable-next-line func-name-mixedcase
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

interface IERC2612 is IERC20Metadata, IERC20Permit {
    function _nonces(address owner) external view returns (uint256);

    function version() external view returns (string memory);
}

/// @title Interface for permit
/// @notice Interface used by DAI/CHAI for permit
interface IERC20PermitAllowed {
    /// @notice Approve the spender to spend some tokens via the holder signature
    /// @dev This is the permit interface used by DAI and CHAI
    /// @param holder The address of the token holder, the token owner
    /// @param spender The address of the token spender
    /// @param nonce The holder's nonce, increases at each call to permit
    /// @param expiry The timestamp at which the permit is no longer valid
    /// @param allowed Boolean that sets approval amount, true for type(uint256).max and false for 0
    /// @param v Must produce valid secp256k1 signature from the holder along with `r` and `s`
    /// @param r Must produce valid secp256k1 signature from the holder along with `v` and `s`
    /// @param s Must produce valid secp256k1 signature from the holder along with `r` and `v`
    function permit(
        address holder,
        address spender,
        uint256 nonce,
        uint256 expiry,
        bool allowed,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

interface IDAI is IERC20Metadata, IERC20PermitAllowed {
    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function version() external view returns (string memory);
}

/// @title PermitHelper
/// @dev Helper methods for using ERC20 Permit (ERC2612 or DAI/CHAI like)
library PermitHelper {
    struct Permit {
        uint256 value;
        uint256 nonce;
        uint256 deadline;
        bool isDaiStylePermit;
        uint8 v;
        bytes32 r;
        bytes32 s;
    }

    /// @dev permit method helper that will handle both known implementations
    // DAI vs ERC2612 tokens
    /// @param permitData bytes containing the encoded permit signature
    /// @param tokenAddress address of the token that will be permitted
    /// @param holder address that holds the tokens to be permitted
    /// @param spender address that will be permitted to spend the tokens
    function permit(
        Permit memory permitData,
        address tokenAddress,
        address holder,
        address spender
    ) internal {
        if (permitData.isDaiStylePermit) {
            IDAI(tokenAddress).permit(
                holder,
                spender,
                permitData.nonce,
                permitData.deadline,
                true,
                permitData.v,
                permitData.r,
                permitData.s
            );
        } else {
            IERC2612(tokenAddress).permit(
                holder,
                spender,
                permitData.value,
                permitData.deadline,
                permitData.v,
                permitData.r,
                permitData.s
            );
        }
    }
}

/// @title Rainbow base aggregator contract
contract BaseAggregator {
    /// @dev Used to prevent re-entrancy
    uint256 internal status;

    /// @dev Set of allowed swapTargets.
    mapping(address => bool) public swapTargets;

    /// @dev modifier that prevents reentrancy attacks on specific methods
    modifier nonReentrant() {
        // On the first call to nonReentrant, status will be 1
        require(status != 2, "NON_REENTRANT");

        // Any calls to nonReentrant after this point will fail
        status = 2;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        status = 1;
    }

    /// @dev modifier that ensures only approved targets can be called
    modifier onlyApprovedTarget(address target) {
        require(swapTargets[target], "TARGET_NOT_AUTH");
        _;
    }

    /** EXTERNAL **/

    /// @param buyTokenAddress the address of token that the user should receive
    /// @param target the address of the aggregator contract that will exec the swap
    /// @param swapCallData the calldata that will be passed to the aggregator contract
    /// @param feeAmount the amount of ETH that we will take as a fee
    function fillQuoteEthToToken(
        address buyTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 feeAmount
    ) external payable nonReentrant onlyApprovedTarget(target) {
        // 1 - Get the initial balances
        uint256 initialTokenBalance = ERC20(buyTokenAddress).balanceOf(
            address(this)
        );
        uint256 initialEthAmount = address(this).balance - msg.value;
        uint256 sellAmount = msg.value - feeAmount;

        // 2 - Call the encoded swap function call on the contract at `target`,
        // passing along any ETH attached to this function call to cover protocol fees
        // minus our fees, which are kept in this contract
        (bool success, bytes memory res) = target.call{value: sellAmount}(
            swapCallData
        );

        // Get the revert message of the call and revert with it if the call failed
        if (!success) {
            assembly {
                let returndata_size := mload(res)
                revert(add(32, res), returndata_size)
            }
        }

        // 3 - Make sure we received the tokens
        {
            uint256 finalTokenBalance = ERC20(buyTokenAddress).balanceOf(
                address(this)
            );
            require(initialTokenBalance < finalTokenBalance, "NO_TOKENS");
        }

        // 4 - Send the received tokens back to the user
        SafeTransferLib.safeTransfer(
            ERC20(buyTokenAddress),
            msg.sender,
            ERC20(buyTokenAddress).balanceOf(address(this)) -
                initialTokenBalance
        );

        // 5 - Return the remaining ETH to the user (if any)
        {
            uint256 finalEthAmount = address(this).balance - feeAmount;
            if (finalEthAmount > initialEthAmount) {
                SafeTransferLib.safeTransferETH(
                    msg.sender,
                    finalEthAmount - initialEthAmount
                );
            }
        }
    }

    /// @param sellTokenAddress the address of token that the user is selling
    /// @param buyTokenAddress the address of token that the user should receive
    /// @param target the address of the aggregator contract that will exec the swap
    /// @param swapCallData the calldata that will be passed to the aggregator contract
    /// @param sellAmount the amount of tokens that the user is selling
    /// @param feeAmount the amount of the tokens to sell that we will take as a fee
    function fillQuoteTokenToToken(
        address sellTokenAddress,
        address buyTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feeAmount
    ) external payable nonReentrant onlyApprovedTarget(target) {
        _fillQuoteTokenToToken(
            sellTokenAddress,
            buyTokenAddress,
            target,
            swapCallData,
            sellAmount,
            feeAmount
        );
    }

    /// @dev method that executes ERC20 to ERC20 token swaps with the ability to take a fee from the input
    // and accepts a signature to use permit, so the user doesn't have to make an previous approval transaction
    /// @param sellTokenAddress the address of token that the user is selling
    /// @param buyTokenAddress the address of token that the user should receive
    /// @param target the address of the aggregator contract that will exec the swap
    /// @param swapCallData the calldata that will be passed to the aggregator contract
    /// @param sellAmount the amount of tokens that the user is selling
    /// @param feeAmount the amount of the tokens to sell that we will take as a fee
    /// @param permitData struct containing the value, nonce, deadline, v, r and s values of the permit data
    function fillQuoteTokenToTokenWithPermit(
        address sellTokenAddress,
        address buyTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feeAmount,
        PermitHelper.Permit calldata permitData
    ) external payable nonReentrant onlyApprovedTarget(target) {
        // 1 - Apply permit
        PermitHelper.permit(
            permitData,
            sellTokenAddress,
            msg.sender,
            address(this)
        );

        //2 - Call fillQuoteTokenToToken
        _fillQuoteTokenToToken(
            sellTokenAddress,
            buyTokenAddress,
            target,
            swapCallData,
            sellAmount,
            feeAmount
        );
    }

    /// @dev method that executes ERC20 to ETH token swaps with the ability to take a fee from the output
    /// @param sellTokenAddress the address of token that the user is selling
    /// @param target the address of the aggregator contract that will exec the swap
    /// @param swapCallData the calldata that will be passed to the aggregator contract
    /// @param sellAmount the amount of tokens that the user is selling
    /// @param feePercentageBasisPoints the amount of ETH that we will take as a fee in 1e18 basis points (basis points with 4 decimals plus 14 extra decimals of precision)
    function fillQuoteTokenToEth(
        address sellTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feePercentageBasisPoints
    ) external payable nonReentrant onlyApprovedTarget(target) {
        _fillQuoteTokenToEth(
            sellTokenAddress,
            target,
            swapCallData,
            sellAmount,
            feePercentageBasisPoints
        );
    }

    /// @dev method that executes ERC20 to ETH token swaps with the ability to take a fee from the output
    // and accepts a signature to use permit, so the user doesn't have to make an previous approval transaction
    /// @param sellTokenAddress the address of token that the user is selling
    /// @param target the address of the aggregator contract that will exec the swap
    /// @param swapCallData the calldata that will be passed to the aggregator contract
    /// @param sellAmount the amount of tokens that the user is selling
    /// @param feePercentageBasisPoints the amount of ETH that we will take as a fee in 1e18 basis points (basis points with 4 decimals plus 14 extra decimals of precision)
    /// @param permitData struct containing the amount, nonce, deadline, v, r and s values of the permit data
    function fillQuoteTokenToEthWithPermit(
        address sellTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feePercentageBasisPoints,
        PermitHelper.Permit calldata permitData
    ) external payable nonReentrant onlyApprovedTarget(target) {
        // 1 - Apply permit
        PermitHelper.permit(
            permitData,
            sellTokenAddress,
            msg.sender,
            address(this)
        );

        // 2 - call fillQuoteTokenToEth
        _fillQuoteTokenToEth(
            sellTokenAddress,
            target,
            swapCallData,
            sellAmount,
            feePercentageBasisPoints
        );
    }

    /** INTERNAL **/

    /// @dev internal method that executes ERC20 to ETH token swaps with the ability to take a fee from the output
    function _fillQuoteTokenToEth(
        address sellTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feePercentageBasisPoints
    ) internal {
        // 1 - Get the initial ETH amount
        uint256 initialEthAmount = address(this).balance - msg.value;

        // 2 - Move the tokens to this contract
        // NOTE: This implicitly assumes that the the necessary approvals have been granted
        // from msg.sender to the BaseAggregator
        SafeTransferLib.safeTransferFrom(
            ERC20(sellTokenAddress),
            msg.sender,
            address(this),
            sellAmount
        );

        // 3 - Approve the aggregator's contract to swap the tokens
        SafeTransferLib.safeApprove(
            ERC20(sellTokenAddress),
            target,
            sellAmount
        );

        // 4 - Call the encoded swap function call on the contract at `target`,
        // passing along any ETH attached to this function call to cover protocol fees.
        (bool success, bytes memory res) = target.call{value: msg.value}(
            swapCallData
        );

        // Get the revert message of the call and revert with it if the call failed
        if (!success) {
            assembly {
                let returndata_size := mload(res)
                revert(add(32, res), returndata_size)
            }
        }

        // 5 - Check that the tokens were fully spent during the swap
        uint256 allowance = ERC20(sellTokenAddress).allowance(
            address(this),
            target
        );
        require(allowance == 0, "ALLOWANCE_NOT_ZERO");

        // 6 - Subtract the fees and send the rest to the user
        // Fees will be held in this contract
        uint256 finalEthAmount = address(this).balance;
        uint256 ethDiff = finalEthAmount - initialEthAmount;

        require(ethDiff > 0, "NO_ETH_BACK");

        if (feePercentageBasisPoints > 0) {
            uint256 fees = (ethDiff * feePercentageBasisPoints) / 1e18;
            uint256 amountMinusFees = ethDiff - fees;
            SafeTransferLib.safeTransferETH(msg.sender, amountMinusFees);
            // when there's no fee, 1inch sends the funds directly to the user
            // we check to prevent sending 0 ETH in that case
        } else if (ethDiff > 0) {
            SafeTransferLib.safeTransferETH(msg.sender, ethDiff);
        }
    }

    /// @dev internal method that executes ERC20 to ERC20 token swaps with the ability to take a fee from the input
    function _fillQuoteTokenToToken(
        address sellTokenAddress,
        address buyTokenAddress,
        address payable target,
        bytes calldata swapCallData,
        uint256 sellAmount,
        uint256 feeAmount
    ) internal {
        // 1 - Get the initial output token balance
        uint256 initialOutputTokenAmount = ERC20(buyTokenAddress).balanceOf(
            address(this)
        );

        // 2 - Move the tokens to this contract (which includes our fees)
        // NOTE: This implicitly assumes that the the necessary approvals have been granted
        // from msg.sender to the BaseAggregator
        SafeTransferLib.safeTransferFrom(
            ERC20(sellTokenAddress),
            msg.sender,
            address(this),
            sellAmount
        );

        // 3 - Approve the aggregator's contract to swap the tokens if needed
        SafeTransferLib.safeApprove(
            ERC20(sellTokenAddress),
            target,
            sellAmount - feeAmount
        );

        // 4 - Call the encoded swap function call on the contract at `target`,
        // passing along any ETH attached to this function call to cover protocol fees.
        (bool success, bytes memory res) = target.call{value: msg.value}(
            swapCallData
        );

        // Get the revert message of the call and revert with it if the call failed
        if (!success) {
            assembly {
                let returndata_size := mload(res)
                revert(add(32, res), returndata_size)
            }
        }

        // 5 - Check that the tokens were fully spent during the swap
        uint256 allowance = ERC20(sellTokenAddress).allowance(
            address(this),
            target
        );
        require(allowance == 0, "ALLOWANCE_NOT_ZERO");

        // 6 - Make sure we received the tokens
        uint256 finalOutputTokenAmount = ERC20(buyTokenAddress).balanceOf(
            address(this)
        );
        require(initialOutputTokenAmount < finalOutputTokenAmount, "NO_TOKENS");

        // 7 - Send tokens to the user
        SafeTransferLib.safeTransfer(
            ERC20(buyTokenAddress),
            msg.sender,
            finalOutputTokenAmount - initialOutputTokenAmount
        );
    }
}

/// @title Rainbow swap aggregator contract
contract RainbowRouter is BaseAggregator {
    /// @dev The address that is the current owner of this contract
    address public owner;

    /// @dev Event emitted when the owner changes
    event OwnerChanged(address indexed newOwner, address indexed oldOwner);

    /// @dev Event emitted when a swap target gets added
    event SwapTargetAdded(address indexed target);

    /// @dev Event emitted when a swap target gets removed
    event SwapTargetRemoved(address indexed target);

    /// @dev Event emitted when token fees are withdrawn
    event TokenWithdrawn(
        address indexed token,
        address indexed target,
        uint256 amount
    );

    /// @dev Event emitted when ETH fees are withdrawn
    event EthWithdrawn(address indexed target, uint256 amount);

    /// @dev modifier that ensures only the owner is allowed to call a specific method
    modifier onlyOwner() {
        require(msg.sender == owner, "ONLY_OWNER");
        _;
    }

    constructor() {
        owner = msg.sender;
        status = 1;
    }

    /// @dev We don't want to accept any ETH, except refunds from aggregators
    /// or the owner (for testing purposes), which can also withdraw
    /// This is done by evaluating the value of status, which is set to 2
    /// only during swaps due to the "nonReentrant" modifier
    receive() external payable {
        require(status == 2 || msg.sender == owner, "NO_RECEIVE");
    }

    /// @dev method to add or remove swap targets from swapTargets
    /// This is required so we only approve "trusted" swap targets
    /// to transfer tokens out of this contract
    /// @param target address of the swap target to add
    /// @param add flag to add or remove the swap target
    function updateSwapTargets(address target, bool add) external onlyOwner {
        swapTargets[target] = add;
        if (add) {
            emit SwapTargetAdded(target);
        } else {
            emit SwapTargetRemoved(target);
        }
    }

    /// @dev method to withdraw ERC20 tokens (from the fees)
    /// @param token address of the token to withdraw
    /// @param to address that's receiving the tokens
    /// @param amount amount of tokens to withdraw
    function withdrawToken(
        address token,
        address to,
        uint256 amount
    ) external onlyOwner {
        require(to != address(0), "ZERO_ADDRESS");
        SafeTransferLib.safeTransfer(ERC20(token), to, amount);
        emit TokenWithdrawn(token, to, amount);
    }

    /// @dev method to withdraw ETH (from the fees)
    /// @param to address that's receiving the ETH
    /// @param amount amount of ETH to withdraw
    function withdrawEth(address to, uint256 amount) external onlyOwner {
        require(to != address(0), "ZERO_ADDRESS");
        SafeTransferLib.safeTransferETH(to, amount);
        emit EthWithdrawn(to, amount);
    }

    /// @dev Transfers ownership of the contract to a new account (`newOwner`).
    /// @param newOwner address of the new owner
    /// Can only be called by the current owner.
    function transferOwnership(address newOwner) external virtual onlyOwner {
        require(newOwner != address(0), "ZERO_ADDRESS");
        require(newOwner != owner, "SAME_OWNER");
        address previousOwner = owner;
        owner = newOwner;
        emit OwnerChanged(newOwner, previousOwner);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EthWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"SwapTargetAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"SwapTargetRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokenWithdrawn","type":"event"},{"inputs":[{"internalType":"address","name":"buyTokenAddress","type":"address"},{"internalType":"address payable","name":"target","type":"address"},{"internalType":"bytes","name":"swapCallData","type":"bytes"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"fillQuoteEthToToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sellTokenAddress","type":"address"},{"internalType":"address payable","name":"target","type":"address"},{"internalType":"bytes","name":"swapCallData","type":"bytes"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"feePercentageBasisPoints","type":"uint256"}],"name":"fillQuoteTokenToEth","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sellTokenAddress","type":"address"},{"internalType":"address payable","name":"target","type":"address"},{"internalType":"bytes","name":"swapCallData","type":"bytes"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"feePercentageBasisPoints","type":"uint256"},{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"isDaiStylePermit","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct PermitHelper.Permit","name":"permitData","type":"tuple"}],"name":"fillQuoteTokenToEthWithPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sellTokenAddress","type":"address"},{"internalType":"address","name":"buyTokenAddress","type":"address"},{"internalType":"address payable","name":"target","type":"address"},{"internalType":"bytes","name":"swapCallData","type":"bytes"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}],"name":"fillQuoteTokenToToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"sellTokenAddress","type":"address"},{"internalType":"address","name":"buyTokenAddress","type":"address"},{"internalType":"address payable","name":"target","type":"address"},{"internalType":"bytes","name":"swapCallData","type":"bytes"},{"internalType":"uint256","name":"sellAmount","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"},{"components":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"isDaiStylePermit","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"internalType":"struct PermitHelper.Permit","name":"permitData","type":"tuple"}],"name":"fillQuoteTokenToTokenWithPermit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"swapTargets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bool","name":"add","type":"bool"}],"name":"updateSwapTargets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561001057600080fd5b50600280546001600160a01b031916331790556001600055611afd806100376000396000f3fe6080604052600436106100c05760003560e01c80638da5cb5b11610074578063b0480bbd1161004e578063b0480bbd1461024e578063b309383814610261578063f2fde38b1461027457600080fd5b80638da5cb5b146101e357806397bbda0e1461021b578063999b64641461023b57600080fd5b80633c2b9a7d116100a55780633c2b9a7d1461017857806355e4b7be1461018b57806383c4a19d1461019e57600080fd5b806301e33667146101385780631b9a91a41461015857600080fd5b3661013357600054600214806100e057506002546001600160a01b031633145b6101315760405162461bcd60e51b815260206004820152600a60248201527f4e4f5f524543454956450000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561014457600080fd5b506101316101533660046115a6565b610294565b34801561016457600080fd5b506101316101733660046115e7565b61037d565b61013161018636600461165c565b61045a565b6101316101993660046116c9565b61075f565b3480156101aa57600080fd5b506101ce6101b9366004611754565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ef57600080fd5b50600254610203906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b34801561022757600080fd5b5061013161023636600461178d565b610820565b6101316102493660046117c2565b610904565b61013161025c366004611851565b6109c3565b61013161026f3660046118f1565b610a9f565b34801561028057600080fd5b5061013161028f366004611754565b610b6a565b6002546001600160a01b031633146102db5760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166103205760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b61032b838383610cbd565b816001600160a01b0316836001600160a01b03167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56208360405161037091815260200190565b60405180910390a3505050565b6002546001600160a01b031633146103c45760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166104095760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b6104138282610d63565b816001600160a01b03167f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b8260405161044e91815260200190565b60405180910390a25050565b6000546002141561049d5760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038516815260016020526040902054849060ff166104fd5760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610568919061197f565b9050600061057634476119ae565b9050600061058485346119ae565b9050600080896001600160a01b0316838a8a6040516105a49291906119c5565b60006040518083038185875af1925050503d80600081146105e1576040519150601f19603f3d011682016040523d82523d6000602084013e6105e6565b606091505b5091509150816105f95780518082602001fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038d16906370a0823190602401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610664919061197f565b90508086106106a15760405162461bcd60e51b81526020600482015260096024820152684e4f5f544f4b454e5360b81b6044820152606401610128565b506040516370a0823160e01b8152306004820152610723908c90339088906001600160a01b038416906370a0823190602401602060405180830381865afa1580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610714919061197f565b61071e91906119ae565b610cbd565b600061072f88476119ae565b90508481111561074c5761074c3361074787846119ae565b610d63565b5050600160005550505050505050505050565b600054600214156107a25760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038616815260016020526040902054859060ff166108025760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b61081188888888888888610dc3565b50506001600055505050505050565b6002546001600160a01b031633146108675760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166000908152600160205260409020805460ff191682158015919091179091556108cc576040516001600160a01b038316907fb907822409611d127ab6a64611591b98e03a6a85ade4f258bae26b7c1efdfeaf90600090a25050565b6040516001600160a01b038316907f393b8be3e26787f19285ecd039dfd80bc6507828750f4d50367e6efe2524695c90600090a25050565b600054600214156109475760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038616815260016020526040902054859060ff166109a75760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b6109b587878787878761104c565b505060016000555050505050565b60005460021415610a065760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038716815260016020526040902054869060ff16610a665760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b610a80610a78368490038401846119e6565b8a333061125d565b610a8f89898989898989610dc3565b5050600160005550505050505050565b60005460021415610ae25760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038716815260016020526040902054869060ff16610b425760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b610b5c610b54368490038401846119e6565b89333061125d565b61081188888888888861104c565b6002546001600160a01b03163314610bb15760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b6002546001600160a01b0382811691161415610c545760405162461bcd60e51b815260206004820152600a60248201527f53414d455f4f574e4552000000000000000000000000000000000000000000006044820152606401610128565b600280546001600160a01b038381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169182917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a35050565b60006040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201528260248201526000806044836000895af1915050610d11816113f1565b610d5d5760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610128565b50505050565b600080600080600085875af1905080610dbe5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610128565b505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e919061197f565b9050610e3c88333086611438565b610e508887610e4b85876119ae565b6114ee565b600080876001600160a01b0316348888604051610e6e9291906119c5565b60006040518083038185875af1925050503d8060008114610eab576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b606091505b509150915081610ec35780518082602001fd5b604051636eb1769f60e11b81523060048201526001600160a01b038981166024830152600091908c169063dd62ed3e90604401602060405180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f37919061197f565b90508015610f875760405162461bcd60e51b815260206004820152601260248201527f414c4c4f57414e43455f4e4f545f5a45524f00000000000000000000000000006044820152606401610128565b6040516370a0823160e01b81523060048201526000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff2919061197f565b905080851061102f5760405162461bcd60e51b81526020600482015260096024820152684e4f5f544f4b454e5360b81b6044820152606401610128565b61103e8b3361071e88856119ae565b505050505050505050505050565b600061105834476119ae565b905061106687333086611438565b6110718787856114ee565b600080876001600160a01b031634888860405161108f9291906119c5565b60006040518083038185875af1925050503d80600081146110cc576040519150601f19603f3d011682016040523d82523d6000602084013e6110d1565b606091505b5091509150816110e45780518082602001fd5b604051636eb1769f60e11b81523060048201526001600160a01b038981166024830152600091908b169063dd62ed3e90604401602060405180830381865afa158015611134573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611158919061197f565b905080156111a85760405162461bcd60e51b815260206004820152601260248201527f414c4c4f57414e43455f4e4f545f5a45524f00000000000000000000000000006044820152606401610128565b4760006111b586836119ae565b9050600081116112075760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f4554485f4241434b0000000000000000000000000000000000000000006044820152606401610128565b861561124d576000670de0b6b3a76400006112228984611a86565b61122c9190611aa5565b9050600061123a82846119ae565b90506112463382610d63565b505061103e565b801561103e5761103e3382610d63565b836060015115611331576020840151604080860151608087015160a088015160c089015193517f8fcbaf0c0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301528781166024830152604482019690965260648101939093526001608484015260ff90911660a483015260c482015260e481019190915290841690638fcbaf0c9061010401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b50505050610d5d565b8351604080860151608087015160a088015160c089015193517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301526044820196909652606481019390935260ff909116608483015260a482015260c48101919091529084169063d505accf9060e401600060405180830381600087803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b5050505050505050565b60003d8261140357806000803e806000fd5b806020811461141b57801561142c5760009250611431565b816000803e60005115159250611431565b600192505b5050919050565b60006040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526001600160a01b038416602482015282604482015260008060648360008a5af191505061149b816113f1565b6114e75760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610128565b5050505050565b60006040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201528260248201526000806044836000895af1915050611542816113f1565b610d5d5760405162461bcd60e51b815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610128565b6001600160a01b03811681146115a357600080fd5b50565b6000806000606084860312156115bb57600080fd5b83356115c68161158e565b925060208401356115d68161158e565b929592945050506040919091013590565b600080604083850312156115fa57600080fd5b82356116058161158e565b946020939093013593505050565b60008083601f84011261162557600080fd5b50813567ffffffffffffffff81111561163d57600080fd5b60208301915083602082850101111561165557600080fd5b9250929050565b60008060008060006080868803121561167457600080fd5b853561167f8161158e565b9450602086013561168f8161158e565b9350604086013567ffffffffffffffff8111156116ab57600080fd5b6116b788828901611613565b96999598509660600135949350505050565b600080600080600080600060c0888a0312156116e457600080fd5b87356116ef8161158e565b965060208801356116ff8161158e565b9550604088013561170f8161158e565b9450606088013567ffffffffffffffff81111561172b57600080fd5b6117378a828b01611613565b989b979a50959895979660808701359660a0013595509350505050565b60006020828403121561176657600080fd5b81356117718161158e565b9392505050565b8035801515811461178857600080fd5b919050565b600080604083850312156117a057600080fd5b82356117ab8161158e565b91506117b960208401611778565b90509250929050565b60008060008060008060a087890312156117db57600080fd5b86356117e68161158e565b955060208701356117f68161158e565b9450604087013567ffffffffffffffff81111561181257600080fd5b61181e89828a01611613565b979a9699509760608101359660809091013595509350505050565b600060e0828403121561184b57600080fd5b50919050565b6000806000806000806000806101a0898b03121561186e57600080fd5b88356118798161158e565b975060208901356118898161158e565b965060408901356118998161158e565b9550606089013567ffffffffffffffff8111156118b557600080fd5b6118c18b828c01611613565b9096509450506080890135925060a089013591506118e28a60c08b01611839565b90509295985092959890939650565b6000806000806000806000610180888a03121561190d57600080fd5b87356119188161158e565b965060208801356119288161158e565b9550604088013567ffffffffffffffff81111561194457600080fd5b6119508a828b01611613565b90965094505060608801359250608088013591506119718960a08a01611839565b905092959891949750929550565b60006020828403121561199157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c0576119c0611998565b500390565b8183823760009101908152919050565b803560ff8116811461178857600080fd5b600060e082840312156119f857600080fd5b60405160e0810181811067ffffffffffffffff82111715611a2957634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152611a5260608401611778565b6060820152611a63608084016119d5565b608082015260a083013560a082015260c083013560c08201528091505092915050565b6000816000190483118215151615611aa057611aa0611998565b500290565b600082611ac257634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209870dd0dc3fb83baf72036a002768c9388c9b2cbf93b6d7b09369fddefaaf87764736f6c634300080b0033

Deployed Bytecode

0x6080604052600436106100c05760003560e01c80638da5cb5b11610074578063b0480bbd1161004e578063b0480bbd1461024e578063b309383814610261578063f2fde38b1461027457600080fd5b80638da5cb5b146101e357806397bbda0e1461021b578063999b64641461023b57600080fd5b80633c2b9a7d116100a55780633c2b9a7d1461017857806355e4b7be1461018b57806383c4a19d1461019e57600080fd5b806301e33667146101385780631b9a91a41461015857600080fd5b3661013357600054600214806100e057506002546001600160a01b031633145b6101315760405162461bcd60e51b815260206004820152600a60248201527f4e4f5f524543454956450000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b34801561014457600080fd5b506101316101533660046115a6565b610294565b34801561016457600080fd5b506101316101733660046115e7565b61037d565b61013161018636600461165c565b61045a565b6101316101993660046116c9565b61075f565b3480156101aa57600080fd5b506101ce6101b9366004611754565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156101ef57600080fd5b50600254610203906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b34801561022757600080fd5b5061013161023636600461178d565b610820565b6101316102493660046117c2565b610904565b61013161025c366004611851565b6109c3565b61013161026f3660046118f1565b610a9f565b34801561028057600080fd5b5061013161028f366004611754565b610b6a565b6002546001600160a01b031633146102db5760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166103205760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b61032b838383610cbd565b816001600160a01b0316836001600160a01b03167f8210728e7c071f615b840ee026032693858fbcd5e5359e67e438c890f59e56208360405161037091815260200190565b60405180910390a3505050565b6002546001600160a01b031633146103c45760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166104095760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b6104138282610d63565b816001600160a01b03167f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b8260405161044e91815260200190565b60405180910390a25050565b6000546002141561049d5760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038516815260016020526040902054849060ff166104fd5760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610544573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610568919061197f565b9050600061057634476119ae565b9050600061058485346119ae565b9050600080896001600160a01b0316838a8a6040516105a49291906119c5565b60006040518083038185875af1925050503d80600081146105e1576040519150601f19603f3d011682016040523d82523d6000602084013e6105e6565b606091505b5091509150816105f95780518082602001fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038d16906370a0823190602401602060405180830381865afa158015610640573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610664919061197f565b90508086106106a15760405162461bcd60e51b81526020600482015260096024820152684e4f5f544f4b454e5360b81b6044820152606401610128565b506040516370a0823160e01b8152306004820152610723908c90339088906001600160a01b038416906370a0823190602401602060405180830381865afa1580156106f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610714919061197f565b61071e91906119ae565b610cbd565b600061072f88476119ae565b90508481111561074c5761074c3361074787846119ae565b610d63565b5050600160005550505050505050505050565b600054600214156107a25760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038616815260016020526040902054859060ff166108025760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b61081188888888888888610dc3565b50506001600055505050505050565b6002546001600160a01b031633146108675760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b0382166000908152600160205260409020805460ff191682158015919091179091556108cc576040516001600160a01b038316907fb907822409611d127ab6a64611591b98e03a6a85ade4f258bae26b7c1efdfeaf90600090a25050565b6040516001600160a01b038316907f393b8be3e26787f19285ecd039dfd80bc6507828750f4d50367e6efe2524695c90600090a25050565b600054600214156109475760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038616815260016020526040902054859060ff166109a75760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b6109b587878787878761104c565b505060016000555050505050565b60005460021415610a065760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038716815260016020526040902054869060ff16610a665760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b610a80610a78368490038401846119e6565b8a333061125d565b610a8f89898989898989610dc3565b5050600160005550505050505050565b60005460021415610ae25760405162461bcd60e51b815260206004820152600d60248201526c1393d397d49151539514905395609a1b6044820152606401610128565b600260009081556001600160a01b038716815260016020526040902054869060ff16610b425760405162461bcd60e51b815260206004820152600f60248201526e0a882a48e8aa8be9c9ea8be82aaa89608b1b6044820152606401610128565b610b5c610b54368490038401846119e6565b89333061125d565b61081188888888888861104c565b6002546001600160a01b03163314610bb15760405162461bcd60e51b815260206004820152600a60248201526927a7262cafa7aba722a960b11b6044820152606401610128565b6001600160a01b038116610bf65760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610128565b6002546001600160a01b0382811691161415610c545760405162461bcd60e51b815260206004820152600a60248201527f53414d455f4f574e4552000000000000000000000000000000000000000000006044820152606401610128565b600280546001600160a01b038381167fffffffffffffffffffffffff00000000000000000000000000000000000000008316811790935560405191169182917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a35050565b60006040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201528260248201526000806044836000895af1915050610d11816113f1565b610d5d5760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610128565b50505050565b600080600080600085875af1905080610dbe5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610128565b505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038816906370a0823190602401602060405180830381865afa158015610e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e2e919061197f565b9050610e3c88333086611438565b610e508887610e4b85876119ae565b6114ee565b600080876001600160a01b0316348888604051610e6e9291906119c5565b60006040518083038185875af1925050503d8060008114610eab576040519150601f19603f3d011682016040523d82523d6000602084013e610eb0565b606091505b509150915081610ec35780518082602001fd5b604051636eb1769f60e11b81523060048201526001600160a01b038981166024830152600091908c169063dd62ed3e90604401602060405180830381865afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f37919061197f565b90508015610f875760405162461bcd60e51b815260206004820152601260248201527f414c4c4f57414e43455f4e4f545f5a45524f00000000000000000000000000006044820152606401610128565b6040516370a0823160e01b81523060048201526000906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff2919061197f565b905080851061102f5760405162461bcd60e51b81526020600482015260096024820152684e4f5f544f4b454e5360b81b6044820152606401610128565b61103e8b3361071e88856119ae565b505050505050505050505050565b600061105834476119ae565b905061106687333086611438565b6110718787856114ee565b600080876001600160a01b031634888860405161108f9291906119c5565b60006040518083038185875af1925050503d80600081146110cc576040519150601f19603f3d011682016040523d82523d6000602084013e6110d1565b606091505b5091509150816110e45780518082602001fd5b604051636eb1769f60e11b81523060048201526001600160a01b038981166024830152600091908b169063dd62ed3e90604401602060405180830381865afa158015611134573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611158919061197f565b905080156111a85760405162461bcd60e51b815260206004820152601260248201527f414c4c4f57414e43455f4e4f545f5a45524f00000000000000000000000000006044820152606401610128565b4760006111b586836119ae565b9050600081116112075760405162461bcd60e51b815260206004820152600b60248201527f4e4f5f4554485f4241434b0000000000000000000000000000000000000000006044820152606401610128565b861561124d576000670de0b6b3a76400006112228984611a86565b61122c9190611aa5565b9050600061123a82846119ae565b90506112463382610d63565b505061103e565b801561103e5761103e3382610d63565b836060015115611331576020840151604080860151608087015160a088015160c089015193517f8fcbaf0c0000000000000000000000000000000000000000000000000000000081526001600160a01b0388811660048301528781166024830152604482019690965260648101939093526001608484015260ff90911660a483015260c482015260e481019190915290841690638fcbaf0c9061010401600060405180830381600087803b15801561131457600080fd5b505af1158015611328573d6000803e3d6000fd5b50505050610d5d565b8351604080860151608087015160a088015160c089015193517fd505accf0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015287811660248301526044820196909652606481019390935260ff909116608483015260a482015260c48101919091529084169063d505accf9060e401600060405180830381600087803b1580156113d357600080fd5b505af11580156113e7573d6000803e3d6000fd5b5050505050505050565b60003d8261140357806000803e806000fd5b806020811461141b57801561142c5760009250611431565b816000803e60005115159250611431565b600192505b5050919050565b60006040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526001600160a01b038416602482015282604482015260008060648360008a5af191505061149b816113f1565b6114e75760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610128565b5050505050565b60006040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201528260248201526000806044836000895af1915050611542816113f1565b610d5d5760405162461bcd60e51b815260206004820152600e60248201527f415050524f56455f4641494c45440000000000000000000000000000000000006044820152606401610128565b6001600160a01b03811681146115a357600080fd5b50565b6000806000606084860312156115bb57600080fd5b83356115c68161158e565b925060208401356115d68161158e565b929592945050506040919091013590565b600080604083850312156115fa57600080fd5b82356116058161158e565b946020939093013593505050565b60008083601f84011261162557600080fd5b50813567ffffffffffffffff81111561163d57600080fd5b60208301915083602082850101111561165557600080fd5b9250929050565b60008060008060006080868803121561167457600080fd5b853561167f8161158e565b9450602086013561168f8161158e565b9350604086013567ffffffffffffffff8111156116ab57600080fd5b6116b788828901611613565b96999598509660600135949350505050565b600080600080600080600060c0888a0312156116e457600080fd5b87356116ef8161158e565b965060208801356116ff8161158e565b9550604088013561170f8161158e565b9450606088013567ffffffffffffffff81111561172b57600080fd5b6117378a828b01611613565b989b979a50959895979660808701359660a0013595509350505050565b60006020828403121561176657600080fd5b81356117718161158e565b9392505050565b8035801515811461178857600080fd5b919050565b600080604083850312156117a057600080fd5b82356117ab8161158e565b91506117b960208401611778565b90509250929050565b60008060008060008060a087890312156117db57600080fd5b86356117e68161158e565b955060208701356117f68161158e565b9450604087013567ffffffffffffffff81111561181257600080fd5b61181e89828a01611613565b979a9699509760608101359660809091013595509350505050565b600060e0828403121561184b57600080fd5b50919050565b6000806000806000806000806101a0898b03121561186e57600080fd5b88356118798161158e565b975060208901356118898161158e565b965060408901356118998161158e565b9550606089013567ffffffffffffffff8111156118b557600080fd5b6118c18b828c01611613565b9096509450506080890135925060a089013591506118e28a60c08b01611839565b90509295985092959890939650565b6000806000806000806000610180888a03121561190d57600080fd5b87356119188161158e565b965060208801356119288161158e565b9550604088013567ffffffffffffffff81111561194457600080fd5b6119508a828b01611613565b90965094505060608801359250608088013591506119718960a08a01611839565b905092959891949750929550565b60006020828403121561199157600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156119c0576119c0611998565b500390565b8183823760009101908152919050565b803560ff8116811461178857600080fd5b600060e082840312156119f857600080fd5b60405160e0810181811067ffffffffffffffff82111715611a2957634e487b7160e01b600052604160045260246000fd5b8060405250823581526020830135602082015260408301356040820152611a5260608401611778565b6060820152611a63608084016119d5565b608082015260a083013560a082015260c083013560c08201528091505092915050565b6000816000190483118215151615611aa057611aa0611998565b500290565b600082611ac257634e487b7160e01b600052601260045260246000fd5b50049056fea26469706673582212209870dd0dc3fb83baf72036a002768c9388c9b2cbf93b6d7b09369fddefaaf87764736f6c634300080b0033

Deployed Bytecode Sourcemap

41579:3441:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42992:6;;43002:1;42992:11;:34;;;-1:-1:-1;43021:5:0;;-1:-1:-1;;;;;43021:5:0;43007:10;:19;42992:34;42984:57;;;;-1:-1:-1;;;42984:57:0;;216:2:1;42984:57:0;;;198:21:1;255:2;235:18;;;228:30;294:12;274:18;;;267:40;324:18;;42984:57:0;;;;;;;;;41579:3441;;;;;43842:293;;;;;;;;;;-1:-1:-1;43842:293:0;;;;;:::i;:::-;;:::i;44297:222::-;;;;;;;;;;-1:-1:-1;44297:222:0;;;;;:::i;:::-;;:::i;29093:2054::-;;;;;;:::i;:::-;;:::i;31650:502::-;;;;;;:::i;:::-;;:::i;28000:43::-;;;;;;;;;;-1:-1:-1;28000:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3807:14:1;;3800:22;3782:41;;3770:2;3755:18;28000:43:0;;;;;;;;41696:20;;;;;;;;;;-1:-1:-1;41696:20:0;;;;-1:-1:-1;;;;;41696:20:0;;;;;;-1:-1:-1;;;;;3998:55:1;;;3980:74;;3968:2;3953:18;41696:20:0;3834:226:1;43357:253:0;;;;;;;;;;-1:-1:-1;43357:253:0;;;;;:::i;:::-;;:::i;34387:464::-;;;;;;:::i;:::-;;:::i;32986:785::-;;;;;;:::i;:::-;;:::i;35691:746::-;;;;;;:::i;:::-;;:::i;44708:309::-;;;;;;;;;;-1:-1:-1;44708:309:0;;;;;:::i;:::-;;:::i;43842:293::-;42532:5;;-1:-1:-1;;;;;42532:5:0;42518:10;:19;42510:42;;;;-1:-1:-1;;;42510:42:0;;7810:2:1;42510:42:0;;;7792:21:1;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:1;;;7861:40;7918:18;;42510:42:0;7608:334:1;42510:42:0;-1:-1:-1;;;;;43980:16:0;::::1;43972:41;;;::::0;-1:-1:-1;;;43972:41:0;;8149:2:1;43972:41:0::1;::::0;::::1;8131:21:1::0;8188:2;8168:18;;;8161:30;-1:-1:-1;;;8207:18:1;;;8200:42;8259:18;;43972:41:0::1;7947:336:1::0;43972:41:0::1;44024:54;44059:5;44067:2;44071:6;44024:28;:54::i;:::-;44116:2;-1:-1:-1::0;;;;;44094:33:0::1;44109:5;-1:-1:-1::0;;;;;44094:33:0::1;;44120:6;44094:33;;;;8434:25:1::0;;8422:2;8407:18;;8288:177;44094:33:0::1;;;;;;;;43842:293:::0;;;:::o;44297:222::-;42532:5;;-1:-1:-1;;;;;42532:5:0;42518:10;:19;42510:42;;;;-1:-1:-1;;;42510:42:0;;7810:2:1;42510:42:0;;;7792:21:1;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:1;;;7861:40;7918:18;;42510:42:0;7608:334:1;42510:42:0;-1:-1:-1;;;;;44384:16:0;::::1;44376:41;;;::::0;-1:-1:-1;;;44376:41:0;;8149:2:1;44376:41:0::1;::::0;::::1;8131:21:1::0;8188:2;8168:18;;;8161:30;-1:-1:-1;;;8207:18:1;;;8200:42;8259:18;;44376:41:0::1;7947:336:1::0;44376:41:0::1;44428:43;44460:2;44464:6;44428:31;:43::i;:::-;44500:2;-1:-1:-1::0;;;;;44487:24:0::1;;44504:6;44487:24;;;;8434:25:1::0;;8422:2;8407:18;;8288:177;44487:24:0::1;;;;;;;;44297:222:::0;;:::o;29093:2054::-;28235:6;;28245:1;28235:11;;28227:37;;;;-1:-1:-1;;;28227:37:0;;8672:2:1;28227:37:0;;;8654:21:1;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:43;8783:18;;28227:37:0;8470:337:1;28227:37:0;28351:1;28342:6;:10;;;-1:-1:-1;;;;;28674:19:0;::::1;::::0;;:11:::1;:19;::::0;;;;;29311:6;;28674:19:::1;;28666:47;;;::::0;-1:-1:-1;;;28666:47:0;;9014:2:1;28666:47:0::1;::::0;::::1;8996:21:1::0;9053:2;9033:18;;;9026:30;-1:-1:-1;;;9072:18:1;;;9065:45;9127:18;;28666:47:0::1;8812:339:1::0;28666:47:0::1;29401:71:::2;::::0;-1:-1:-1;;;29401:71:0;;29456:4:::2;29401:71;::::0;::::2;3980:74:1::0;29371:27:0::2;::::0;-1:-1:-1;;;;;29401:32:0;::::2;::::0;::::2;::::0;3953:18:1;;29401:71:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29371:101:::0;-1:-1:-1;29483:24:0::2;29510:33;29534:9;29510:21;:33;:::i;:::-;29483:60:::0;-1:-1:-1;29554:18:0::2;29575:21;29587:9:::0;29575::::2;:21;:::i;:::-;29554:42;;29839:12;29853:16:::0;29873:6:::2;-1:-1:-1::0;;;;;29873:11:0::2;29892:10;29918:12;;29873:68;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29838:103;;;;30044:7;30039:171;;30125:3;30119:10;30168:15;30162:3;30158:2;30154:12;30147:37;30039:171;30314:79;::::0;-1:-1:-1;;;30314:79:0;;30373:4:::2;30314:79;::::0;::::2;3980:74:1::0;30286:25:0::2;::::0;-1:-1:-1;;;;;30314:32:0;::::2;::::0;::::2;::::0;3953:18:1;;30314:79:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30286:107;;30438:17;30416:19;:39;30408:61;;;::::0;-1:-1:-1;;;30408:61:0;;10142:2:1;30408:61:0::2;::::0;::::2;10124:21:1::0;10181:1;10161:18;;;10154:29;-1:-1:-1;;;10199:18:1;;;10192:39;10248:18;;30408:61:0::2;9940:332:1::0;30408:61:0::2;-1:-1:-1::0;30656:47:0::2;::::0;-1:-1:-1;;;30656:47:0;;30697:4:::2;30656:47;::::0;::::2;3980:74:1::0;30551:202:0::2;::::0;30600:15;;30631:10:::2;::::0;30723:19;;-1:-1:-1;;;;;30656:32:0;::::2;::::0;::::2;::::0;3953:18:1;;30656:47:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:86;;;;:::i;:::-;30551:28;:202::i;:::-;30843:22;30868:33;30892:9:::0;30868:21:::2;:33;:::i;:::-;30843:58;;30937:16;30920:14;:33;30916:213;;;30974:139;31028:10;31061:33;31078:16:::0;31061:14;:33:::2;:::i;:::-;30974:31;:139::i;:::-;-1:-1:-1::0;;28522:1:0;28513:6;:10;-1:-1:-1;;;;;;;;;;29093:2054:0:o;31650:502::-;28235:6;;28245:1;28235:11;;28227:37;;;;-1:-1:-1;;;28227:37:0;;8672:2:1;28227:37:0;;;8654:21:1;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:43;8783:18;;28227:37:0;8470:337:1;28227:37:0;28351:1;28342:6;:10;;;-1:-1:-1;;;;;28674:19:0;::::1;::::0;;:11:::1;:19;::::0;;;;;31934:6;;28674:19:::1;;28666:47;;;::::0;-1:-1:-1;;;28666:47:0;;9014:2:1;28666:47:0::1;::::0;::::1;8996:21:1::0;9053:2;9033:18;;;9026:30;-1:-1:-1;;;9072:18:1;;;9065:45;9127:18;;28666:47:0::1;8812:339:1::0;28666:47:0::1;31953:191:::2;31990:16;32021:15;32051:6;32072:12;;32099:10;32124:9;31953:22;:191::i;:::-;-1:-1:-1::0;;28522:1:0;28513:6;:10;-1:-1:-1;;;;;;31650:502:0:o;43357:253::-;42532:5;;-1:-1:-1;;;;;42532:5:0;42518:10;:19;42510:42;;;;-1:-1:-1;;;42510:42:0;;7810:2:1;42510:42:0;;;7792:21:1;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:1;;;7861:40;7918:18;;42510:42:0;7608:334:1;42510:42:0;-1:-1:-1;;;;;43440:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;:25;;-1:-1:-1;;43440:25:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;43476:127:::1;;43505:23;::::0;-1:-1:-1;;;;;43505:23:0;::::1;::::0;::::1;::::0;;;::::1;43357:253:::0;;:::o;43476:127::-:1;43566:25;::::0;-1:-1:-1;;;;;43566:25:0;::::1;::::0;::::1;::::0;;;::::1;43357:253:::0;;:::o;34387:464::-;28235:6;;28245:1;28235:11;;28227:37;;;;-1:-1:-1;;;28227:37:0;;8672:2:1;28227:37:0;;;8654:21:1;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:43;8783:18;;28227:37:0;8470:337:1;28227:37:0;28351:1;28342:6;:10;;;-1:-1:-1;;;;;28674:19:0;::::1;::::0;;:11:::1;:19;::::0;;;;;34650:6;;28674:19:::1;;28666:47;;;::::0;-1:-1:-1;;;28666:47:0;;9014:2:1;28666:47:0::1;::::0;::::1;8996:21:1::0;9053:2;9033:18;;;9026:30;-1:-1:-1;;;9072:18:1;;;9065:45;9127:18;;28666:47:0::1;8812:339:1::0;28666:47:0::1;34669:174:::2;34704:16;34735:6;34756:12;;34783:10;34808:24;34669:20;:174::i;:::-;-1:-1:-1::0;;28522:1:0;28513:6;:10;-1:-1:-1;;;;;34387:464:0:o;32986:785::-;28235:6;;28245:1;28235:11;;28227:37;;;;-1:-1:-1;;;28227:37:0;;8672:2:1;28227:37:0;;;8654:21:1;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:43;8783:18;;28227:37:0;8470:337:1;28227:37:0;28351:1;28342:6;:10;;;-1:-1:-1;;;;;28674:19:0;::::1;::::0;;:11:::1;:19;::::0;;;;;33330:6;;28674:19:::1;;28666:47;;;::::0;-1:-1:-1;;;28666:47:0;;9014:2:1;28666:47:0::1;::::0;::::1;8996:21:1::0;9053:2;9033:18;;;9026:30;-1:-1:-1;;;9072:18:1;;;9065:45;9127:18;;28666:47:0::1;8812:339:1::0;28666:47:0::1;33378:139:::2;;;::::0;;::::2;::::0;::::2;33412:10:::0;33378:139:::2;:::i;:::-;33437:16;33468:10;33501:4;33378:19;:139::i;:::-;33572:191;33609:16;33640:15;33670:6;33691:12;;33718:10;33743:9;33572:22;:191::i;:::-;-1:-1:-1::0;;28522:1:0;28513:6;:10;-1:-1:-1;;;;;;;32986:785:0:o;35691:746::-;28235:6;;28245:1;28235:11;;28227:37;;;;-1:-1:-1;;;28227:37:0;;8672:2:1;28227:37:0;;;8654:21:1;8711:2;8691:18;;;8684:30;-1:-1:-1;;;8730:18:1;;;8723:43;8783:18;;28227:37:0;8470:337:1;28227:37:0;28351:1;28342:6;:10;;;-1:-1:-1;;;;;28674:19:0;::::1;::::0;;:11:::1;:19;::::0;;;;;36014:6;;28674:19:::1;;28666:47;;;::::0;-1:-1:-1;;;28666:47:0;;9014:2:1;28666:47:0::1;::::0;::::1;8996:21:1::0;9053:2;9033:18;;;9026:30;-1:-1:-1;;;9072:18:1;;;9065:45;9127:18;;28666:47:0::1;8812:339:1::0;28666:47:0::1;36062:139:::2;;;::::0;;::::2;::::0;::::2;36096:10:::0;36062:139:::2;:::i;:::-;36121:16;36152:10;36185:4;36062:19;:139::i;:::-;36255:174;36290:16;36321:6;36342:12;;36369:10;36394:24;36255:20;:174::i;44708:309::-:0;42532:5;;-1:-1:-1;;;;;42532:5:0;42518:10;:19;42510:42;;;;-1:-1:-1;;;42510:42:0;;7810:2:1;42510:42:0;;;7792:21:1;7849:2;7829:18;;;7822:30;-1:-1:-1;;;7868:18:1;;;7861:40;7918:18;;42510:42:0;7608:334:1;42510:42:0;-1:-1:-1;;;;;44799:22:0;::::1;44791:47;;;::::0;-1:-1:-1;;;44791:47:0;;8149:2:1;44791:47:0::1;::::0;::::1;8131:21:1::0;8188:2;8168:18;;;8161:30;-1:-1:-1;;;8207:18:1;;;8200:42;8259:18;;44791:47:0::1;7947:336:1::0;44791:47:0::1;44869:5;::::0;-1:-1:-1;;;;;44857:17:0;;::::1;44869:5:::0;::::1;44857:17;;44849:40;;;::::0;-1:-1:-1;;;44849:40:0;;11646:2:1;44849:40:0::1;::::0;::::1;11628:21:1::0;11685:2;11665:18;;;11658:30;11724:12;11704:18;;;11697:40;11754:18;;44849:40:0::1;11444:334:1::0;44849:40:0::1;44924:5;::::0;;-1:-1:-1;;;;;44940:16:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;44972:37:::1;::::0;44924:5;::::1;::::0;;;44972:37:::1;::::0;44900:21:::1;::::0;44972:37:::1;44780:237;44708:309:::0;:::o;15493:1065::-;15610:15;15744:4;15738:11;15864:66;15845:17;15838:93;-1:-1:-1;;;;;16020:2:0;16016:51;16012:1;15993:17;15989:25;15982:86;16155:6;16150:2;16131:17;16127:26;16120:42;16453:1;16450;16446:2;16427:17;16424:1;16417:5;16410;16405:50;16391:64;;;16486:44;16519:10;16486:32;:44::i;:::-;16478:72;;;;-1:-1:-1;;;16478:72:0;;11985:2:1;16478:72:0;;;11967:21:1;12024:2;12004:18;;;11997:30;12063:17;12043:18;;;12036:45;12098:18;;16478:72:0;11783:339:1;16478:72:0;15599:959;15493:1065;;;:::o;13733:314::-;13806:15;13972:1;13969;13966;13963;13955:6;13951:2;13944:5;13939:35;13925:49;;14005:10;13997:42;;;;-1:-1:-1;;;13997:42:0;;12329:2:1;13997:42:0;;;12311:21:1;12368:2;12348:18;;;12341:30;12407:21;12387:18;;;12380:49;12446:18;;13997:42:0;12127:343:1;13997:42:0;13795:252;13733:314;;:::o;39216:2311::-;39560:71;;-1:-1:-1;;;39560:71:0;;39615:4;39560:71;;;3980:74:1;39525:32:0;;-1:-1:-1;;;;;39560:32:0;;;;;3953:18:1;;39560:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39525:106;;39862:159;39915:16;39947:10;39980:4;40000:10;39862:32;:159::i;:::-;40113:134;40161:16;40193:6;40214:22;40227:9;40214:10;:22;:::i;:::-;40113:27;:134::i;:::-;40431:12;40445:16;40465:6;-1:-1:-1;;;;;40465:11:0;40484:9;40509:12;;40465:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40430:102;;;;40635:7;40630:171;;40716:3;40710:10;40759:15;40753:3;40749:2;40745:12;40738:37;40630:171;40904:93;;-1:-1:-1;;;40904:93:0;;40960:4;40904:93;;;12718:34:1;-1:-1:-1;;;;;12788:15:1;;;12768:18;;;12761:43;40884:17:0;;40904:33;;;;;;12630:18:1;;40904:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40884:113;-1:-1:-1;41016:14:0;;41008:45;;;;-1:-1:-1;;;41008:45:0;;13017:2:1;41008:45:0;;;12999:21:1;13056:2;13036:18;;;13029:30;13095:20;13075:18;;;13068:48;13133:18;;41008:45:0;12815:342:1;41008:45:0;41148:71;;-1:-1:-1;;;41148:71:0;;41203:4;41148:71;;;3980:74:1;41115:30:0;;-1:-1:-1;;;;;41148:32:0;;;;;3953:18:1;;41148:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41115:104;;41265:22;41238:24;:49;41230:71;;;;-1:-1:-1;;;41230:71:0;;10142:2:1;41230:71:0;;;10124:21:1;10181:1;10161:18;;;10154:29;-1:-1:-1;;;10199:18:1;;;10192:39;10248:18;;41230:71:0;9940:332:1;41230:71:0;41354:165;41403:15;41434:10;41459:49;41484:24;41459:22;:49;:::i;41354:165::-;39461:2066;;;;;39216:2311;;;;;;;:::o;36585:2506::-;36863:24;36890:33;36914:9;36890:21;:33;:::i;:::-;36863:60;;37128:159;37181:16;37213:10;37246:4;37266:10;37128:32;:159::i;:::-;37369:122;37417:16;37449:6;37470:10;37369:27;:122::i;:::-;37675:12;37689:16;37709:6;-1:-1:-1;;;;;37709:11:0;37728:9;37753:12;;37709:67;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37674:102;;;;37879:7;37874:171;;37960:3;37954:10;38003:15;37997:3;37993:2;37989:12;37982:37;37874:171;38148:93;;-1:-1:-1;;;38148:93:0;;38204:4;38148:93;;;12718:34:1;-1:-1:-1;;;;;12788:15:1;;;12768:18;;;12761:43;38128:17:0;;38148:33;;;;;;12630:18:1;;38148:93:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38128:113;-1:-1:-1;38260:14:0;;38252:45;;;;-1:-1:-1;;;38252:45:0;;13017:2:1;38252:45:0;;;12999:21:1;13056:2;13036:18;;;13029:30;13095:20;13075:18;;;13068:48;13133:18;;38252:45:0;12815:342:1;38252:45:0;38446:21;38421:22;38496:33;38513:16;38446:21;38496:33;:::i;:::-;38478:51;;38560:1;38550:7;:11;38542:35;;;;-1:-1:-1;;;38542:35:0;;13364:2:1;38542:35:0;;;13346:21:1;13403:2;13383:18;;;13376:30;13442:13;13422:18;;;13415:41;13473:18;;38542:35:0;13162:335:1;38542:35:0;38594:28;;38590:494;;38639:12;38693:4;38655:34;38665:24;38655:7;:34;:::i;:::-;38654:43;;;;:::i;:::-;38639:58;-1:-1:-1;38712:23:0;38738:14;38639:58;38738:7;:14;:::i;:::-;38712:40;;38767:60;38799:10;38811:15;38767:31;:60::i;:::-;38624:358;;38590:494;;;38992:11;;38988:96;;39020:52;39052:10;39064:7;39020:31;:52::i;27000:801::-;27164:10;:27;;;27160:634;;;27303:16;;;;27338:19;;;;;27399:12;;;;27430;;;;27461;;;;27208:280;;;;;-1:-1:-1;;;;;14366:15:1;;;27208:280:0;;;14348:34:1;14418:15;;;14398:18;;;14391:43;14450:18;;;14443:34;;;;14493:18;;;14486:34;;;;27376:4:0;14536:19:1;;;14529:51;14629:4;14617:17;;;14596:19;;;14589:46;14651:19;;;14644:35;14695:19;;;14688:35;;;;27208:25:0;;;;;;14259:19:1;;27208:280:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27160:634;;;27620:16;;27655:19;;;;;27693:12;;;;27724;;;;27755;;;;27521:261;;;;;-1:-1:-1;;;;;15124:15:1;;;27521:261:0;;;15106:34:1;15176:15;;;15156:18;;;15149:43;15208:18;;;15201:34;;;;15251:18;;;15244:34;;;;15327:4;15315:17;;;15294:19;;;15287:46;15349:19;;;15342:35;15393:19;;;15386:35;;;;27521:29:0;;;;;;15017:19:1;;27521:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27000:801;;;;:::o;17828:1072::-;17909:12;18034:16;18114:10;18104:244;;18223:14;18220:1;18217;18202:36;18318:14;18315:1;18308:25;18104:244;18371:14;18404:2;18399:248;;;;18661:99;;;;18866:1;18855:12;;18364:518;;18399:248;18501:14;18498:1;18495;18480:36;18628:1;18622:8;18615:16;18608:24;18597:35;;18399:248;;18661:99;18744:1;18733:12;;18364:518;;;17828:1072;;;:::o;14243:1242::-;14387:15;14521:4;14515:11;14641:66;14622:17;14615:93;-1:-1:-1;;;;;14797:4:0;14793:53;14789:1;14770:17;14766:25;14759:88;-1:-1:-1;;;;;14940:2:0;14936:51;14931:2;14912:17;14908:26;14901:87;15075:6;15070:2;15051:17;15047:26;15040:42;15375:1;15372;15367:3;15348:17;15345:1;15338:5;15331;15326:51;15312:65;;;15408:44;15441:10;15408:32;:44::i;:::-;15400:77;;;;-1:-1:-1;;;15400:77:0;;15634:2:1;15400:77:0;;;15616:21:1;15673:2;15653:18;;;15646:30;15712:22;15692:18;;;15685:50;15752:18;;15400:77:0;15432:344:1;15400:77:0;14376:1109;14243:1242;;;;:::o;16566:1063::-;16682:15;16816:4;16810:11;16936:66;16917:17;16910:93;-1:-1:-1;;;;;17092:2:0;17088:51;17084:1;17065:17;17061:25;17054:86;17227:6;17222:2;17203:17;17199:26;17192:42;17525:1;17522;17518:2;17499:17;17496:1;17489:5;17482;17477:50;17463:64;;;17558:44;17591:10;17558:32;:44::i;:::-;17550:71;;;;-1:-1:-1;;;17550:71:0;;15983:2:1;17550:71:0;;;15965:21:1;16022:2;16002:18;;;15995:30;16061:16;16041:18;;;16034:44;16095:18;;17550:71:0;15781:338:1;353:154;-1:-1:-1;;;;;432:5:1;428:54;421:5;418:65;408:93;;497:1;494;487:12;408:93;353:154;:::o;512:456::-;589:6;597;605;658:2;646:9;637:7;633:23;629:32;626:52;;;674:1;671;664:12;626:52;713:9;700:23;732:31;757:5;732:31;:::i;:::-;782:5;-1:-1:-1;839:2:1;824:18;;811:32;852:33;811:32;852:33;:::i;:::-;512:456;;904:7;;-1:-1:-1;;;958:2:1;943:18;;;;930:32;;512:456::o;973:315::-;1041:6;1049;1102:2;1090:9;1081:7;1077:23;1073:32;1070:52;;;1118:1;1115;1108:12;1070:52;1157:9;1144:23;1176:31;1201:5;1176:31;:::i;:::-;1226:5;1278:2;1263:18;;;;1250:32;;-1:-1:-1;;;973:315:1:o;1293:347::-;1344:8;1354:6;1408:3;1401:4;1393:6;1389:17;1385:27;1375:55;;1426:1;1423;1416:12;1375:55;-1:-1:-1;1449:20:1;;1492:18;1481:30;;1478:50;;;1524:1;1521;1514:12;1478:50;1561:4;1553:6;1549:17;1537:29;;1613:3;1606:4;1597:6;1589;1585:19;1581:30;1578:39;1575:59;;;1630:1;1627;1620:12;1575:59;1293:347;;;;;:::o;1645:762::-;1750:6;1758;1766;1774;1782;1835:3;1823:9;1814:7;1810:23;1806:33;1803:53;;;1852:1;1849;1842:12;1803:53;1891:9;1878:23;1910:31;1935:5;1910:31;:::i;:::-;1960:5;-1:-1:-1;2017:2:1;2002:18;;1989:32;2030:33;1989:32;2030:33;:::i;:::-;2082:7;-1:-1:-1;2140:2:1;2125:18;;2112:32;2167:18;2156:30;;2153:50;;;2199:1;2196;2189:12;2153:50;2238:58;2288:7;2279:6;2268:9;2264:22;2238:58;:::i;:::-;1645:762;;;;-1:-1:-1;2315:8:1;2397:2;2382:18;2369:32;;1645:762;-1:-1:-1;;;;1645:762:1:o;2412:973::-;2535:6;2543;2551;2559;2567;2575;2583;2636:3;2624:9;2615:7;2611:23;2607:33;2604:53;;;2653:1;2650;2643:12;2604:53;2692:9;2679:23;2711:31;2736:5;2711:31;:::i;:::-;2761:5;-1:-1:-1;2818:2:1;2803:18;;2790:32;2831:33;2790:32;2831:33;:::i;:::-;2883:7;-1:-1:-1;2942:2:1;2927:18;;2914:32;2955:33;2914:32;2955:33;:::i;:::-;3007:7;-1:-1:-1;3065:2:1;3050:18;;3037:32;3092:18;3081:30;;3078:50;;;3124:1;3121;3114:12;3078:50;3163:58;3213:7;3204:6;3193:9;3189:22;3163:58;:::i;:::-;2412:973;;;;-1:-1:-1;2412:973:1;;3240:8;;3137:84;3322:3;3307:19;;3294:33;;3374:3;3359:19;3346:33;;-1:-1:-1;2412:973:1;-1:-1:-1;;;;2412:973:1:o;3390:247::-;3449:6;3502:2;3490:9;3481:7;3477:23;3473:32;3470:52;;;3518:1;3515;3508:12;3470:52;3557:9;3544:23;3576:31;3601:5;3576:31;:::i;:::-;3626:5;3390:247;-1:-1:-1;;;3390:247:1:o;4065:160::-;4130:20;;4186:13;;4179:21;4169:32;;4159:60;;4215:1;4212;4205:12;4159:60;4065:160;;;:::o;4230:315::-;4295:6;4303;4356:2;4344:9;4335:7;4331:23;4327:32;4324:52;;;4372:1;4369;4362:12;4324:52;4411:9;4398:23;4430:31;4455:5;4430:31;:::i;:::-;4480:5;-1:-1:-1;4504:35:1;4535:2;4520:18;;4504:35;:::i;:::-;4494:45;;4230:315;;;;;:::o;4550:831::-;4664:6;4672;4680;4688;4696;4704;4757:3;4745:9;4736:7;4732:23;4728:33;4725:53;;;4774:1;4771;4764:12;4725:53;4813:9;4800:23;4832:31;4857:5;4832:31;:::i;:::-;4882:5;-1:-1:-1;4939:2:1;4924:18;;4911:32;4952:33;4911:32;4952:33;:::i;:::-;5004:7;-1:-1:-1;5062:2:1;5047:18;;5034:32;5089:18;5078:30;;5075:50;;;5121:1;5118;5111:12;5075:50;5160:58;5210:7;5201:6;5190:9;5186:22;5160:58;:::i;:::-;4550:831;;;;-1:-1:-1;5237:8:1;5319:2;5304:18;;5291:32;;5370:3;5355:19;;;5342:33;;-1:-1:-1;4550:831:1;-1:-1:-1;;;;4550:831:1:o;5386:155::-;5445:5;5490:3;5481:6;5476:3;5472:16;5468:26;5465:46;;;5507:1;5504;5497:12;5465:46;-1:-1:-1;5529:6:1;5386:155;-1:-1:-1;5386:155:1:o;5546:1097::-;5703:6;5711;5719;5727;5735;5743;5751;5759;5812:3;5800:9;5791:7;5787:23;5783:33;5780:53;;;5829:1;5826;5819:12;5780:53;5868:9;5855:23;5887:31;5912:5;5887:31;:::i;:::-;5937:5;-1:-1:-1;5994:2:1;5979:18;;5966:32;6007:33;5966:32;6007:33;:::i;:::-;6059:7;-1:-1:-1;6118:2:1;6103:18;;6090:32;6131:33;6090:32;6131:33;:::i;:::-;6183:7;-1:-1:-1;6241:2:1;6226:18;;6213:32;6268:18;6257:30;;6254:50;;;6300:1;6297;6290:12;6254:50;6339:58;6389:7;6380:6;6369:9;6365:22;6339:58;:::i;:::-;6416:8;;-1:-1:-1;6313:84:1;-1:-1:-1;;6498:3:1;6483:19;;6470:33;;-1:-1:-1;6550:3:1;6535:19;;6522:33;;-1:-1:-1;6574:63:1;6629:7;6623:3;6608:19;;6574:63;:::i;:::-;6564:73;;5546:1097;;;;;;;;;;;:::o;6648:955::-;6796:6;6804;6812;6820;6828;6836;6844;6897:3;6885:9;6876:7;6872:23;6868:33;6865:53;;;6914:1;6911;6904:12;6865:53;6953:9;6940:23;6972:31;6997:5;6972:31;:::i;:::-;7022:5;-1:-1:-1;7079:2:1;7064:18;;7051:32;7092:33;7051:32;7092:33;:::i;:::-;7144:7;-1:-1:-1;7202:2:1;7187:18;;7174:32;7229:18;7218:30;;7215:50;;;7261:1;7258;7251:12;7215:50;7300:58;7350:7;7341:6;7330:9;7326:22;7300:58;:::i;:::-;7377:8;;-1:-1:-1;7274:84:1;-1:-1:-1;;7459:2:1;7444:18;;7431:32;;-1:-1:-1;7510:3:1;7495:19;;7482:33;;-1:-1:-1;7534:63:1;7589:7;7583:3;7568:19;;7534:63;:::i;:::-;7524:73;;6648:955;;;;;;;;;;:::o;9156:184::-;9226:6;9279:2;9267:9;9258:7;9254:23;9250:32;9247:52;;;9295:1;9292;9285:12;9247:52;-1:-1:-1;9318:16:1;;9156:184;-1:-1:-1;9156:184:1:o;9345:::-;-1:-1:-1;;;9394:1:1;9387:88;9494:4;9491:1;9484:15;9518:4;9515:1;9508:15;9534:125;9574:4;9602:1;9599;9596:8;9593:34;;;9607:18;;:::i;:::-;-1:-1:-1;9644:9:1;;9534:125::o;9664:271::-;9847:6;9839;9834:3;9821:33;9803:3;9873:16;;9898:13;;;9873:16;9664:271;-1:-1:-1;9664:271:1:o;10277:156::-;10343:20;;10403:4;10392:16;;10382:27;;10372:55;;10423:1;10420;10413:12;10438:1001;10520:6;10573:3;10561:9;10552:7;10548:23;10544:33;10541:53;;;10590:1;10587;10580:12;10541:53;10623:2;10617:9;10665:3;10657:6;10653:16;10735:6;10723:10;10720:22;10699:18;10687:10;10684:34;10681:62;10678:242;;;-1:-1:-1;;;10773:1:1;10766:88;10877:4;10874:1;10867:15;10905:4;10902:1;10895:15;10678:242;10940:10;10936:2;10929:22;;10988:9;10975:23;10967:6;10960:39;11060:2;11049:9;11045:18;11032:32;11027:2;11019:6;11015:15;11008:57;11126:2;11115:9;11111:18;11098:32;11093:2;11085:6;11081:15;11074:57;11164:35;11195:2;11184:9;11180:18;11164:35;:::i;:::-;11159:2;11151:6;11147:15;11140:60;11234:37;11266:3;11255:9;11251:19;11234:37;:::i;:::-;11228:3;11220:6;11216:16;11209:63;11334:3;11323:9;11319:19;11306:33;11300:3;11292:6;11288:16;11281:59;11402:3;11391:9;11387:19;11374:33;11368:3;11360:6;11356:16;11349:59;11427:6;11417:16;;;10438:1001;;;;:::o;13502:168::-;13542:7;13608:1;13604;13600:6;13596:14;13593:1;13590:21;13585:1;13578:9;13571:17;13567:45;13564:71;;;13615:18;;:::i;:::-;-1:-1:-1;13655:9:1;;13502:168::o;13675:274::-;13715:1;13741;13731:189;;-1:-1:-1;;;13773:1:1;13766:88;13877:4;13874:1;13867:15;13905:4;13902:1;13895:15;13731:189;-1:-1:-1;13934:9:1;;13675:274::o

Swarm Source

ipfs://9870dd0dc3fb83baf72036a002768c9388c9b2cbf93b6d7b09369fddefaaf877

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Chain Token Portfolio % Price Amount Value
ETH9.74%$15,548.8559$5,548.86
ETH9.40%$2,449.082.1885$5,359.71
ETH5.65%$0.00018617,269,888.3361$3,217.58
ETH4.26%$0.9994892,429.799$2,428.56
ETH4.02%$0.5618334,073.983$2,288.9
ETH1.95%$0.2659324,178.1535$1,111.1
ETH1.75%$62,3850.016$998.14
ETH1.72%$0.000002624,928,643.5247$978.82
ETH1.69%$0.06309515,259.2693$962.79
ETH1.56%$0.1603475,528.8185$886.53
ETH1.54%$0.0006231,410,311.8535$878.43
ETH1.32%$1.87403.1778$753.94
ETH1.22%$0.999807695.9658$695.83
ETH1.21%$2.26304.4457$688.05
ETH1.11%$2,449.080.2574$630.41
ETH1.03%$0.00727180,938.1854$588.52
ETH1.03%<$0.0000013,872,802,320.6437$587.26
ETH0.95%$0.001063510,815.1951$542.89
ETH0.81%$0.3029271,525.7394$462.19
ETH0.77%$0.04189110,507.8335$440.19
ETH0.65%$2,571.920.1448$372.4
ETH0.60%$143.552.3868$342.62
ETH0.59%$0.0605195,546.3607$335.66
ETH0.58%$4.1679.361$330.14
ETH0.55%$2,449.090.1287$315.11
ETH0.52%$0.0767063,834.34$294.12
ETH0.50%$8.9232.1167$286.48
ETH0.48%$0.2486261,097.6304$272.9
ETH0.42%$4.1158.4288$240.14
ETH0.42%$0.0787193,013.358$237.21
ETH0.40%$0.284462792.4734$225.43
ETH0.39%$0.997049224.8479$224.18
ETH0.38%$1,416.970.1509$213.78
ETH0.36%$0.00323164,033.7504$206.88
ETH0.36%$7.1628.8128$206.3
ETH0.36%$0.00389652,548.8156$204.76
ETH0.34%$0.0001581,237,262.4071$196.06
ETH0.33%$0.000373503,048.2958$187.49
ETH0.30%$0.00001115,800,021.336$172.54
ETH0.29%$10.8815.0624$163.88
ETH0.28%$0.0909061,724.4714$156.77
ETH0.26%$5.3527.756$148.49
ETH0.26%$0.432785339.526$146.94
ETH0.26%$0.000149983,610.2988$146.12
ETH0.25%$1.7781$143.37
ETH0.25%$37.163.8546$143.24
ETH0.25%$0.00978614,543.7046$142.32
ETH0.25%$2.4158.4099$140.77
ETH0.23%$0.0230945,743.3115$132.64
ETH0.23%$0.197601656.9663$129.82
ETH0.21%$0.0461222,616.895$120.7
ETH0.21%$76.221.5824$120.61
ETH0.20%$47.952.3861$114.41
ETH0.20%$0.189888598.2882$113.61
ETH0.20%$0.00298137,817.5345$112.73
ETH0.19%$0.266713414.1965$110.47
ETH0.19%<$0.000001285,190,437.4095$109.43
ETH0.19%$0.255158426.5896$108.85
ETH0.19%$62,5070.00172956$108.11
ETH0.18%$0.740736136.8257$101.35
ETH0.18%$0.0154936,540.001$101.32
ETH0.18%$667.570.1507$100.6
ETH0.17%<$0.0000019,392,523,220.4146$96.73
ETH0.17%$0.113581846.554$96.15
ETH0.17%$0.000019,712,515.5995$94.89
ETH0.16%$22.134.2401$93.83
ETH0.16%$2.1443.6492$93.41
ETH0.16%$1.465.7434$91.98
ETH0.16%$0.98925391.5206$90.54
ETH0.15%$1.2271.9438$87.77
ETH0.15%$0.000142613,561.487$87.42
ETH0.15%$175.1162$86.98
ETH0.15%$0.622218136.8541$85.15
ETH0.15%$0.0514051,620.3184$83.29
ETH0.15%$2.3435.5316$83.14
ETH0.14%$0.025893,175.4235$82.21
ETH0.14%<$0.0000015,691,406,387.3163$81.11
ETH0.14%$0.110685720.8841$79.79
ETH0.14%$0.00357422,167.5802$79.23
ETH0.13%<$0.00000116,773,297,888.6876$76.15
ETH0.13%$0.171548425.8212$73.05
ETH0.13%$0.0084938,570.4955$72.79
ETH0.13%$0.459891157.6385$72.5
ETH0.13%$0.0000174,231,649.1669$71.98
ETH0.12%$0.00000183,353,465.6126$70.74
ETH0.12%$581.150.12$69.72
ETH0.12%$3.3820.4578$69.15
ETH0.12%$53.971.2762$68.88
ETH0.12%$0.69077498.2713$67.88
ETH0.12%$0.0079468,535.6008$67.83
ETH0.11%$0.0148644,358.5888$64.78
ETH0.11%$22.712.8353$64.39
ETH0.11%$0.270683237.4733$64.28
ETH0.11%<$0.0000014,467,158,276.8727$63.98
ETH0.11%$0.0598761,058.1038$63.35
ETH0.11%<$0.00000154,661,125,756.009$61.93
ETH0.11%$4,107.90.015$61.74
ETH0.10%$0.0062719,490.3884$59.51
ETH0.10%$0.0000371,615,000$59.46
ETH0.10%$0.328379177.869$58.41
ETH0.10%$0.288051199.7921$57.55
ETH0.10%$0.6326290.9373$57.53
ETH0.10%$0.7875371.8596$56.59
ETH0.10%$0.0000087,066,924.7656$55.9
ETH0.10%<$0.0000013,369,230,090.9358$55.16
ETH0.10%$0.101487535.1523$54.31
ETH0.09%$0.0318271,682.0709$53.54
ETH0.09%$0.475666110.6619$52.64
ETH0.09%$7.786.6188$51.49
ETH0.09%$0.0121424,190.3572$50.88
ETH0.09%$0.233518216.4782$50.55
ETH0.09%$0.0272841,779.1894$48.54
ETH0.08%<$0.0000013,145,000,000$47.91
ETH0.08%$0.0000077,146,844.4193$47.8
ETH0.08%$1.0246.92$47.72
ETH0.08%$0.0314651,515.3836$47.68
ETH0.08%$1.8724.923$46.67
ETH0.08%$0.000124370,674.4047$46.12
ETH0.08%$1.0244.294$45.27
ETH0.08%$16.712.7018$45.15
ETH0.08%$0.00047195,400.719$44.94
ETH0.08%$0.52522784.6238$44.45
ETH0.08%$0.153335279.2995$42.83
ETH0.07%<$0.0000014,506,919,451.0494$42.62
ETH0.07%$2,649.130.016$42.44
ETH0.07%$0.99980840.75$40.74
ETH0.07%$0.37627107.5811$40.48
ETH0.07%$0.237304167.0614$39.64
ETH0.07%$0.99840939.1918$39.13
ETH0.07%$0.0289611,335.7572$38.68
ETH0.07%$0.0005372,674.8363$38.5
ETH0.07%$1.1234$37.99
ETH0.07%$0.012213,085.6486$37.68
ETH0.07%$137.515$37.52
ETH0.06%$2.7313.5139$36.89
ETH0.06%$0.28063130.9433$36.75
ETH0.06%$43.010.85$36.56
ETH0.06%$0.0210651,734.1824$36.53
ETH0.06%$0.265703136.5323$36.28
ETH0.06%<$0.000001256,974,863.2515$36.22
ETH0.06%$1.1531.395$36.1
ETH0.06%$0.195561182.2103$35.63
ETH0.06%$1.4624.2598$35.42
ETH0.06%$0.119911294.6812$35.34
ETH0.06%$1.4124.9213$35.14
ETH0.06%$0.000085398,025.7442$34
ETH0.06%$1.4922.7802$33.94
ETH0.06%<$0.0000012,107,716,428.8369$33.35
ETH0.06%$1.3524.6732$33.31
ETH0.06%$0.203517162.948$33.16
ETH0.06%$168.120.1968$33.08
ETH0.06%<$0.0000018,886,573,053.1923$32.46
ETH0.06%$0.0250531,264.7357$31.69
ETH0.06%$0.00274211,530.2011$31.61
ETH0.06%$0.010243,083.3809$31.57
ETH0.06%$0.0122962,562.3121$31.51
ETH0.05%$2,497.310.0125$31.33
ETH0.05%$62,4360.00049705$31.03
ETH0.05%<$0.0000013,665,646,073.8293$30.93
ETH0.05%$0.00012257,940.9594$30.83
ETH0.05%$0.0000152,069,299.4659$30.69
ETH0.05%<$0.000001180,124,087.1507$30.62
ETH0.05%$0.34951185.9125$30.03
ETH0.05%$0.70714141.9912$29.69
ETH0.05%$26.81.1062$29.65
ETH0.05%$0.225729131.2734$29.63
ETH0.05%$0.32869790.143$29.63
ETH0.05%$1.1226.2885$29.44
ETH0.05%$0.042016694.9693$29.2
ETH0.05%<$0.0000017,081,470,123.6697$29.14
ETH0.05%$16.381.7748$29.07
ETH0.05%$0.0083383,482.9731$29.04
ETH0.05%$0.287279100.6973$28.93
ETH0.05%$0.246445116.0789$28.61
ETH0.05%$0.98840928.8035$28.47
ETH0.05%$0.119647236.9665$28.35
ETH0.05%$0.049839566.2762$28.22
ETH0.05%$1.6716.8839$28.2
ETH0.05%$0.0201811,387.7124$28.01
ETH0.05%$0.3847872.7191$27.98
ETH0.05%$0.159694173.7432$27.75
ETH0.05%$1.0127.381$27.71
ETH0.05%$0.0000112,578,319.0915$27.67
ETH0.05%$36.80.7517$27.66
ETH0.05%$0.000021,383,129.8813$27.6
ETH0.05%$0.092883292.9458$27.21
ETH0.05%$2,890.850.00938585$27.13
ETH0.05%$0.227211119.2146$27.09
ETH0.05%$0.74560336.0692$26.89
ETH0.05%$0.182131147.0737$26.79
ETH0.05%$0.29560688.8848$26.27
ETH0.05%$0.057353455.2901$26.11
ETH0.05%$0.0032827,843.2438$25.74
ETH0.05%$0.87997329.1707$25.67
ETH0.05%$0.0000092,821,772.7631$25.67
ETH0.04%$125.5$25.5
ETH0.04%$0.072561346.2867$25.13
ETH0.04%$19.951.2538$25.02
ETH0.04%$0.101808244.6315$24.91
ETH0.04%$4.965.01$24.85
ETH0.04%$0.118082209.8126$24.78
ETH0.04%$0.069734353.454$24.65
ETH0.04%$0.00168214,584.4165$24.53
ETH0.04%$0.25309695.8507$24.26
ETH0.04%$1.0922.0239$24.03
ETH0.04%$0.24217799.1015$24
ETH0.04%$0.028662833.994$23.9
ETH0.04%$9.692.4021$23.29
ETH0.04%$0.3012777.0389$23.21
ETH0.04%$0.46141450.0514$23.09
ETH0.04%$0.024386943.5$23.01
ETH0.04%$1.9711.5217$22.7
ETH0.04%$0.043022518.9466$22.33
ETH0.04%$0.0106922,058.0033$22
ETH0.04%$4.634.7233$21.87
ETH0.04%$0.00190511,428.3612$21.77
ETH0.04%$0.089734242.1811$21.73
ETH0.04%$0.114682188.6062$21.63
ETH0.04%$0.022558954.0503$21.52
ETH0.04%$0.31648167.1918$21.26
ETH0.04%$0.140356149.3154$20.96
ETH0.04%$11.181.8662$20.86
ETH0.04%$5.223.9923$20.84
ETH0.04%$4.634.4969$20.82
ETH0.04%$0.022632916.3084$20.74
ETH0.04%$0.131409157.6266$20.71
ETH0.04%$0.113629182.1424$20.7
ETH0.04%$0.0029427,032.5598$20.69
ETH0.04%$0.00115817,622.9241$20.41
ETH0.04%$0.99838620.4$20.37
ETH0.04%$585.10.0346$20.23
ETH0.04%$0.0117541,707.9668$20.08
ETH0.03%$0.062233318.7796$19.84
ETH0.03%$0.60965332.4237$19.77
ETH0.03%$1.969.9501$19.5
ETH0.03%$0.111152175.2049$19.47
ETH0.03%$0.046753413.1872$19.32
ETH0.03%$1.4413.0408$18.78
ETH0.03%$0.0000072,849,219.0696$18.75
ETH0.03%$2.049.1736$18.71
ETH0.03%$0.166191111.8626$18.59
ETH0.03%$1.3713.5065$18.5
ETH0.03%<$0.00000164,314,650,040.1513$18.37
ETH0.03%$2,740.540.0066022$18.09
ETH0.03%<$0.000001144,355,427.6863$18
ETH0.03%$0.0064332,796.5$17.99
ETH0.03%$0.84156121.3544$17.97
ETH0.03%$0.51842634.3858$17.83
ETH0.03%$0.155627114.5435$17.83
ETH0.03%$0.0000171,024,412.4254$17.62
ETH0.03%$1.1515.2304$17.54
ETH0.03%$0.0020178,666.3326$17.48
ETH0.03%$0.0156911,109.1696$17.4
ETH0.03%$0.149519115.8497$17.32
ETH0.03%$0.99940317.3128$17.3
ETH0.03%$0.99857817.3004$17.28
ETH0.03%$0.30825855.8868$17.23
ETH0.03%$35.7286$17.19
ETH0.03%$0.0004835,772.4454$17.18
ETH0.03%$2.656.4776$17.16
ETH0.03%$5.73.0056$17.13
ETH0.03%$0.0004141,767.0719$17.12
ETH0.03%$16.691.02$17.02
ETH0.03%$0.02218752.3071$16.69
ETH0.03%$3.085.3857$16.58
ETH0.03%$0.133572123.2817$16.47
ETH0.03%$0.95836817.1739$16.46
ETH0.03%$0.45263235.7761$16.19
ETH0.03%$0.5445629.648$16.15
ETH0.03%$0.00084618,897.0545$15.98
ETH0.03%$1.4410.9791$15.85
ETH0.03%$0.99696215.773$15.73
ETH0.03%$0.52497729.8754$15.68
ETH0.03%$0.0000121,336,052.7946$15.64
ETH0.03%$0.0047163,258.8715$15.37
ETH0.03%$1.1912.8561$15.33
ETH0.03%$0.00130111,767.4767$15.31
ETH0.03%<$0.000001207,963,637,365.318$15.26
ETH0.03%$4.273.5354$15.11
ETH0.03%$0.052569286.236$15.05
ETH0.03%$0.075294197.1008$14.84
ETH0.03%$3.434.32$14.82
ETH0.03%$2,457.550.0060271$14.81
ETH0.03%$0.038912378.7128$14.74
ETH0.03%$0.020735708.7952$14.7
ETH0.03%$0.017146850.6958$14.59
ETH0.03%$0.0062532,328.8229$14.56
ETH0.03%$0.0114631,259.002$14.43
ETH0.03%$0.083543172.1809$14.38
ETH0.03%$1.0813.2061$14.26
ETH0.02%$0.102085139.381$14.23
ETH0.02%<$0.000001280,588,004.2463$14.15
ETH0.02%$0.33487542.0568$14.08
ETH0.02%<$0.00000111,101,258,362.6911$14.04
ETH0.02%$0.0000072,012,873.2416$13.97
ETH0.02%$0.18045477.2878$13.95
ETH0.02%$0.61808122.5021$13.91
ETH0.02%$2.75.1225$13.83
ETH0.02%$0.053007259.3451$13.75
ETH0.02%$0.089391151.7083$13.56
ETH0.02%$0.053064254.1677$13.49
ETH0.02%$0.121982109.5995$13.37
ETH0.02%$0.98919813.3023$13.16
ETH0.02%$0.0114711,146.9006$13.16
ETH0.02%$143.550.0902$12.95
ETH0.02%$0.000037350,954.5206$12.87
ETH0.02%$1.111.5806$12.74
ETH0.02%$0.019701644.573$12.7
ETH0.02%$42.90.2951$12.66
ETH0.02%$0.00000110,866,821.9193$12.57
ETH0.02%$0.047026264.8101$12.45
ETH0.02%$0.035195350.493$12.34
ETH0.02%$0.21142458.1284$12.29
ETH0.02%$0.014477840.1892$12.16
ETH0.02%$0.015906764.0285$12.15
ETH0.02%$0.035586340.4262$12.11
ETH0.02%$0.000084144,202$12.06
ETH0.02%$0.0015697,682.2161$12.06
ETH0.02%<$0.000001391,718,019.443$11.94
ETH0.02%$1.687.0961$11.92
ETH0.02%$1.0111.6746$11.84
ETH0.02%$0.0000043,037,364.5381$11.73
ETH0.02%$0.00087813,349.7064$11.72
ETH0.02%$0.086352135.6043$11.71
ETH0.02%$0.53235521.9645$11.69
ETH0.02%$0.013074890.8358$11.65
ETH0.02%$0.0064811,790.8883$11.61
ETH0.02%$270.50.0427$11.56
ETH0.02%$0.89291912.8178$11.45
ETH0.02%$0.0023934,742$11.35
ETH0.02%$0.079776141.4624$11.29
ETH0.02%$0.9904811.05$10.94
ETH0.02%$0.0022554,847.4202$10.93
ETH0.02%$2.145.0745$10.86
ETH0.02%$0.39835627.2391$10.85
ETH0.02%$0.065538165.2376$10.83
ETH0.02%$0.0013547,954.6727$10.77
ETH0.02%$2,490.580.00425$10.58
ETH0.02%$0.0065891,604.7358$10.57
ETH0.02%$2,572.860.0041021$10.55
ETH0.02%$13.520.7734$10.46
ETH0.02%$0.081029128.4472$10.41
ETH0.02%$0.0203512.151$10.4
ETH0.02%$0.0000025,927,265.0688$10.22
ETH0.02%$0.027704366.3789$10.15
ETH0.02%$0.019282525.0302$10.12
ETH0.02%$1.168.721$10.12
ETH0.02%$1.287.8623$10.05
ETH0.02%$0.042507235.8516$10.03
ETH0.02%$0.22381644.4613$9.95
ETH0.02%<$0.00000120,919,539.5734$9.92
ETH0.02%$0.6875914.3518$9.87
ETH0.02%$0.0010419,469.7797$9.86
ETH0.02%$0.024384403.75$9.84
ETH0.02%$0.01603613.5748$9.84
ETH0.02%$33.690.2912$9.81
ETH0.02%$44.580.219$9.76
ETH0.02%$0.64472915.0835$9.72
ETH0.02%$0.008671,109.1302$9.62
ETH0.02%$0.00087211,011.0086$9.6
ETH0.02%$0.12113479.0852$9.58
ETH0.02%$0.00000118,766,116.756$9.56
ETH0.02%$0.0000081,133,059.8591$9.46
ETH0.02%<$0.000001107,828,561.703$9.43
ETH0.02%$0.46780620.0488$9.38
ETH0.02%$0.000014653,076.867$9.33
ETH0.02%$0.00077811,967.1442$9.31
ETH0.02%$1.546.0256$9.29
ETH0.02%$0.15125260.6372$9.17
ETH0.02%$1.138.1065$9.16
ETH0.02%$0.0000051,717,283.8027$9.08
ETH0.02%$0.12643571.7186$9.07
ETH0.02%$0.023399386.4744$9.04
ETH0.02%<$0.00000134,528,094.327$9.01
ETH0.02%$0.9727549.2585$9.01
ETH0.02%<$0.0000011,478,453,390.7652$8.9
ETH0.02%$0.33426326.5815$8.89
ETH0.02%$0.00038922,723.3983$8.84
ETH0.02%$0.66918813.1296$8.79
ETH0.02%$0.018982462.5766$8.78
ETH0.02%$0.0049821,757.0218$8.75
ETH0.02%$0.0019454,462.5$8.68
ETH0.02%$0.0004917,700.8237$8.68
ETH0.02%$0.9899368.6445$8.56
ETH0.02%$0.013069654.791$8.56
ETH0.01%$62,6350.000136$8.52
ETH0.01%$0.070501120.1535$8.47
ETH0.01%$0.12300168$8.36
ETH0.01%$0.40719120.5017$8.35
ETH0.01%$0.081189101.62$8.25
ETH0.01%$0.000064127,156.1057$8.19
ETH0.01%$0.04143196.8685$8.16
ETH0.01%$0.30734626.4026$8.11
ETH0.01%$0.00018244,440.4202$8.11
ETH0.01%$0.037929213.3868$8.09
ETH0.01%$0.11835668.3036$8.08
ETH0.01%$12.050.6708$8.08
ETH0.01%$0.00019441,660.9815$8.07
ETH0.01%$0.9488178.4858$8.05
ETH0.01%$0.0014645,489.3784$8.04
ETH0.01%$0.019273416.0077$8.02
ETH0.01%$1.087.4008$8.02
ETH0.01%$0.0000017,015,356.8008$8
ETH0.01%$0.34111923.3237$7.96
ETH0.01%$0.0005414,737.2924$7.96
ETH0.01%$21.610.3668$7.93
ETH0.01%$0.050189157.6224$7.91
ETH0.01%$0.00013757,419.0543$7.85
ETH0.01%<$0.000001698,158,398.8623$7.81
ETH0.01%$0.0000041,932,904.0345$7.71
ETH0.01%$0.0016054,806.9331$7.71
ETH0.01%$0.0045771,679.0344$7.68
ETH0.01%$0.00044817,000$7.62
ETH0.01%$0.025606297.5$7.62
ETH0.01%$0.14192753.1575$7.54
ETH0.01%$0.61792312.1527$7.51
ETH0.01%$0.11344365.5194$7.43
ETH0.01%$0.0000024,141,027.3347$7.37
ETH0.01%$0.0018733,913.5125$7.33
ETH0.01%$1.983.6826$7.29
ETH0.01%$0.0070251,037.0734$7.28
ETH0.01%$0.052399138.2433$7.24
ETH0.01%$0.042461170.5927$7.24
ETH0.01%$0.011593619.7828$7.18
ETH0.01%$0.0000032,473,966.9937$7.17
ETH0.01%<$0.000001812,807,335.3001$7.16
ETH0.01%$836.470.0085$7.11
ETH0.01%$0.0033452,125$7.11
ETH0.01%$0.039722178.4376$7.09
ETH0.01%$12.910.5464$7.05
ETH0.01%$15.980.4399$7.03
ETH0.01%$0.000021327,151.1437$6.96
ETH0.01%$0.13373251.8083$6.93
ETH0.01%$2.173.1393$6.81
ETH0.01%$2.942.2744$6.68
ETH0.01%$0.33401719.7277$6.59
ETH0.01%$0.012331531.0794$6.55
ETH0.01%$0.25373425.6249$6.5
ETH0.01%$0.011693549.5251$6.43
ETH0.01%$0.060439105.9919$6.41
ETH0.01%$0.9998816.3998$6.4
ETH0.01%<$0.00000124,463,879.9844$6.38
ETH0.01%$1.63.9502$6.32
ETH0.01%$0.000043148,556.2803$6.31
ETH0.01%$0.08144677.2673$6.29
ETH0.01%$0.25568124.1136$6.17
ETH0.01%$0.27403222.4546$6.15
ETH0.01%<$0.000001387,906,250.7352$6.11
ETH0.01%$0.00007482,550.6273$6.11
ETH0.01%$0.0009476,445.7955$6.11
ETH0.01%$0.11116154.7155$6.08
ETH0.01%$0.0000016,943,156.1275$5.97
ETH0.01%$0.0000016,397,045.7673$5.92
ETH0.01%$0.00034916,807.8605$5.87
ETH0.01%$0.9996195.8668$5.86
ETH0.01%$0.27529121.25$5.85
ETH0.01%$0.027027215.2231$5.82
ETH0.01%$1.463.9839$5.82
ETH0.01%<$0.00000144,003,885.558$5.8
ETH0.01%$1.683.4339$5.78
ETH0.01%$0.046291123.8092$5.73
ETH0.01%$0.21392626.7391$5.72
ETH0.01%<$0.0000012,149,541,949.6776$5.72
ETH<0.01%$1.92.9724$5.65
ETH<0.01%$8.280.6802$5.63
ETH<0.01%$0.037404150.2847$5.62
ETH<0.01%$0.0053971,030.5698$5.56
ETH<0.01%$0.34732416.0073$5.56
ETH<0.01%$0.050066110.5595$5.54
ETH<0.01%$0.46730211.7881$5.51
ETH<0.01%<$0.00000145,050,000,000$5.5
ETH<0.01%$0.12644643.4467$5.49
ETH<0.01%$0.0046941,156.3202$5.43
ETH<0.01%$0.039151137.8533$5.4
ETH<0.01%$0.20868725.517$5.33
ETH<0.01%$0.05887190.1801$5.31
ETH<0.01%$0.07700767.6776$5.21
ETH<0.01%$0.11578744.622$5.17
ETH<0.01%<$0.00000113,228,765.685$5.12
ETH<0.01%<$0.0000012,899,880,472.6245$5.07
ETH<0.01%$0.036847137.4568$5.06
ETH<0.01%$0.044511112.764$5.02
ETH<0.01%$595.150.00821634$4.89
ETH<0.01%$0.2814617.3575$4.89
ETH<0.01%$10.630.459$4.88
ETH<0.01%$0.45805610.6038$4.86
ETH<0.01%$0.07375965.3668$4.82
ETH<0.01%$0.14206733.7045$4.79
ETH<0.01%$0.9153895.18$4.74
ETH<0.01%$0.00040411,689.2509$4.72
ETH<0.01%$0.0031831,472.9484$4.69
ETH<0.01%<$0.0000013,665,333,705.4162$4.67
ETH<0.01%$0.001233,776.8312$4.65
ETH<0.01%$0.036392127.5$4.64
ETH<0.01%$0.00039611,625.6176$4.6
ETH<0.01%<$0.000001511,446,987.2353$4.55
ETH<0.01%$0.0043531,044.6496$4.55
ETH<0.01%$0.018427246.7015$4.55
ETH<0.01%$0.00026716,822.4467$4.49
ETH<0.01%$0.00016726,847.7395$4.49
ETH<0.01%$1.114.0359$4.48
ETH<0.01%$0.08474352.8101$4.48
ETH<0.01%$0.05228985$4.44
ETH<0.01%$68.550.0648$4.44
ETH<0.01%$3.161.3949$4.41
ETH<0.01%$0.26004116.9167$4.4
ETH<0.01%$0.0005418,112.4709$4.39
ETH<0.01%$0.000011388,782.9786$4.36
ETH<0.01%$0.37979611.4359$4.34
ETH<0.01%$0.0021881,971.24$4.31
ETH<0.01%$0.004764901.2159$4.29
ETH<0.01%$6.390.6718$4.29
ETH<0.01%$2,448.550.0017495$4.28
ETH<0.01%$4.610.926$4.27
ETH<0.01%$0.0000013,339,918.1582$4.26
ETH<0.01%$0.009342455.6313$4.26
ETH<0.01%$0.24903717$4.23
ETH<0.01%$1.772.3903$4.22
ETH<0.01%$0.004307970.9301$4.18
ETH<0.01%$0.17155424.3644$4.18
ETH<0.01%$5.440.7678$4.18
ETH<0.01%$0.000039104,380.5958$4.09
ETH<0.01%<$0.00000165,995,421.5601$4.08
ETH<0.01%$0.23755916.8272$4
ETH<0.01%$0.17839522.2203$3.96
ETH<0.01%$13.250.2927$3.88
ETH<0.01%$0.31173112.427$3.87
ETH<0.01%$0.0000015,510,495.5947$3.85
ETH<0.01%<$0.0000011,744,108,426.0864$3.84
ETH<0.01%$0.000022170,855.387$3.83
ETH<0.01%$409,012.760.00000935$3.82
ETH<0.01%$2,504.560.00152387$3.82
ETH<0.01%$0.10753235.3823$3.8
ETH<0.01%$0.2212317.1789$3.8
ETH<0.01%$0.004801790.3529$3.79
ETH<0.01%$17.790.2131$3.79
ETH<0.01%$0.18154320.7824$3.77
ETH<0.01%$0.06591856.5784$3.73
ETH<0.01%$0.05833863.7025$3.72
ETH<0.01%$0.006679555.9895$3.71
ETH<0.01%$0.027015136.967$3.7
ETH<0.01%$0.0025421,438.838$3.66
ETH<0.01%$0.0010553,448.7995$3.64
ETH<0.01%$0.010753337.6885$3.63
ETH<0.01%$0.0680553.2755$3.63
ETH<0.01%$0.21595116.72$3.61
ETH<0.01%$1.971.8226$3.59
ETH<0.01%$0.005019710.4542$3.57
ETH<0.01%$1.392.55$3.53
ETH<0.01%$0.27547812.7434$3.51
ETH<0.01%$0.020427171.6954$3.51
ETH<0.01%$14.690.2372$3.48
ETH<0.01%$5.990.5792$3.47
ETH<0.01%$0.13515125.2267$3.41
ETH<0.01%$0.27400212.4025$3.4
ETH<0.01%$0.7853854.3091$3.38
ETH<0.01%$0.3802698.8828$3.38
ETH<0.01%$0.004959678.3779$3.36
ETH<0.01%$0.00028511,618.1343$3.31
ETH<0.01%$0.24297613.4686$3.27
ETH<0.01%$0.03687188.579$3.27
ETH<0.01%$0.00006648,922.9096$3.21
ETH<0.01%$1.532.0769$3.18
ETH<0.01%$0.0014592,178.1244$3.18
ETH<0.01%$2,553.080.00124272$3.17
ETH<0.01%$0.002211,428.9727$3.16
ETH<0.01%$0.029854105.4488$3.15
ETH<0.01%$2,738.490.00113667$3.11
ETH<0.01%$2.881.0754$3.1
ETH<0.01%$262.040.0118$3.09
ETH<0.01%$0.00181,712.4813$3.08
ETH<0.01%$0.0005935,134.0009$3.05
ETH<0.01%<$0.000001889,652,488.0455$3.03
ETH<0.01%$0.003353902.0193$3.02
ETH<0.01%$0.000009346,093.2192$3.01
ETH<0.01%$0.025678116.1678$2.98
ETH<0.01%$0.014182209.8799$2.98
ETH<0.01%$0.4540086.4098$2.91
ETH<0.01%$0.5481265.2942$2.9
ETH<0.01%$0.09681829.8443$2.89
ETH<0.01%$0.000003826,012.5956$2.85
ETH<0.01%$0.7048013.9925$2.81
ETH<0.01%$0.000004701,774.45$2.79
ETH<0.01%$0.012133229.9241$2.79
ETH<0.01%$0.0022011,258.127$2.77
ETH<0.01%$0.024706111.8159$2.76
ETH<0.01%$0.0020771,327.105$2.76
ETH<0.01%$1.292.125$2.74
ETH<0.01%$0.015706174.0484$2.73
ETH<0.01%$0.0024071,135.192$2.73
ETH<0.01%$21.930.1241$2.72
ETH<0.01%<$0.0000011,544,166,646.6789$2.71
ETH<0.01%$0.3348068.1003$2.71
ETH<0.01%$17.840.1513$2.7
ETH<0.01%$0.0000013,664,460.7845$2.69
ETH<0.01%$0.013058205.2317$2.68
ETH<0.01%$116.840.0226$2.64
ETH<0.01%$0.0011032,370.1646$2.62
ETH<0.01%<$0.000001221,195,839.7273$2.61
ETH<0.01%$0.014445180.3912$2.61
ETH<0.01%$0.13835718.7$2.59
ETH<0.01%$1.292.0025$2.58
ETH<0.01%$1.431.802$2.58
ETH<0.01%$0.9990762.5548$2.55
ETH<0.01%$0.0004285,943.7202$2.55
ETH<0.01%$0.02959485.8784$2.54
ETH<0.01%$0.00024810,214.4429$2.53
ETH<0.01%$0.02670994.8314$2.53
ETH<0.01%$0.03830166.1121$2.53
ETH<0.01%$0.07003835.742$2.5
ETH<0.01%$0.12244720.3315$2.49
ETH<0.01%$0.000005475,702.703$2.47
ETH<0.01%$16.90.1452$2.45
ETH<0.01%$0.0002878,500.0076$2.44
ETH<0.01%$1.781.3691$2.44
ETH<0.01%$0.09418425.589$2.41
ETH<0.01%$0.0001417,162.3794$2.41
ETH<0.01%$0.008317289$2.4
ETH<0.01%$81.470.029$2.37
ETH<0.01%$0.003023782.093$2.36
ETH<0.01%$1.042.2762$2.36
ETH<0.01%$0.000018130,165.494$2.32
ETH<0.01%$0.00003566,213.1775$2.32
ETH<0.01%$0.002595893.7925$2.32
ETH<0.01%$3.820.6069$2.32
ETH<0.01%$0.0000013,822,773.3283$2.32
ETH<0.01%$0.0659834.8417$2.3
ETH<0.01%$0.0644735.5218$2.29
ETH<0.01%<$0.0000011,781,723,396.0386$2.25
ETH<0.01%<$0.0000014,250,000,000.0074$2.25
ETH<0.01%$0.0008992,503.1397$2.25
ETH<0.01%$0.01758127.8821$2.25
ETH<0.01%$0.011577189.0986$2.19
ETH<0.01%$0.4593044.7515$2.18
ETH<0.01%$0.0004015,441.8358$2.18
ETH<0.01%$0.6912013.1072$2.15
ETH<0.01%<$0.0000013,263,345,570.3515$2.14
ETH<0.01%<$0.000001204,000,000$2.14
ETH<0.01%$0.3470356.1334$2.13
ETH<0.01%<$0.000001823,099,233.0138$2.12
ETH<0.01%$15.30.1382$2.11
ETH<0.01%<$0.0000015,504,220.3313$2.11
ETH<0.01%$0.11450818.2585$2.09
ETH<0.01%$0.00526396.2499$2.08
ETH<0.01%$0.09649921.5567$2.08
ETH<0.01%$0.000003705,144.9008$2.04
ETH<0.01%$0.0002717,436.4904$2.02
ETH<0.01%$0.15345113.0916$2.01
ETH<0.01%$0.2508887.9656$2
ETH<0.01%$0.013352149.5553$2
ETH<0.01%<$0.00000122,533,956.8663$2
ETH<0.01%$0.02123691.7321$1.95
ETH<0.01%$0.000002917,564.4174$1.95
ETH<0.01%$7.210.264$1.9
ETH<0.01%<$0.0000014,407,427.5559$1.9
ETH<0.01%$0.00012914,601.2286$1.89
ETH<0.01%$0.05866932.2222$1.89
ETH<0.01%$1.891$1.89
ETH<0.01%$96.750.0195$1.88
ETH<0.01%$0.015277122.6109$1.87
ETH<0.01%$0.015577118.8034$1.85
ETH<0.01%<$0.0000014,798,061.8823$1.83
ETH<0.01%$0.04402141.5156$1.83
ETH<0.01%<$0.000001269,300,816.151$1.83
ETH<0.01%$0.0010031,787.5776$1.79
ETH<0.01%<$0.0000011,445,000,970.4449$1.79
ETH<0.01%$0.03831746.6241$1.79
ETH<0.01%$1.920.9243$1.77
ETH<0.01%$0.12159614.4989$1.76
ETH<0.01%$0.9998591.7319$1.73
ETH<0.01%$13.510.1275$1.72
ETH<0.01%<$0.000001364,608,391.7673$1.72
ETH<0.01%$0.5042553.4$1.71
ETH<0.01%$0.04906434.765$1.71
ETH<0.01%$0.003921433.5$1.7
ETH<0.01%$0.2638026.443$1.7
ETH<0.01%$0.0469436.1819$1.7
ETH<0.01%$0.00010915,350.6134$1.67
ETH<0.01%<$0.000001297,764,050.1661$1.66
ETH<0.01%$0.04877634$1.66
ETH<0.01%$0.00002178,649.6849$1.66
ETH<0.01%$0.04343437.9464$1.65
ETH<0.01%$0.005314307.8062$1.64
ETH<0.01%$0.005452297.9647$1.62
ETH<0.01%$0.016081100.2323$1.61
ETH<0.01%$0.02143174.6598$1.6
ETH<0.01%$0.00007222,192.5014$1.6
ETH<0.01%$0.038241.6975$1.59
ETH<0.01%$2.770.5745$1.59
ETH<0.01%$0.01612398.443$1.59
ETH<0.01%$0.0215573.5338$1.58
ETH<0.01%$0.0000011,461,220.0779$1.56
ETH<0.01%$0.0000011,973,567.8593$1.56
ETH<0.01%$0.1646099.4723$1.56
ETH<0.01%$0.004078379.9529$1.55
ETH<0.01%$0.004588335.9286$1.54
ETH<0.01%$0.7045112.1854$1.54
ETH<0.01%$0.11795413.0387$1.54
ETH<0.01%<$0.0000011,077,316,186.6046$1.53
ETH<0.01%$0.003762403.2692$1.52
ETH<0.01%$0.2908885.2057$1.51
ETH<0.01%$0.008869170.4793$1.51
ETH<0.01%$0.14474610.3413$1.5
ETH<0.01%$0.001931773.9163$1.49
ETH<0.01%<$0.0000014,161,219.6359$1.49
ETH<0.01%$0.000009170,000$1.47
ETH<0.01%$0.06483922.6039$1.47
ETH<0.01%$0.0003863,760.4479$1.45
ETH<0.01%$0.4259773.4021$1.45
ETH<0.01%$0.08916.1465$1.44
ETH<0.01%$0.02682152.3829$1.4
ETH<0.01%$0.05173327.0607$1.4
ETH<0.01%$0.6744112.0725$1.4
ETH<0.01%$1.660.8378$1.39
ETH<0.01%$0.000006250,253.079$1.39
ETH<0.01%$0.011828115.2619$1.36
ETH<0.01%$0.01713479.3742$1.36
ETH<0.01%$0.02009667.4703$1.36
ETH<0.01%$0.2884734.6974$1.36
ETH<0.01%$0.003161423.8583$1.34
ETH<0.01%$0.11903511.1492$1.33
ETH<0.01%<$0.000001543,814,280.612$1.32
ETH<0.01%$0.8369411.5638$1.31
ETH<0.01%$0.0001618,000.6406$1.29
ETH<0.01%$0.08246915.6324$1.29
ETH<0.01%$0.002055625.2375$1.28
ETH<0.01%$0.9993431.275$1.27
ETH<0.01%$73.690.017$1.25
ETH<0.01%$0.000002630,702.6688$1.25
ETH<0.01%$0.0008871,394.078$1.24
ETH<0.01%$0.1513358.1394$1.23
ETH<0.01%$0.10537811.6732$1.23
ETH<0.01%$0.001712709.6558$1.21
ETH<0.01%$0.2055795.8695$1.21
ETH<0.01%$0.05127823.375$1.2
ETH<0.01%$0.003862307.1964$1.19
ETH<0.01%$0.002625450.8357$1.18
ETH<0.01%$0.04603425.4545$1.17
ETH<0.01%$0.01843363.0151$1.16
ETH<0.01%$0.02463746.75$1.15
ETH<0.01%<$0.000001590,689,916.4389$1.15
ETH<0.01%$0.1653326.9517$1.15
ETH<0.01%$0.05766819.7747$1.14
ETH<0.01%$0.00004923,475.2648$1.14
ETH<0.01%$0.000008136,571.9974$1.14
ETH<0.01%$21.760.0522$1.14
ETH<0.01%$0.7376121.5353$1.13
ETH<0.01%$0.3992262.7927$1.11
ETH<0.01%$0.10115210.8904$1.1
ETH<0.01%$0.02379246.0623$1.1
ETH<0.01%$5.530.1981$1.09
ETH<0.01%$0.002185493.905$1.08
ETH<0.01%$0.00159677.3451$1.08
ETH<0.01%$0.1288988.2875$1.07
ETH<0.01%$2,583.350.00040912$1.06
ETH<0.01%$0.1342857.803$1.05
ETH<0.01%$0.02087850.0026$1.04
ETH<0.01%<$0.00000112,212,677.0567$1.04
ETH<0.01%$120.660.0085$1.03
ETH<0.01%$0.0001148,939.8325$1.02
ETH<0.01%$0.007381138.0394$1.02
ETH<0.01%$0.0001268,046.0176$1.02
ETH<0.01%$0.00115882.1142$1.01
ETH<0.01%<$0.0000012,864,551,207.1857$1.01
ETH<0.01%$0.0000011,260,167.2523$1.01
ETH<0.01%$2,550.650.0003964$1.01
ETH<0.01%$0.2777233.6284$1.01
ETH<0.01%$0.07943912.6143$1
ETH<0.01%$0.05836116.9575$0.9896
ETH<0.01%<$0.00000131,680,531,125,165.6$0.982
ETH<0.01%$0.0002294,250$0.9752
ETH<0.01%$0.4662582.086$0.9726
ETH<0.01%$0.01900851$0.9694
ETH<0.01%$0.0005981,614.7076$0.9659
ETH<0.01%$1.110.8657$0.9609
ETH<0.01%$0.0008461,133.0944$0.959
ETH<0.01%$0.003016316.2069$0.9538
ETH<0.01%$7.990.1178$0.9414
ETH<0.01%$0.768141.2226$0.9391
ETH<0.01%$1.220.7695$0.9388
ETH<0.01%$0.0233239.9533$0.9317
ETH<0.01%$0.4368862.1302$0.9306
ETH<0.01%<$0.0000011,020,879,602.865$0.924
ETH<0.01%$0.00002734,439.4327$0.9226
ETH<0.01%<$0.0000013,646,500.9266$0.9217
ETH<0.01%$0.0007541,221.405$0.9207
ETH<0.01%$0.01043886.3936$0.9017
ETH<0.01%$0.00697128.945$0.8987
ETH<0.01%$0.000006155,980.9895$0.8972
ETH<0.01%$0.9999160.8943$0.8942
ETH<0.01%<$0.0000013,140,230.7793$0.8933
ETH<0.01%$0.000003296,035.169$0.891
ETH<0.01%$1.880.4715$0.8863
ETH<0.01%$0.01141677.5682$0.8854
ETH<0.01%$2,273.230.0003883$0.8826
ETH<0.01%$0.0004871,796.3499$0.8756
ETH<0.01%$0.1751034.9933$0.8743
ETH<0.01%$0.001996436.321$0.8708
ETH<0.01%$0.04152220.9618$0.8703
ETH<0.01%<$0.00000138,459,731,906,485.3$0.8475
ETH<0.01%$1.180.716$0.8448
ETH<0.01%$0.000979850$0.8323
ETH<0.01%$0.0226836.643$0.831
ETH<0.01%$0.0005761,429.3075$0.8227
ETH<0.01%$0.3631482.2447$0.8151
ETH<0.01%$0.0007361,104.6206$0.8134
ETH<0.01%<$0.0000011,672,665,593.6834$0.8105
ETH<0.01%$0.006647121.7817$0.8094
ETH<0.01%$0.003948200.7434$0.7924
ETH<0.01%$0.001604492.1909$0.7895
ETH<0.01%$0.083569.4053$0.7859
ETH<0.01%$0.0328723.6098$0.776
ETH<0.01%<$0.0000012,703,833.7609$0.7457
ETH<0.01%$0.0004431,680.755$0.7444
ETH<0.01%<$0.000001735,251,725.6768$0.7433
ETH<0.01%$0.00873484.7875$0.7405
ETH<0.01%$0.04567116.15$0.7375
ETH<0.01%$0.3131492.3532$0.7368
ETH<0.01%$0.001719427.9333$0.7355
ETH<0.01%$0.5858061.2553$0.7353
ETH<0.01%$0.8382370.8758$0.7341
ETH<0.01%$0.005684127.5$0.7247
ETH<0.01%$0.00579123.3704$0.7143
ETH<0.01%<$0.0000013,126,708.0035$0.7132
ETH<0.01%$0.06319811.2798$0.7128
ETH<0.01%$0.003081229.0025$0.7056
ETH<0.01%<$0.000001116,273,805.7323$0.7029
ETH<0.01%<$0.0000017,699,036.2667$0.7026
ETH<0.01%$0.000154,658.102$0.7005
ETH<0.01%$0.0825978.4038$0.6941
ETH<0.01%$0.00146472.34$0.6897
ETH<0.01%$0.01442847.5483$0.686
ETH<0.01%$0.01570543.2688$0.6795
ETH<0.01%<$0.0000011,344,543,424.4356$0.6773
ETH<0.01%<$0.0000011,447,180,302.8087$0.6633
ETH<0.01%<$0.0000013,310,163.9872$0.6547
ETH<0.01%$0.00243267.1465$0.649
ETH<0.01%$0.00002723,804.9948$0.6486
ETH<0.01%$0.0003871,672.9605$0.648
ETH<0.01%$0.000005134,313.0835$0.6414
ETH<0.01%$1.320.4841$0.639
ETH<0.01%$0.7381060.8585$0.6336
ETH<0.01%$0.0000011,038,222.9688$0.6309
ETH<0.01%$0.2200882.8631$0.6301
ETH<0.01%$3.180.1978$0.629
ETH<0.01%$0.000002267,993.7239$0.6276
ETH<0.01%$0.05584511.112$0.6205
ETH<0.01%$0.00001834,871.3208$0.6182
ETH<0.01%$0.000666924.3282$0.616
ETH<0.01%$0.0661999.2923$0.6151