Contract 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b 2

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x703fee29aa89a254d3540c4abc6d0dc1c6c637990ec6e6481f6babd503f33e9cFight433233392023-05-30 9:55:2413 hrs 38 mins ago0x0771b67533608f0172145a666926dfe419d184cb IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.045034334415584 MATIC0.023704552091194.487718381
0x56d32fac06277daf9c2c4407d97682e5f7c45181585577dc0112b5d69474155cFight433233182023-05-30 9:54:4013 hrs 39 mins ago0x0771b67533608f0172145a666926dfe419d184cb IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.044962012987012 MATIC0.020336034083166.85018365
0xe6fb49ef00c291eca179540a02300325010e527273e3f2527f8dcefe0af5b32bFight433218372023-05-30 9:01:2814 hrs 32 mins ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.21789862012987 MATIC0.024500177187 201.015549362
0x37fe6307e67405c4a53254f6bb339a18a720324e640d1d639b627b032ca7802eFight433184962023-05-30 7:00:5116 hrs 33 mins ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.21383547077922 MATIC0.017589303423 144.31420081
0x13ff0f655eca77fdd9e3ee9e565f0711f23e9dfa28fe9901632b90946f90c5fdFight433166702023-05-30 5:53:0017 hrs 40 mins ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.195108603896103 MATIC0.018028083783 147.928807611
0xe274129bcaf3ceb639b552df5be058db7adc4fb54db4a11d4c562fe2626a9bd3Fight433166482023-05-30 5:52:1417 hrs 41 mins ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.200951298701298 MATIC0.018624258263 152.805650249
0x06a9c8ad404a5000ed508fefa1de54d4d33049402de2b548f04f79983e3d5c53Fight433096832023-05-30 1:30:4522 hrs 3 mins ago0xdd949b2f1cb8bc35ea4277963048a7a1e597115d IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.014973457792207 MATIC0.018595220035 152.567401548
0xa414c0cb25f66798ca58a9092811c6e165cdf4076a169ae5f07a9b179f2eff8dFight433096632023-05-30 1:30:0122 hrs 3 mins ago0xdd949b2f1cb8bc35ea4277963048a7a1e597115d IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.015416883116883 MATIC0.018471613786 151.553254677
0x02e26d65419468ac7d00b91e6368ee62a247a660e2cf22ad6316b50c0e64821aFight433092282023-05-30 1:13:4522 hrs 20 mins ago0xf4b4de266c54aa83c1a8cf21d32364d8dfe0f5f0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.013833116883116 MATIC0.020117603864 165.058038631
0x0df8bf76b859f843b56ea9563b6370cfae74ff0a5cf5d13401c998e1205c8320Fight433091802023-05-30 1:12:0322 hrs 21 mins ago0xf4b4de266c54aa83c1a8cf21d32364d8dfe0f5f0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.016628084415584 MATIC0.021817442348 179.022256079
0xfb08104f89ffc59eb31b8a7de5f3dd477eb48872add905561a98340ec9012878Fight433073762023-05-30 0:05:3323 hrs 28 mins ago0xd4f8b25b23e362d06ced59f7a1526599e5d8b716 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.002777435064935 MATIC0.020399374386 146.703207339
0xd0a36ede23e6d8ced82ec11fae2c0ce3f8531bf38a5497c64dc384d4d4643251Fight433072662023-05-30 0:01:2423 hrs 32 mins ago0x6109ed5af86c9063fa062e7b16e2f72d6c046d35 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.023990259740259 MATIC0.018931999599155.330562339
0xae403fbf5c3b530e7ad13480933b71dbe7910612954941fdaadcaa10f19573b9Fight432907362023-05-29 14:00:481 day 9 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.205081655844155 MATIC0.02643402679 216.882121978
0x395d3595a327859864eb780893eefa52b6212a55135df1b50b0f18ef1d890857Fight432902342023-05-29 13:42:421 day 9 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.224900649350649 MATIC0.020388162706 167.277881121
0x7abac9a068ac884631e9de2af71157eef3035c6d0281e63603adc4bf423fb220Fight432892112023-05-29 13:05:561 day 10 hrs ago0x0771b67533608f0172145a666926dfe419d184cb IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.045301704545454 MATIC0.018882630631 154.9255069
0x484636f21e9e2a796f5ddfaaee5d4d06f5435752afe5c5951d955cb20f79f62cFight432891902023-05-29 13:05:121 day 10 hrs ago0x0771b67533608f0172145a666926dfe419d184cb IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.046282792207792 MATIC0.018736935941 153.730131944
0x937e0c965cae6c14f2a58ddfcc44eea78b34843bdda4d841bcc5b44979938cdaFight432891142023-05-29 13:02:301 day 10 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.194224675324675 MATIC0.018435807284 151.259474613
0x057873fe629225a6b31defbce5382ea1e87bce3b0823a4e8f1faf8fe6edd6b40Fight432890722023-05-29 13:01:021 day 10 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.209274107142857 MATIC0.018565128336 152.320509481
0x3fb7bbbb3c4a1256bb9d10eaae10a12420a24c3fcc1f07fdb50805c656688a74Fight432850252023-05-29 10:35:491 day 12 hrs ago0xedd37d693dc4a96535f977680eeb65bc05020e40 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.060749269480519 MATIC0.024115776274 195.773540569
0x44a4521bde015e3e6fc0519d4c227727c9e12cf650372b721eddd184ba20990fFight432850132023-05-29 10:35:231 day 12 hrs ago0xedd37d693dc4a96535f977680eeb65bc05020e40 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.128995129870129 MATIC0.022707484512 186.307120928
0x94defc9e533769a24d811f335c2557f320a33c65fc2b713b3d81f4f61c4149c3Fight432629932023-05-28 21:01:372 days 2 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.213109334415584 MATIC0.019425516724 159.395394476
0x1c414534325b3775742bcbb7ce7d867f49900d939f5c40b8fa0d485df9ccf914Fight432605142023-05-28 19:26:582 days 4 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.206796185064935 MATIC0.019074811422 156.50228436
0xee748c6959f59c3a8c7c793a4fa571e1ceb371210d830422ca3e92c57462886cFight432604922023-05-28 19:26:042 days 4 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.200660551948051 MATIC0.017650622125 144.817299729
0x5d6a365c3df1d49ca992e443fc19c1282eea7a4f41495086552a6a6aa10f6d16Fight432604502023-05-28 19:24:292 days 4 hrs ago0x1f1f35137185c55d47e31e8c6041359fe45770c0 IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.199441314935064 MATIC0.018152601708 148.93587001
0x52535772324c2cc32445af85c85beeae859c42c2f5f739d26fef33704c6753d1Fight432598952023-05-28 19:04:492 days 4 hrs ago0x0771b67533608f0172145a666926dfe419d184cb IN  0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0.039445129870129 MATIC0.017431956237 143.02322113
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x3fb7bbbb3c4a1256bb9d10eaae10a12420a24c3fcc1f07fdb50805c656688a74432850252023-05-29 10:35:491 day 12 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xedd37d693dc4a96535f977680eeb65bc05020e400.06074926948051948 MATIC
0xabcfbde8d58d4af7c2ec7a56b5c27c7785911f188fbbcfa638730c3bb617a987432113192023-05-27 13:31:323 days 10 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd4f8b25b23e362d06ced59f7a1526599e5d8b7160.00289358766233766 MATIC
0x9d023efb9eaf80620411998b5a19d2dc4b469f4d363d422a4c7df66b19a563dc431885912023-05-26 23:32:054 days 1 min ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x942761796ce10ce782c40ae2073945e1936a26d10.000166412337662337 MATIC
0x0d37f81eee33d3f8a234a9750789c70394069718ccca6bcf127c3c00d801f581431716532023-05-26 13:22:514 days 10 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.04492183441558442 MATIC
0x306e005c1efd7e20039f6efc3d3e8e7f47e2109e2070ce426bced8a331d21ed9431012492023-05-24 18:49:106 days 4 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xc2573a26297a0c952c92bb48fdcb6929524f7f4836.138477564935063641 MATIC
0x9984b4493d6d6586e16a004668cd76be599acb1a84823bc6977012bfc950a35a430773802023-05-24 4:19:586 days 19 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x3b79501b90210df0f61be6f6f5a83a49d890a8fd0.006979383116883115 MATIC
0xc9df515715bcf3549d9ab52ef8dea67e360701f337221ae8d6f4ca32c97c3c55430639132023-05-23 20:13:097 days 3 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x6109ed5af86c9063fa062e7b16e2f72d6c046d350.024163392857142856 MATIC
0x6f176bc350efbecadcdcb8cb288a7345b68948a33b3a08b9224a8d72c512fbd1430606652023-05-23 18:17:147 days 5 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.04445357142857142 MATIC
0xe8434e558968e4ee6b1e2f8dd661a7935b5128164b2919066e4536d32c516f2a430386732023-05-23 5:02:307 days 18 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x3b79501b90210df0f61be6f6f5a83a49d890a8fd0.00968449675324675 MATIC
0xe1be97a635688300d6a8ce92ef67c5cf98bc766c60e8dcf8286333fcea85dcc7430287172023-05-22 22:59:468 days 34 mins ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.04772849025974026 MATIC
0x42405bce7dd6d69640da670295feef709395a40110eeacbd21f5da92be70dcc2430286872023-05-22 22:58:428 days 35 mins ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.04668896103896104 MATIC
0xd4c60fdd0299626c492f2279dd8bbf2ef72be37de64e741d5b622146aef2a635430205782023-05-22 17:26:498 days 6 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.000555194805194805 MATIC
0x708113b2a91091efbec76472f283c901be095020f009aac06b7e6a467369b186430019242023-05-22 5:08:258 days 18 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x6109ed5af86c9063fa062e7b16e2f72d6c046d350.02026095779220779 MATIC
0x81bb9c7bda09e65e8ca1d0030a93a6f5cee28b37fcd808283e11c780bb2ed10c429886142023-05-21 21:06:089 days 2 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x93938806a10b994c164df46deeafbc3e140b564c0.01144431818181818 MATIC
0x6e202978385001013d5151580ea8c31c1d63d1564a137887a76ad0cb9920985c429789482023-05-21 15:15:199 days 8 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x942761796ce10ce782c40ae2073945e1936a26d10.000145081168831168 MATIC
0x70069c06db05140c63c8d14bf5854d26ab2abe7c0c6a113466350d78f3ec4441429514052023-05-20 22:42:3910 days 51 mins ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.000690925324675324 MATIC
0xd5ee849fe4a6b74d7263b997a5543a04234d4c2f6fa42b623f7b6d46a0d7d0f4429306032023-05-20 10:09:0610 days 13 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.000688003246753246 MATIC
0x07457a3716172b9c910b9409b4b98ce53b4a9009771375b293b61f94a2df7758429068342023-05-19 19:49:3711 days 3 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.00117715909090909 MATIC
0x3f94e1a62de9e08897e34f6e053dedc831828b5458055ccf2a0429334fd0c8ff429060622023-05-19 19:21:4311 days 4 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.00073051948051948 MATIC
0xa00e6b51dc53d28f7f2e90ffba8b7b6fc4f349f41d8be10fcdbb8402cc86f3fc429051982023-05-19 18:50:3411 days 4 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.000733441558441558 MATIC
0x4fd41cddabfcec7f2c15ebbb2baebb5a893faacb16410ffae73c5ac9a019ff1d429032292023-05-19 17:37:4711 days 5 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.001088474025974025 MATIC
0x413787fd4aa63483c88cc6ec6caf5a07fe81bbbc1b229e5faca160be20e90b9e429020582023-05-19 16:54:2511 days 6 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x631eaa2e20f249370385a2a7cd1078bddd4f7b190.08680689935064934 MATIC
0x75ca6ef6bf0324afe59afcc3f5d93187d65a2c1ed232ea78d22aa13211fb0195428622712023-05-18 17:05:1412 days 6 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.035627142857142856 MATIC
0xbb7d5ccd2d4c1711d281d757106890ff15a2c2518d483976f44d212650abbeff428622422023-05-18 17:04:1412 days 6 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0x0771b67533608f0172145a666926dfe419d184cb0.03713084415584415 MATIC
0xe6d0e223e0e3784cd1a8a1f326f717c05c5ea3662d8674d458bf86adc908aafd428596762023-05-18 15:31:1912 days 8 hrs ago 0xb8e65dd86e5bcede186d0a11f1646b348ecb514b0xd3f9f0ed1d8b8790e6b1419bf5af137f25a027430.000606331168831168 MATIC
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

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

Contract Name:
TransparentUpgradeableProxy

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-12
*/

// SPDX-License-Identifier: MIT

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
        }
    }
}

/**
 * @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
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 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");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (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");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private 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

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @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);
}

/**
 * @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 {
        _setImplementation(newImplementation);
        emit Upgraded(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 _upgradeToAndCallSecure(address newImplementation, bytes memory data, bool forceCall) internal {
        address oldImplementation = _getImplementation();

        // Initial upgrade and setup call
        _setImplementation(newImplementation);
        if (data.length > 0 || forceCall) {
            Address.functionDelegateCall(newImplementation, data);
        }

        // Perform rollback test if not already in progress
        StorageSlot.BooleanSlot storage rollbackTesting = StorageSlot.getBooleanSlot(_ROLLBACK_SLOT);
        if (!rollbackTesting.value) {
            // Trigger rollback using upgradeTo from the new implementation
            rollbackTesting.value = true;
            Address.functionDelegateCall(
                newImplementation,
                abi.encodeWithSignature(
                    "upgradeTo(address)",
                    oldImplementation
                )
            );
            rollbackTesting.value = false;
            // Check rollback was effective
            require(oldImplementation == _getImplementation(), "ERC1967Upgrade: upgrade breaks further upgrades");
            // Finally reset to the new implementation and log the upgrade
            _setImplementation(newImplementation);
            emit Upgraded(newImplementation);
        }
    }

    /**
     * @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);
        }
    }

    /**
     * @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 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 internall call site, it will return directly to the external caller.
     */
    function _delegate(address implementation) internal virtual {
        // solhint-disable-next-line no-inline-assembly
        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 {
    }
}

/**
 * @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();
    }
}

/**
 * @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();
    }
}

Contract Security Audit

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"}]

608060405260405162000f4038038062000f408339810160408190526200002691620004d4565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd62000603565b60008051602062000ef9833981519152146200008157634e487b7160e01b600052600160045260246000fd5b6200008f82826000620000ff565b50620000bf905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610462000603565b60008051602062000ed983398151915214620000eb57634e487b7160e01b600052600160045260246000fd5b620000f68262000170565b5050506200066c565b6200010a83620001cb565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806200014c5750805b156200016b576200016983836200029360201b6200026c1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200019b620002c2565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001c881620002fb565b50565b620001e1816200038b60201b620002981760201c565b620002495760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806200027260008051602062000ef983398151915260001b6200039560201b620002141760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060620002bb838360405180606001604052806027815260200162000f196027913962000398565b9392505050565b6000620002ec60008051602062000ed983398151915260001b6200039560201b620002141760201c565b546001600160a01b0316905090565b6001600160a01b038116620003625760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840162000240565b806200027260008051602062000ed983398151915260001b6200039560201b620002141760201c565b803b15155b919050565b90565b6060620003a5846200038b565b620004025760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840162000240565b600080856001600160a01b0316856040516200041f9190620005b0565b600060405180830381855af49150503d80600081146200045c576040519150601f19603f3d011682016040523d82523d6000602084013e62000461565b606091505b509092509050620004748282866200047e565b9695505050505050565b606083156200048f575081620002bb565b825115620004a05782518084602001fd5b8160405162461bcd60e51b8152600401620002409190620005ce565b80516001600160a01b03811681146200039057600080fd5b600080600060608486031215620004e9578283fd5b620004f484620004bc565b92506200050460208501620004bc565b60408501519092506001600160401b038082111562000521578283fd5b818601915086601f83011262000535578283fd5b8151818111156200054a576200054a62000656565b604051601f8201601f19908116603f0116810190838211818310171562000575576200057562000656565b816040528281528960208487010111156200058e578586fd5b620005a183602083016020880162000627565b80955050505050509250925092565b60008251620005c481846020870162000627565b9190910192915050565b6000602082528251806020840152620005ef81604085016020870162000627565b601f01601f19169190910160400192915050565b6000828210156200062257634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015620006445781810151838201526020016200062a565b83811115620001695750506000910152565b634e487b7160e01b600052604160045260246000fd5b61085d806200067c6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ed565b610118565b61005b610093366004610707565b610164565b3480156100a457600080fd5b506100ad6101da565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ed565b610217565b3480156100f557600080fd5b506100ad610241565b6101066102a2565b610116610111610346565b610355565b565b610120610379565b6001600160a01b0316336001600160a01b0316141561015957610154816040518060200160405280600081525060006103ac565b610161565b6101616100fe565b50565b61016c610379565b6001600160a01b0316336001600160a01b031614156101cd576101c88383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103ac915050565b6101d5565b6101d56100fe565b505050565b60006101e4610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610346565b9050610214565b6102146100fe565b90565b61021f610379565b6001600160a01b0316336001600160a01b03161415610159576101548161040b565b600061024b610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610379565b606061029183836040518060600160405280602781526020016108016027913961045f565b9392505050565b803b15155b919050565b6102aa610379565b6001600160a01b0316336001600160a01b031614156103415760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b610116565b600061035061053a565b905090565b3660008037600080366000845af43d6000803e808015610374573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b6103b583610562565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103f65750805b156101d557610405838361026c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610434610379565b604080516001600160a01b03928316815291841660208301520160405180910390a161016181610611565b606061046a84610298565b6104c55760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610338565b600080856001600160a01b0316856040516104e09190610785565b600060405180830381855af49150503d806000811461051b576040519150601f19603f3d011682016040523d82523d6000602084013e610520565b606091505b509150915061053082828661069d565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61039d565b61056b81610298565b6105cd5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610338565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b0381166106765760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105f0565b606083156106ac575081610291565b8251156106bc5782518084602001fd5b8160405162461bcd60e51b815260040161033891906107a1565b80356001600160a01b038116811461029d57600080fd5b6000602082840312156106fe578081fd5b610291826106d6565b60008060006040848603121561071b578182fd5b610724846106d6565b9250602084013567ffffffffffffffff80821115610740578384fd5b818601915086601f830112610753578384fd5b813581811115610761578485fd5b876020828501011115610772578485fd5b6020830194508093505050509250925092565b600082516107978184602087016107d4565b9190910192915050565b60006020825282518060208401526107c08160408501602087016107d4565b601f01601f19169190910160400192915050565b60005b838110156107ef5781810151838201526020016107d7565b83811115610405575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122093f028255035b61df476b13b9dba3c4f06f60e51b9b4caee31680b389aef327f64736f6c63430008020033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65640000000000000000000000007d94972475898092507358c0037b53f368983c60000000000000000000000000b011ae0f3a8dcc0c02481221cd28acdf0367a6570000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004454176949000000000000000000000000000000000000000000000000000000000000008968747470733a2f2f39613733652e77656273697465000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

23503:3618:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20432:11;:9;:11::i;:::-;23503:3618;;20200:11;:9;:11::i;25934:136::-;;;;;;;;;;-1:-1:-1;25934:136:0;;;;;:::i;:::-;;:::i;26455:166::-;;;;;;:::i;:::-;;:::i;25317:131::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;1556:32:1;;;1538:51;;1526:2;1511:18;25317:131:0;;;;;;;25662:105;;;;;;;;;;-1:-1:-1;25662:105:0;;;;;:::i;:::-;;:::i;24748:98::-;;;;;;;;;;;;;:::i;19836:113::-;19885:17;:15;:17::i;:::-;19913:28;19923:17;:15;:17::i;:::-;19913:9;:28::i;:::-;19836:113::o;25934:136::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;26008:54:::1;26026:17;26045:9;;;;;;;;;;;::::0;26056:5:::1;26008:17;:54::i;:::-;24185:103:::0;;;24265:11;:9;:11::i;:::-;25934:136;:::o;26455:166::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;26565:48:::1;26583:17;26602:4;;26565:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;26608:4:0::1;::::0;-1:-1:-1;26565:17:0::1;::::0;-1:-1:-1;;26565:48:0:i:1;:::-;24185:103:::0;;;24265:11;:9;:11::i;:::-;26455:166;;;:::o;25317:131::-;25369:23;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;25423:17:::1;:15;:17::i;:::-;25405:35;;24185:103:::0;;;24265:11;:9;:11::i;:::-;25317:131;:::o;25662:105::-;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;25737:22:::1;25750:8;25737:12;:22::i;24748:98::-:0;24791:14;24203:11;:9;:11::i;:::-;-1:-1:-1;;;;;24189:25:0;:10;-1:-1:-1;;;;;24189:25:0;;24185:103;;;24827:11:::1;:9;:11::i;8878:200::-:0;8961:12;8993:77;9014:6;9022:4;8993:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;8986:84;8878:200;-1:-1:-1;;;8878:200:0:o;3193:422::-;3560:20;;3599:8;;3193:422;;;;:::o;26908:210::-;26994:11;:9;:11::i;:::-;-1:-1:-1;;;;;26980:25:0;:10;-1:-1:-1;;;;;26980:25:0;;;26972:104;;;;-1:-1:-1;;;26972:104:0;;3727:2:1;26972:104:0;;;3709:21:1;3766:2;3746:18;;;3739:30;3805:34;3785:18;;;3778:62;3876:34;3856:18;;;3849:62;-1:-1:-1;;;3927:19:1;;;3920:33;3970:19;;26972:104:0;;;;;;;;;27087:23;19836:113;21881:142;21948:12;21980:35;:33;:35::i;:::-;21973:42;;21881:142;:::o;18429:915::-;18829:14;18826:1;18823;18810:34;19047:1;19044;19028:14;19025:1;19009:14;19002:5;18989:60;19126:16;19123:1;19120;19105:38;19166:6;19235:38;;;;19307:16;19304:1;19297:27;19235:38;19254:16;19251:1;19244:27;15737:124;15781:7;15461:66;15808:39;:45;-1:-1:-1;;;;;15808:45:0;;-1:-1:-1;15737:124:0;:::o;12742:321::-;12851:37;12870:17;12851:18;:37::i;:::-;12904:27;;-1:-1:-1;;;;;12904:27:0;;;;;;;;12960:1;12946:4;:11;:15;:28;;;;12965:9;12946:28;12942:114;;;12991:53;13020:17;13039:4;12991:28;:53::i;:::-;;12742:321;;;:::o;16270:138::-;16335:35;16348:11;:9;:11::i;:::-;16335:35;;;-1:-1:-1;;;;;1830:15:1;;;1812:34;;1882:15;;;1877:2;1862:18;;1855:43;1747:18;16335:35:0;;;;;;;16381:19;16391:8;16381:9;:19::i;9272:423::-;9383:12;9416:18;9427:6;9416:10;:18::i;:::-;9408:69;;;;-1:-1:-1;;;9408:69:0;;3320:2:1;9408:69:0;;;3302:21:1;3359:2;3339:18;;;3332:30;3398:34;3378:18;;;3371:62;-1:-1:-1;;;3449:18:1;;;3442:36;3495:19;;9408:69:0;3292:228:1;9408:69:0;9551:12;9565:23;9592:6;-1:-1:-1;;;;;9592:19:0;9612:4;9592:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9550:67;;;;9635:52;9653:7;9662:10;9674:12;9635:17;:52::i;:::-;9628:59;9272:423;-1:-1:-1;;;;;;9272:423:0:o;11833:142::-;11886:7;11552:66;11913:48;1696:40;12071:262;12153:37;12172:17;12153:18;:37::i;:::-;12145:95;;;;-1:-1:-1;;;12145:95:0;;2906:2:1;12145:95:0;;;2888:21:1;2945:2;2925:18;;;2918:30;2984:34;2964:18;;;2957:62;-1:-1:-1;;;3035:18:1;;;3028:43;3088:19;;12145:95:0;2878:235:1;12145:95:0;12308:17;11552:66;12251:48;:74;;-1:-1:-1;;;;;;12251:74:0;-1:-1:-1;;;;;12251:74:0;;;;;;;;;;-1:-1:-1;12071:262:0:o;15948:204::-;-1:-1:-1;;;;;16012:22:0;;16004:73;;;;-1:-1:-1;;;16004:73:0;;2499:2:1;16004:73:0;;;2481:21:1;2538:2;2518:18;;;2511:30;2577:34;2557:18;;;2550:62;-1:-1:-1;;;2628:18:1;;;2621:36;2674:19;;16004:73:0;2471:228:1;16004:73:0;16136:8;15461:66;16088:39;1696:40;9703:742;9818:12;9847:7;9843:595;;;-1:-1:-1;9878:10:0;9871:17;;9843:595;9992:17;;:21;9988:439;;10255:10;10249:17;10316:15;10303:10;10299:2;10295:19;10288:44;10203:148;10398:12;10391:20;;-1:-1:-1;;;10391:20:0;;;;;;;;:::i;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:196;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:715::-;;;;541:2;529:9;520:7;516:23;512:32;509:2;;;562:6;554;547:22;509:2;590:29;609:9;590:29;:::i;:::-;580:39;;670:2;659:9;655:18;642:32;693:18;734:2;726:6;723:14;720:2;;;755:6;747;740:22;720:2;798:6;787:9;783:22;773:32;;843:7;836:4;832:2;828:13;824:27;814:2;;870:6;862;855:22;814:2;915;902:16;941:2;933:6;930:14;927:2;;;962:6;954;947:22;927:2;1012:7;1007:2;998:6;994:2;990:15;986:24;983:37;980:2;;;1038:6;1030;1023:22;980:2;1074;1070;1066:11;1056:21;;1096:6;1086:16;;;;;499:609;;;;;:::o;1113:274::-;;1280:6;1274:13;1296:53;1342:6;1337:3;1330:4;1322:6;1318:17;1296:53;:::i;:::-;1365:16;;;;;1250:137;-1:-1:-1;;1250:137:1:o;1909:383::-;;2058:2;2047:9;2040:21;2090:6;2084:13;2133:6;2128:2;2117:9;2113:18;2106:34;2149:66;2208:6;2203:2;2192:9;2188:18;2183:2;2175:6;2171:15;2149:66;:::i;:::-;2276:2;2255:15;-1:-1:-1;;2251:29:1;2236:45;;;;2283:2;2232:54;;2030:262;-1:-1:-1;;2030:262:1:o;4000:258::-;4072:1;4082:113;4096:6;4093:1;4090:13;4082:113;;;4172:11;;;4166:18;4153:11;;;4146:39;4118:2;4111:10;4082:113;;;4213:6;4210:1;4207:13;4204:2;;;-1:-1:-1;;4248:1:1;4230:16;;4223:27;4053:205::o

Swarm Source

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