Contract 0x7cbaf5a14d953ff896e5b3312031515c858737c8

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x23160b5daca28741221830a2a7511d071b3061df5d58d513f82a68aba6e11be9Approve263779672022-09-24 11:36:311 day 2 hrs ago0xd962a9cf49710197ff8b02cec45ad80ba80c05c4 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001125
0x997a6781c1d51ce7c4822ff8cf1f4cb05cd0babe4a62f53182fb235232d23c0bApprove263164012022-09-24 4:43:461 day 9 hrs ago0x5dfd0b12377bfcb67775d118056c0254d2f3dedd IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001047
0x8deb20624e5078f0a18409127574783cb79057529958f59f0713a5139f1752eaApprove263131532022-09-24 4:21:241 day 9 hrs ago0x5dfd0b12377bfcb67775d118056c0254d2f3dedd IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001126
0xdcb67e26f890055b5449c6f4e09ac1f2076d2e0f364735ddab3b9c602403476cApprove262273222022-09-23 16:29:561 day 21 hrs ago0x0507b3ffe3836ad0f256f3d53b8fa7653e54e2eb IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00002142
0x5d1cda3822781bf40b8aea7deee5e973d585bbbe5a39444034e4d29def5e68c6Approve262118112022-09-23 15:06:531 day 23 hrs ago0xfefcf7f02b2098829c83d5b99bbb2be464fecb86 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00002797
0xfa368556f5489488293b1a09d5874024d4eb0b290479f89f9a34ce88c9a5a8f1Approve260870202022-09-23 3:08:392 days 11 hrs ago0x1e90b3d337ad64a392b3ca530f3ecd3c5bcb0cbb IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00000736
0x51ce68d93ceca01b9a7d5673e4929959b9c810f49854442bb7959c87ed7f96aaApprove254228712022-09-20 7:58:595 days 6 hrs ago0x25d9d6f36fb3773b98284624e2a58c0cb3c98cd4 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00003158
0xadbb041faa4b943c5b9b74894849ddd6432bb8aa78a6ff39beda54fb3f10e797Approve252061772022-09-19 2:44:136 days 11 hrs ago0xb4651e0a86eea587f8cb295638f7fa84c11e28bb IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001233
0xb4bc46a3dbc6d2d6f98d7b0cdfc95b73d7458e04b8155e4c5be689a98465891dApprove251905142022-09-18 23:54:406 days 14 hrs ago0xc09b31f15c860bc77e10dfac56083eef2bec6766 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001417
0x7df1f9da6d42913802dcb8deb683881d9fc38915e08333dd7614dedf8cc638efApprove251303142022-09-18 14:30:416 days 23 hrs ago0x043aee850680c4fb982761b585929834c26cc32c IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001115
0xe09be0b060bcb41373d082e150281d5acdc72d29a1ae39a7999e4970cd438a28Approve250488892022-09-17 20:29:167 days 17 hrs ago0x63e3b82798ad78062b88eb4605d520e328fe38b8 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001382
0x0857c99c431ec369493ce02fbc8541519ffe3593d03078e25d53b3117aeb98a9Approve249982622022-09-17 10:44:088 days 3 hrs ago0x527d8c5f9f7e0e29675cd1b9af9abdea0ee0f455 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001016
0x759d7906c8677787cef930f35091b39bae93d85063d201175c178de6ac1074a7Approve249107942022-09-16 16:14:078 days 22 hrs ago0x02b72485ecdaabd5f9af68d9a5d2b2ca54d5339b IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00002179
0xa9e22d622c2f2d1e9b674b76d0220f4ba87fa65b70150440fd6907a016fa9c35Approve247401582022-09-15 12:29:3810 days 1 hr ago0x49519579d9d7f1e782daff0d1139c6f6c7b51235 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.0000195
0x366a07a139ed1510184a27bde7e1bc5a633981e7bc6aa6220a38e0de5e8e007cApprove246881792022-09-15 3:48:3710 days 10 hrs ago0x1930062444f68ad27125727c99f8ad5d38857c98 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00002095
0xf6f0ce886f808acc557503fc922480bf9b73be9cab8c09ef08021575bbfaccd0Approve245246292022-09-14 1:46:5911 days 12 hrs ago0x2a724be1b63caec1c3ef95834fdd443c3347ee1d IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.0000189
0x5887a83e89b126404ffc764556ae9b68643ced4149190bd0bede867b0f5a22cbApprove245179652022-09-14 0:25:2611 days 13 hrs ago0xc83414abb6655320232faa65ea72663dfd7198ec IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001765
0x9b9ed5505fd20a16decf461c55e21a34b274783e647222c3889b037bedd22d11Approve243974342022-09-13 10:34:4712 days 3 hrs ago0xe0df5b29044f583aa415c8951655ab930e3dc852 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001205
0x549321dafd941c9aeeac8a8a454b1bb9500f4e1413e2fd35c1254b843ab3e20aApprove243727482022-09-13 7:35:3112 days 6 hrs ago0xf4434aa0200e06726086794802249356269f2bdf IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00000776
0x9f886efd1c0132f640b4060643cbc7584d78bc5fd970f7e4c30c43cbf8d5e04aApprove241480682022-09-11 21:16:3513 days 16 hrs ago0xc82335bbdc978ce2e1f1c6c4f9e5bb2270bb2af1 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.0000685
0x6487114d0bb3d123d06955d766cfb97d153277c6e753e86917f58ced1edd2838Approve241044512022-09-11 14:52:4713 days 23 hrs ago0xc69ec94f3dce57b622d790e773899bc1d11a8074 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.0000159
0xc96db60f97621d777f6c8f8c2a38f2afbb19bb4b037258729aa1f44c9bdd347eApprove240864502022-09-11 12:35:1914 days 1 hr ago0x53aa057146197cc2d1c8fafabb81bca0a2bf1bf1 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001084
0xf903cc57052f50c81358a111057479c67e13e79ad07b8b7054014678882e6959Approve240738492022-09-11 11:13:4514 days 3 hrs ago0x6bae6c87636799f4c28efd0e426f4b0fa1cb436d IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.0000102
0x8bf7e3efb876e4fdd655bbdbf391dafef4a9706e71e6c04c7f014470d6d13deeApprove240215942022-09-11 2:33:4414 days 11 hrs ago0x93fa26253abbfb21a7f2749a81bb25a7e5f95ba1 IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00001665
0x4d6ca48e4ad6ac2272e6b4991583be43fcb8fda7f1798042b43f56943feeb0ecApprove239645292022-09-10 15:49:3214 days 22 hrs ago0x5c3566f941c72d80c5660669d6e2fd6fc67018fb IN  0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH0.00002178
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x719ffc87822c93e397806c4d17a93dc71657a185dec5ad3a6d4ada08c99e0f7f265268222022-09-25 7:15:347 hrs ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x719ffc87822c93e397806c4d17a93dc71657a185dec5ad3a6d4ada08c99e0f7f265268222022-09-25 7:15:347 hrs ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x719ffc87822c93e397806c4d17a93dc71657a185dec5ad3a6d4ada08c99e0f7f265268222022-09-25 7:15:347 hrs ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x719ffc87822c93e397806c4d17a93dc71657a185dec5ad3a6d4ada08c99e0f7f265268222022-09-25 7:15:347 hrs ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x2f525e0923538221db191af18b19729418802c61c8ef5cca967521698e393f1a264788282022-09-25 1:02:2213 hrs 13 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x2f525e0923538221db191af18b19729418802c61c8ef5cca967521698e393f1a264788282022-09-25 1:02:2213 hrs 13 mins ago 0xa19fd5ab6c8dcffa2a295f78a5bb4ac543aaf5e3 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x60a1d353d3a86f0018a9542a290feb765215b1228132f29dc4e246584b6fb613264773892022-09-25 0:45:2213 hrs 30 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x60a1d353d3a86f0018a9542a290feb765215b1228132f29dc4e246584b6fb613264773892022-09-25 0:45:2213 hrs 30 mins ago 0xa19fd5ab6c8dcffa2a295f78a5bb4ac543aaf5e3 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0x290450cdea757c68e4fe6032ff3886d204292914 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x31b01e40aceefb82c09a9544d8acbef702350f8895be2e4949193a2f40712632264772382022-09-25 0:43:3113 hrs 32 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x31c83b44aebbacf2bd66e63571de2cf7edece1af4ce3aaade8ce33f2b941d993264761462022-09-25 0:31:2113 hrs 44 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x31c83b44aebbacf2bd66e63571de2cf7edece1af4ce3aaade8ce33f2b941d993264761462022-09-25 0:31:2113 hrs 44 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x31c83b44aebbacf2bd66e63571de2cf7edece1af4ce3aaade8ce33f2b941d993264761462022-09-25 0:31:2113 hrs 44 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x31c83b44aebbacf2bd66e63571de2cf7edece1af4ce3aaade8ce33f2b941d993264761462022-09-25 0:31:2113 hrs 44 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x7eb80912db8e18c13d972d948ba41875aba27a58a7b2e922cf60ba75257b6360264604712022-09-24 21:37:2716 hrs 38 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x7eb80912db8e18c13d972d948ba41875aba27a58a7b2e922cf60ba75257b6360264604712022-09-24 21:37:2716 hrs 38 mins ago 0xa19fd5ab6c8dcffa2a295f78a5bb4ac543aaf5e3 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x2db224b4a4f31ceaf4864feccb4b2ef68f5d6a2dbe96888052eb5813ae869aaa264584622022-09-24 21:20:3916 hrs 55 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x2db224b4a4f31ceaf4864feccb4b2ef68f5d6a2dbe96888052eb5813ae869aaa264584622022-09-24 21:20:3916 hrs 55 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x2db224b4a4f31ceaf4864feccb4b2ef68f5d6a2dbe96888052eb5813ae869aaa264584622022-09-24 21:20:3916 hrs 55 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
0x2db224b4a4f31ceaf4864feccb4b2ef68f5d6a2dbe96888052eb5813ae869aaa264584622022-09-24 21:20:3916 hrs 55 mins ago 0xaf9c4f6a0ceb02d4217ff73f3c95bbc8c7320cee 0x7cbaf5a14d953ff896e5b3312031515c858737c80 ETH
0x0d7a1138d93d6158ef7dfdacfd48a87c7e02deb58ad5d5d5df17b521eab18deb264584372022-09-24 21:20:2716 hrs 55 mins ago 0x7cbaf5a14d953ff896e5b3312031515c858737c8 0x085f5b8945426aa5e8239cd172070d0301fe33ba0 ETH
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x6c7849552142f200279A990dc16e67E5443E29e3

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 8 : TransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)

pragma solidity ^0.8.0;

import "../ERC1967/ERC1967Proxy.sol";

/**
 * @dev This contract implements a proxy that is upgradeable by an admin.
 *
 * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
 * clashing], which can potentially be used in an attack, this contract uses the
 * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
 * things that go hand in hand:
 *
 * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
 * that call matches one of the admin functions exposed by the proxy itself.
 * 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
 * implementation. If the admin tries to call a function on the implementation it will fail with an error that says
 * "admin cannot fallback to proxy target".
 *
 * These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
 * the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
 * to sudden errors when trying to call a function from the proxy implementation.
 *
 * Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
 * you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
 */
contract TransparentUpgradeableProxy is ERC1967Proxy {
    /**
     * @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
     * optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.
     */
    constructor(
        address _logic,
        address admin_,
        bytes memory _data
    ) payable ERC1967Proxy(_logic, _data) {
        assert(_ADMIN_SLOT == bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1));
        _changeAdmin(admin_);
    }

    /**
     * @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
     */
    modifier ifAdmin() {
        if (msg.sender == _getAdmin()) {
            _;
        } else {
            _fallback();
        }
    }

    /**
     * @dev Returns the current admin.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyAdmin}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
     */
    function admin() external ifAdmin returns (address admin_) {
        admin_ = _getAdmin();
    }

    /**
     * @dev Returns the current implementation.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-getProxyImplementation}.
     *
     * TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
     * https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
     * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
     */
    function implementation() external ifAdmin returns (address implementation_) {
        implementation_ = _implementation();
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-changeProxyAdmin}.
     */
    function changeAdmin(address newAdmin) external virtual ifAdmin {
        _changeAdmin(newAdmin);
    }

    /**
     * @dev Upgrade the implementation of the proxy.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgrade}.
     */
    function upgradeTo(address newImplementation) external ifAdmin {
        _upgradeToAndCall(newImplementation, bytes(""), false);
    }

    /**
     * @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
     * by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
     * proxied contract.
     *
     * NOTE: Only the admin can call this function. See {ProxyAdmin-upgradeAndCall}.
     */
    function upgradeToAndCall(address newImplementation, bytes calldata data) external payable ifAdmin {
        _upgradeToAndCall(newImplementation, data, true);
    }

    /**
     * @dev Returns the current admin.
     */
    function _admin() internal view virtual returns (address) {
        return _getAdmin();
    }

    /**
     * @dev Makes sure the admin cannot access the fallback function. See {Proxy-_beforeFallback}.
     */
    function _beforeFallback() internal virtual override {
        require(msg.sender != _getAdmin(), "TransparentUpgradeableProxy: admin cannot fallback to proxy target");
        super._beforeFallback();
    }
}

File 2 of 8 : ERC1967Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/ERC1967/ERC1967Proxy.sol)

pragma solidity ^0.8.0;

import "../Proxy.sol";
import "./ERC1967Upgrade.sol";

/**
 * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
 * implementation address that can be changed. This address is stored in storage in the location specified by
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967], so that it doesn't conflict with the storage layout of the
 * implementation behind the proxy.
 */
contract ERC1967Proxy is Proxy, ERC1967Upgrade {
    /**
     * @dev Initializes the upgradeable proxy with an initial implementation specified by `_logic`.
     *
     * If `_data` is nonempty, it's used as data in a delegate call to `_logic`. This will typically be an encoded
     * function call, and allows initializating the storage of the proxy like a Solidity constructor.
     */
    constructor(address _logic, bytes memory _data) payable {
        assert(_IMPLEMENTATION_SLOT == bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1));
        _upgradeToAndCall(_logic, _data, false);
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view virtual override returns (address impl) {
        return ERC1967Upgrade._getImplementation();
    }
}

File 3 of 8 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (proxy/Proxy.sol)

pragma solidity ^0.8.0;

/**
 * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM
 * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to
 * be specified by overriding the virtual {_implementation} function.
 *
 * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a
 * different contract through the {_delegate} function.
 *
 * The success and return data of the delegated call will be returned back to the caller of the proxy.
 */
abstract contract Proxy {
    /**
     * @dev Delegates the current call to `implementation`.
     *
     * This function does not return to its internal call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev This is a virtual function that should be overriden so it returns the address to which the fallback function
     * and {_fallback} should delegate.
     */
    function _implementation() internal view virtual returns (address);

    /**
     * @dev Delegates the current call to the address returned by `_implementation()`.
     *
     * This function does not return to its internall call site, it will return directly to the external caller.
     */
    function _fallback() internal virtual {
        _beforeFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other
     * function in the contract matches the call data.
     */
    fallback() external payable virtual {
        _fallback();
    }

    /**
     * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if call data
     * is empty.
     */
    receive() external payable virtual {
        _fallback();
    }

    /**
     * @dev Hook that is called before falling back to the implementation. Can happen as part of a manual `_fallback`
     * call, or as part of the Solidity `fallback` or `receive` functions.
     *
     * If overriden should call `super._beforeFallback()`.
     */
    function _beforeFallback() internal virtual {}
}

File 4 of 8 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (proxy/ERC1967/ERC1967Upgrade.sol)

pragma solidity ^0.8.2;

import "../beacon/IBeacon.sol";
import "../../interfaces/draft-IERC1822.sol";
import "../../utils/Address.sol";
import "../../utils/StorageSlot.sol";

/**
 * @dev This abstract contract provides getters and event emitting update functions for
 * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
 *
 * _Available since v4.1._
 *
 * @custom:oz-upgrades-unsafe-allow delegatecall
 */
abstract contract ERC1967Upgrade {
    // This is the keccak-256 hash of "eip1967.proxy.rollback" subtracted by 1
    bytes32 private constant _ROLLBACK_SLOT = 0x4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143;

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Emitted when the implementation is upgraded.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Returns the current implementation address.
     */
    function _getImplementation() internal view returns (address) {
        return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 implementation slot.
     */
    function _setImplementation(address newImplementation) private {
        require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
        StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
    }

    /**
     * @dev Perform implementation upgrade
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Perform implementation upgrade with additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCall(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        _upgradeTo(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }
    }

    /**
     * @dev Perform implementation upgrade with security checks for UUPS proxies, and additional setup call.
     *
     * Emits an {Upgraded} event.
     */
    function _upgradeToAndCallUUPS(
        address newImplementation,
        bytes memory data,
        bool forceCall
    ) internal {
        // Upgrades from old implementations will perform a rollback test. This test requires the new
        // implementation to upgrade back to the old, non-ERC1822 compliant, implementation. Removing
        // this special case will break upgrade paths from old UUPS implementation to new ones.
        if (StorageSlot.getBooleanSlot(_ROLLBACK_SLOT).value) {
            _setImplementation(newImplementation);
        } else {
            try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {
                require(slot == _IMPLEMENTATION_SLOT, "ERC1967Upgrade: unsupported proxiableUUID");
            } catch {
                revert("ERC1967Upgrade: new implementation is not UUPS");
            }
            _upgradeToAndCall(newImplementation, data, forceCall);
        }
    }

    /**
     * @dev Storage slot with the admin of the contract.
     * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant _ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;

    /**
     * @dev Emitted when the admin account has changed.
     */
    event AdminChanged(address previousAdmin, address newAdmin);

    /**
     * @dev Returns the current admin.
     */
    function _getAdmin() internal view returns (address) {
        return StorageSlot.getAddressSlot(_ADMIN_SLOT).value;
    }

    /**
     * @dev Stores a new address in the EIP1967 admin slot.
     */
    function _setAdmin(address newAdmin) private {
        require(newAdmin != address(0), "ERC1967: new admin is the zero address");
        StorageSlot.getAddressSlot(_ADMIN_SLOT).value = newAdmin;
    }

    /**
     * @dev Changes the admin of the proxy.
     *
     * Emits an {AdminChanged} event.
     */
    function _changeAdmin(address newAdmin) internal {
        emit AdminChanged(_getAdmin(), newAdmin);
        _setAdmin(newAdmin);
    }

    /**
     * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.
     * This is bytes32(uint256(keccak256('eip1967.proxy.beacon')) - 1)) and is validated in the constructor.
     */
    bytes32 internal constant _BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;

    /**
     * @dev Emitted when the beacon is upgraded.
     */
    event BeaconUpgraded(address indexed beacon);

    /**
     * @dev Returns the current beacon.
     */
    function _getBeacon() internal view returns (address) {
        return StorageSlot.getAddressSlot(_BEACON_SLOT).value;
    }

    /**
     * @dev Stores a new beacon in the EIP1967 beacon slot.
     */
    function _setBeacon(address newBeacon) private {
        require(Address.isContract(newBeacon), "ERC1967: new beacon is not a contract");
        require(
            Address.isContract(IBeacon(newBeacon).implementation()),
            "ERC1967: beacon implementation is not a contract"
        );
        StorageSlot.getAddressSlot(_BEACON_SLOT).value = newBeacon;
    }

    /**
     * @dev Perform beacon upgrade with additional setup call. Note: This upgrades the address of the beacon, it does
     * not upgrade the implementation contained in the beacon (see {UpgradeableBeacon-_setImplementation} for that).
     *
     * Emits a {BeaconUpgraded} event.
     */
    function _upgradeBeaconToAndCall(
        address newBeacon,
        bytes memory data,
        bool forceCall
    ) internal {
        _setBeacon(newBeacon);
        emit BeaconUpgraded(newBeacon);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);
        }
    }
}

File 5 of 8 : IBeacon.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol)

pragma solidity ^0.8.0;

/**
 * @dev This is the interface that {BeaconProxy} expects of its beacon.
 */
interface IBeacon {
    /**
     * @dev Must return an address that can be used as a delegate call target.
     *
     * {BeaconProxy} will check that this address is a contract.
     */
    function implementation() external view returns (address);
}

File 6 of 8 : draft-IERC1822.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (interfaces/draft-IERC1822.sol)

pragma solidity ^0.8.0;

/**
 * @dev ERC1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified
 * proxy whose upgrades are fully controlled by the current implementation.
 */
interface IERC1822Proxiable {
    /**
     * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation
     * address.
     *
     * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks
     * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this
     * function revert if invoked through a proxy.
     */
    function proxiableUUID() external view returns (bytes32);
}

File 7 of 8 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 8 of 8 : StorageSlot.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)

pragma solidity ^0.8.0;

/**
 * @dev Library for reading and writing primitive types to specific storage slots.
 *
 * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
 * This library helps with reading and writing to such slots without the need for inline assembly.
 *
 * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
 *
 * Example usage to set ERC1967 implementation slot:
 * ```
 * contract ERC1967 {
 *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
 *
 *     function _getImplementation() internal view returns (address) {
 *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
 *     }
 *
 *     function _setImplementation(address newImplementation) internal {
 *         require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
 *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
 *     }
 * }
 * ```
 *
 * _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
 */
library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    /**
     * @dev Returns an `AddressSlot` with member `value` located at `slot`.
     */
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `BooleanSlot` with member `value` located at `slot`.
     */
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
     */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        assembly {
            r.slot := slot
        }
    }

    /**
     * @dev Returns an `Uint256Slot` with member `value` located at `slot`.
     */
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        assembly {
            r.slot := slot
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"admin_","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"admin_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"implementation_","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405162000f6638038062000f66833981016040819052620000269162000519565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd620005f9565b60008051602062000f1f833981519152146200007557620000756200061f565b6200008382826000620000e7565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104620005f9565b60008051602062000eff83398151915214620000d357620000d36200061f565b620000de8262000124565b50505062000688565b620000f2836200017f565b600082511180620001005750805b156200011f576200011d8383620001c160201b620002601760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200014f620001f0565b604080516001600160a01b03928316815291841660208301520160405180910390a16200017c8162000229565b50565b6200018a81620002de565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e9838360405180606001604052806027815260200162000f3f6027913962000381565b9392505050565b60006200021a60008051602062000eff83398151915260001b6200046760201b620002081760201c565b546001600160a01b0316919050565b6001600160a01b038116620002945760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002bd60008051602062000eff83398151915260001b6200046760201b620002081760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b620002f4816200046a60201b6200028c1760201c565b620003585760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016200028b565b80620002bd60008051602062000f1f83398151915260001b6200046760201b620002081760201c565b60606001600160a01b0384163b620003eb5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200028b565b600080856001600160a01b03168560405162000408919062000635565b600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b5090925090506200045d82828662000479565b9695505050505050565b90565b6001600160a01b03163b151590565b606083156200048a575081620001e9565b8251156200049b5782518084602001fd5b8160405162461bcd60e51b81526004016200028b919062000653565b80516001600160a01b0381168114620004cf57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101562000507578181015183820152602001620004ed565b838111156200011d5750506000910152565b6000806000606084860312156200052f57600080fd5b6200053a84620004b7565b92506200054a60208501620004b7565b60408501519092506001600160401b03808211156200056857600080fd5b818601915086601f8301126200057d57600080fd5b815181811115620005925762000592620004d4565b604051601f8201601f19908116603f01168101908382118183101715620005bd57620005bd620004d4565b81604052828152896020848701011115620005d757600080fd5b620005ea836020830160208801620004ea565b80955050505050509250925092565b6000828210156200061a57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b6000825162000649818460208701620004ea565b9190910192915050565b602081526000825180602084015262000674816040850160208701620004ea565b601f01601f19169190910160400192915050565b61086780620006986000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f1565b610118565b61005b61009336600461070c565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f1565b61020b565b3480156100f557600080fd5b506100ad610235565b61010661029b565b61011661011161033a565b610344565b565b610120610368565b6001600160a01b0316336001600160a01b03161415610157576101548160405180602001604052806000815250600061039b565b50565b6101546100fe565b610167610368565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061039b915050565b505050565b6101c36100fe565b60006101da610368565b6001600160a01b0316336001600160a01b03161415610200576101fb61033a565b905090565b6102086100fe565b90565b610213610368565b6001600160a01b0316336001600160a01b0316141561015757610154816103c6565b600061023f610368565b6001600160a01b0316336001600160a01b03161415610200576101fb610368565b6060610285838360405180606001604052806027815260200161080b6027913961041a565b9392505050565b6001600160a01b03163b151590565b6102a3610368565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb6104f7565b3660008037600080366000845af43d6000803e808015610363573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103a48361051f565b6000825111806103b15750805b156101c3576103c08383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103ef610368565b604080516001600160a01b03928316815291841660208301520160405180910390a16101548161055f565b60606001600160a01b0384163b6104825760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610331565b600080856001600160a01b03168560405161049d91906107bb565b600060405180830381855af49150503d80600081146104d8576040519150601f19603f3d011682016040523d82523d6000602084013e6104dd565b606091505b50915091506104ed828286610608565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61038c565b61052881610641565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105c45760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610331565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610617575081610285565b8251156106275782518084602001fd5b8160405162461bcd60e51b815260040161033191906107d7565b6001600160a01b0381163b6106ae5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610331565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105e7565b80356001600160a01b03811681146106ec57600080fd5b919050565b60006020828403121561070357600080fd5b610285826106d5565b60008060006040848603121561072157600080fd5b61072a846106d5565b9250602084013567ffffffffffffffff8082111561074757600080fd5b818601915086601f83011261075b57600080fd5b81358181111561076a57600080fd5b87602082850101111561077c57600080fd5b6020830194508093505050509250925092565b60005b838110156107aa578181015183820152602001610792565b838111156103c05750506000910152565b600082516107cd81846020870161078f565b9190910192915050565b60208152600082518060208401526107f681604085016020870161078f565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ce26966c0a5381e59ebd2a299eea8a7d6126172859dfdd30e48629b99532fd1864736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000028f16eb86481066bf63bcbeb05c8474f7120a36c000000000000000000000000e52d9a3cba458832a65cfa9fc8a74bacabdeb32a00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.