Contract 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c 20

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x391ad99282822c29aa6459475eeb42225b8d1a69c909b018b250870f8e091a5bRenounce Ownersh...1183903022023-08-05 11:49:39203 days 1 hr ago0x7e8a8b130272430008eca062419acd8b423d339d IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00002408 0.1
0xa8f980d9e742349910f6d894980ae0ea347483d75ee8560d30f9741446f44923Refund Native1183858612023-08-05 11:30:49203 days 1 hr ago0x7e8a8b130272430008eca062419acd8b423d339d IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00003015 0.1
0x8b4f1758c1c3e8c65e76a3320610c3bc952d19ee1c5fa9e8eacf066914544fbfOn Chain Swaps1050764752023-06-26 10:54:50243 days 1 hr ago0x4639177616ba5d865aab8cc4865cfee1aa915559 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.1009041904 ETH0.00008441 0.1
0x8b3060154ae7ff1f64e02a00c93f5ccf6aa96a5ad32b321443a2199d25489adcOn Chain Swaps1050732542023-06-26 10:41:22243 days 2 hrs ago0x3b68218e27b8846900bf764b8e659faa104eee93 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.0000894 0.1
0x6ea84aafe7e0719195f9b141b720faffae6ec65dfc698a0547cdb727ecfec945On Chain Swaps1050665892023-06-26 10:13:30243 days 2 hrs ago0x3b68218e27b8846900bf764b8e659faa104eee93 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.101483839907336 ETH0.00007757 0.1
0x4d868072c3375282a35debaa0b1b5095ee927c380e6d31e945b7790c831c760eOn Chain Swaps1050632552023-06-26 9:59:39243 days 2 hrs ago0x3d7ee0924ddf86402c4bcf53e53980ece9fd904f IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.0002 ETH0.00007304 0.1
0x892c6e896a65d971a63dd041898351679fd367d449791df156571b2609aed9d3On Chain Swaps1050509092023-06-26 9:08:07243 days 3 hrs ago0xeedf81732e7641f11efe0c54f74245f8006db8eb IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.09 ETH0.00008393 0.1
0x5b0ff617541240d690c16b41a5344debc2a2359bf9a3d2c96f54480a466294a2On Chain Swaps1050366232023-06-26 8:08:38243 days 4 hrs ago0x73492a7b23a32120bc48027c28fa44df6b87c61a IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.12396372 ETH0.00007784 0.1
0x0c9e76e717d14b9d82b5591e9825b9bf223428543951b7a84c019ea88d5980a1On Chain Swaps1050279082023-06-26 7:32:23243 days 5 hrs ago0x71784a8b738a340c433c48cce913c1f633869830 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.0026 ETH0.00008113 0.1
0xdf12ffdd3b8bd8d93588818cc2fadbcaa2013251d1c3a293f5fd18fe3df748f7On Chain Swaps1049947372023-06-26 5:11:34243 days 7 hrs ago0x0045cb2b22bc2615a09a90bda866ff272c893906 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.009 ETH0.00009377 0.1
0xbdb8274f55265ff61a7200167970cbd779aa5adb717596e7dad91d1eb3db7d26On Chain Swaps1049932912023-06-26 5:05:07243 days 7 hrs ago0x0045cb2b22bc2615a09a90bda866ff272c893906 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00011644 0.1
0x4882ff181152fc0d2d61c9d16fedd16dde0a62967d50e8670d2d6823746a5816On Chain Swaps1049917932023-06-26 4:58:29243 days 7 hrs ago0x0045cb2b22bc2615a09a90bda866ff272c893906 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00010917 0.1
0x7e2b49fe85162e4c0c5e1924c80ada32e84887987e229a039adace9cd4835977On Chain Swaps1049373252023-06-26 0:59:08243 days 11 hrs ago0xd9a16312980216f640ed3caac37c46ca7ce1166a IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.415527384811804 ETH0.00008048 0.1
0x55f889e9c64f9c1bf86d98f3a58c7cd775ca7fe4107f0c0c2830d8cbe4b99f70On Chain Swaps1049179652023-06-25 23:33:06243 days 13 hrs ago0xd28525a04c1149243655ce1dcfcfc9c7a078ee7e IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.006 ETH0.00008195 0.1
0xc4db05603694c0a01b00368541bcd21ece5dad88c08ced0bdf450a8b1864f432On Chain Swaps1049007932023-06-25 22:13:11243 days 14 hrs ago0xa1c33e2aeb8e5db9e5120c397f21646150fc0ede IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.000094010.1
0x5eba5c2a2d16084ffe15d4d53d223a1b3947fac13aecd2082ec7545a06ee129eOn Chain Swaps1048905342023-06-25 21:25:58243 days 15 hrs ago0xe4cb885bdbc2ff8de6c4589a6bf8e0602551b699 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.482951109693666 ETH0.00007973 0.1
0x31d65e8a1e94b8a07413d5c76c8bd158551f2da0a22749e608d46596f8ab6d55On Chain Swaps1048827372023-06-25 20:51:40243 days 16 hrs ago0x620490e63689b86406afd2fa22af31d2dd403269 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00009644 0.1
0x33937b60a42796fb6cecb0f50cd03bb50f7b38cbec45e23e5b51565c6295199dOn Chain Swaps1048729732023-06-25 20:08:43243 days 16 hrs ago0x2c3adf438022b055b069cda225ed522d2391fd84 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.097 ETH0.00007948 0.1
0x308ca588ae5f75a89599c0298c27fde541adac099c79802d78c9a31b847e154cOn Chain Swaps1048724892023-06-25 20:06:35243 days 16 hrs ago0xaa581b78a2e8e249c52f5de6ab5770407fa34261 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.001 ETH0.00007641 0.1
0x778d965fbb3e98d35101984358f2ffa94ed012bb2f389c3f7ca4e2920d4e9306On Chain Swaps1048607002023-06-25 19:15:05243 days 17 hrs ago0x485065e8147e132a1b9434498ffe2ba2a4b90a46 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00008286 0.1
0xce1463eba8489a58d94cfdb2d4d059877b17adf305fe9c8476588428df0ba8bdOn Chain Swaps1048560262023-06-25 18:54:42243 days 17 hrs ago0x5423e28219d6d568dcf62a8134d623e6f4a1c2df IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00008223 0.1
0xe2ad99a31ccccf40fee7cbfc84d9b69d8b5c80183cc75976d9329dfbdc26452dOn Chain Swaps1048533822023-06-25 18:43:17243 days 18 hrs ago0x5423e28219d6d568dcf62a8134d623e6f4a1c2df IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00008826 0.1
0x156e150b3773a2429fe9634e3ef69413ad79421185ae8a2c9bac62555f6139d9On Chain Swaps1048412042023-06-25 17:51:12243 days 19 hrs ago0x1141eefa7a6e3ebe85fe60c7e6d8ed5a3d94c169 IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.001 ETH0.00009182 0.1
0xb5b8b1f24e698d9a2135ecb5c3e7dd8b4804633834ae9eb1845eb025ab0962d0On Chain Swaps1048385252023-06-25 17:39:50243 days 19 hrs ago0x1d7475f54308845408111fdac0ea72b3c508488c IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00008906 0.1
0xf7eaae109c2f247ba56a589b0e46d20030fd62b6e67ad97030dde23aa0799da7On Chain Swaps1048341732023-06-25 17:21:13243 days 19 hrs ago0x1663cb3b9ce416a16720ead8b561c788f98c264e IN  0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0 ETH0.00010038 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa8f980d9e742349910f6d894980ae0ea347483d75ee8560d30f9741446f449231183858612023-08-05 11:30:49203 days 1 hr ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0x7e8a8b130272430008eca062419acd8b423d339d0.002973753280839895 ETH
0x8b4f1758c1c3e8c65e76a3320610c3bc952d19ee1c5fa9e8eacf066914544fbf1050764752023-06-26 10:54:50243 days 1 hr ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.1009041904 ETH
0x8b3060154ae7ff1f64e02a00c93f5ccf6aa96a5ad32b321443a2199d25489adc1050732542023-06-26 10:41:22243 days 2 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0x3b68218e27b8846900bf764b8e659faa104eee930.090083028355867695 ETH
0x8b3060154ae7ff1f64e02a00c93f5ccf6aa96a5ad32b321443a2199d25489adc1050732542023-06-26 10:41:22243 days 2 hrs ago SushiSwap: Router 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.090083028355867695 ETH
0x6ea84aafe7e0719195f9b141b720faffae6ec65dfc698a0547cdb727ecfec9451050665892023-06-26 10:13:30243 days 2 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.101483839907336079 ETH
0x4d868072c3375282a35debaa0b1b5095ee927c380e6d31e945b7790c831c760e1050632552023-06-26 9:59:39243 days 2 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.0002 ETH
0x892c6e896a65d971a63dd041898351679fd367d449791df156571b2609aed9d31050509092023-06-26 9:08:07243 days 3 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.09 ETH
0x5b0ff617541240d690c16b41a5344debc2a2359bf9a3d2c96f54480a466294a21050366232023-06-26 8:08:38243 days 4 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.12396372 ETH
0x0c9e76e717d14b9d82b5591e9825b9bf223428543951b7a84c019ea88d5980a11050279082023-06-26 7:32:23243 days 5 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.0026 ETH
0xdf12ffdd3b8bd8d93588818cc2fadbcaa2013251d1c3a293f5fd18fe3df748f71049947372023-06-26 5:11:34243 days 7 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.009 ETH
0x4882ff181152fc0d2d61c9d16fedd16dde0a62967d50e8670d2d6823746a58161049917932023-06-26 4:58:29243 days 7 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0x0045cb2b22bc2615a09a90bda866ff272c8939060.004123139958900691 ETH
0x4882ff181152fc0d2d61c9d16fedd16dde0a62967d50e8670d2d6823746a58161049917932023-06-26 4:58:29243 days 7 hrs ago SushiSwap: Router 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.004123139958900691 ETH
0x7e2b49fe85162e4c0c5e1924c80ada32e84887987e229a039adace9cd48359771049373252023-06-26 0:59:08243 days 11 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.415527384811804587 ETH
0x55f889e9c64f9c1bf86d98f3a58c7cd775ca7fe4107f0c0c2830d8cbe4b99f701049179652023-06-25 23:33:06243 days 13 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.006 ETH
0x5eba5c2a2d16084ffe15d4d53d223a1b3947fac13aecd2082ec7545a06ee129e1048905342023-06-25 21:25:58243 days 15 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.482951109693666437 ETH
0x33937b60a42796fb6cecb0f50cd03bb50f7b38cbec45e23e5b51565c6295199d1048729732023-06-25 20:08:43243 days 16 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.097 ETH
0x308ca588ae5f75a89599c0298c27fde541adac099c79802d78c9a31b847e154c1048724892023-06-25 20:06:35243 days 16 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.001 ETH
0x156e150b3773a2429fe9634e3ef69413ad79421185ae8a2c9bac62555f6139d91048412042023-06-25 17:51:12243 days 19 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.001 ETH
0xf7eaae109c2f247ba56a589b0e46d20030fd62b6e67ad97030dde23aa0799da71048341732023-06-25 17:21:13243 days 19 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0x1663cb3b9ce416a16720ead8b561c788f98c264e0.008135575898845596 ETH
0xf7eaae109c2f247ba56a589b0e46d20030fd62b6e67ad97030dde23aa0799da71048341732023-06-25 17:21:13243 days 19 hrs ago SushiSwap: Router 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.008135575898845596 ETH
0xc53d75a9f9fcbef0dfe6b6ae6afba223d538126b05077015e984c754f3cfdc871048220932023-06-25 16:30:00243 days 20 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.05 ETH
0xaa528a48ad062e23503b230f1b933d6e19f817ca5d31f9c2cd87ccb8655bd5781048153612023-06-25 16:01:46243 days 20 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.2 ETH
0xc62438e09e5e2b194e84bc0ff0de5c7030243185f73551335e6a6ff200110d041048129972023-06-25 15:51:49243 days 21 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0xa09bccb5f31c2508ae44f9cb8618718be0be22ef0.199210989431471321 ETH
0xc62438e09e5e2b194e84bc0ff0de5c7030243185f73551335e6a6ff200110d041048129972023-06-25 15:51:49243 days 21 hrs ago SushiSwap: Router 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c0.199210989431471321 ETH
0x1e682a848e2f91dbd32b5c80886752af19d38f6a138f6ed7cffc62c00186cafa1048119962023-06-25 15:47:40243 days 21 hrs ago 0x0e3eb2eab0e524b69c79e24910f4318db46baa9c SushiSwap: Router0.2 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OptimizedTransparentUpgradeableProxy

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license
File 1 of 8 : draft-IERC1822.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0-rc.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 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 : ERC1967Upgrade.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0-rc.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 virtual 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 4 of 8 : Proxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0-rc.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 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 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0-rc.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 7 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
        }
    }
}

File 8 of 8 : OptimizedTransparentUpgradeableProxy.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (proxy/transparent/TransparentUpgradeableProxy.sol)

pragma solidity ^0.8.0;

import "../openzeppelin/proxy/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 OptimizedTransparentUpgradeableProxy is ERC1967Proxy {
    address internal immutable _ADMIN;

    /**
     * @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));
        _ADMIN = admin_;

        // still store it to work with EIP-1967
        bytes32 slot = _ADMIN_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, admin_)
        }
        emit AdminChanged(address(0), 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 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();
    }

    function _getAdmin() internal view virtual override returns (address) {
        return _ADMIN;
    }
}

Settings
{
  "evmVersion": "london",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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":[],"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"}]

60a060405260405162000f5f38038062000f5f83398101604081905262000026916200044a565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6200052a565b60008051602062000f188339815191521462000075576200007562000550565b62000083828260006200013c565b50620000b3905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046200052a565b60008051602062000ef883398151915214620000d357620000d362000550565b6001600160a01b038216608081905260008051602062000ef88339815191528381556040805160008152602081019390935290917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a150505050620005b9565b620001478362000179565b600082511180620001555750805b156200017457620001728383620001bb60201b620002a91760201c565b505b505050565b6200018481620001ea565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060620001e3838360405180606001604052806027815260200162000f3860279139620002b2565b9392505050565b62000200816200039860201b620002d51760201c565b620002685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200029160008051602062000f1883398151915260001b620003a760201b620002411760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6200031c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016200025f565b600080856001600160a01b03168560405162000339919062000566565b600060405180830381855af49150503d806000811462000376576040519150601f19603f3d011682016040523d82523d6000602084013e6200037b565b606091505b5090925090506200038e828286620003aa565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315620003bb575081620001e3565b825115620003cc5782518084602001fd5b8160405162461bcd60e51b81526004016200025f919062000584565b80516001600160a01b03811681146200040057600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004385781810151838201526020016200041e565b83811115620001725750506000910152565b6000806000606084860312156200046057600080fd5b6200046b84620003e8565b92506200047b60208501620003e8565b60408501519092506001600160401b03808211156200049957600080fd5b818601915086601f830112620004ae57600080fd5b815181811115620004c357620004c362000405565b604051601f8201601f19908116603f01168101908382118183101715620004ee57620004ee62000405565b816040528281528960208487010111156200050857600080fd5b6200051b8360208301602088016200041b565b80955050505050509250925092565b6000828210156200054b57634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052600160045260246000fd5b600082516200057a8184602087016200041b565b9190910192915050565b6020815260008251806020840152620005a58160408501602087016200041b565b601f01601f19169190910160400192915050565b608051610900620005f86000396000818161011201528181610176015281816102060152818161025e01528181610287015261030901526109006000f3fe6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016141561023957507f000000000000000000000000000000000000000000000000000000000000000090565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c656400000000000000000000000075c9d9a49c62a31e307794d5b9959daac22aab0b0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b1700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de800000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab100000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052600436106100435760003560e01c80633659cfe61461005a5780634f1ef2861461007a5780635c60da1b1461008d578063f851a440146100cb57610052565b36610052576100506100e0565b005b6100506100e0565b34801561006657600080fd5b5061005061007536600461076c565b6100fa565b610050610088366004610787565b61015e565b34801561009957600080fd5b506100a26101ec565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156100d757600080fd5b506100a2610244565b6100e86102f1565b6100f86100f36103e2565b610422565b565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b171614156101565761015381604051806020016040528060008152506000610446565b50565b6101536100e0565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b171614156101e4576101df8383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610446915050565b505050565b6101df6100e0565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b17161415610239576102346103e2565b905090565b6102416100e0565b90565b60003373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b1716141561023957507f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b1790565b60606102ce83836040518060600160405280602781526020016108a460279139610471565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b171614156100f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60006102347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b3660008037600080366000845af43d6000803e808015610441573d6000f35b3d6000fd5b61044f83610599565b60008251118061045c5750805b156101df5761046b83836102a9565b50505050565b606073ffffffffffffffffffffffffffffffffffffffff84163b610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016103d9565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161053f9190610836565b600060405180830381855af49150503d806000811461057a576040519150601f19603f3d011682016040523d82523d6000602084013e61057f565b606091505b509150915061058f8282866105e6565b9695505050505050565b6105a281610639565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156105f55750816102ce565b8251156106055782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103d99190610852565b73ffffffffffffffffffffffffffffffffffffffff81163b6106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e74726163740000000000000000000000000000000000000060648201526084016103d9565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803573ffffffffffffffffffffffffffffffffffffffff8116811461076757600080fd5b919050565b60006020828403121561077e57600080fd5b6102ce82610743565b60008060006040848603121561079c57600080fd5b6107a584610743565b9250602084013567ffffffffffffffff808211156107c257600080fd5b818601915086601f8301126107d657600080fd5b8135818111156107e557600080fd5b8760208285010111156107f757600080fd5b6020830194508093505050509250925092565b60005b8381101561082557818101518382015260200161080d565b8381111561046b5750506000910152565b6000825161084881846020870161080a565b9190910192915050565b602081526000825180602084015261087181604085016020870161080a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212206f70214c51cdd41c05ba0ffeb72b309ca3c8be178fd6e73c12162330799984f364736f6c634300080a0033

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

00000000000000000000000075c9d9a49c62a31e307794d5b9959daac22aab0b0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b1700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024c4d66de800000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab100000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _logic (address): 0x75c9d9A49C62a31E307794d5b9959daaC22AAb0B
Arg [1] : admin_ (address): 0x6E47Adf8a0Bb4E3f4252F87BeEfC373752869B17
Arg [2] : _data (bytes): 0xc4d66de800000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000075c9d9a49c62a31e307794d5b9959daac22aab0b
Arg [1] : 0000000000000000000000006e47adf8a0bb4e3f4252f87beefc373752869b17
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [4] : c4d66de800000000000000000000000082af49447d8a07e3bd95bd0d56f35241
Arg [5] : 523fbab100000000000000000000000000000000000000000000000000000000


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.