ETH Price: $4,014.10 (+3.89%)

Contract

0x7a67D5Eb2D6684d3e899575aAAA5AB31b79890c2
 

Overview

ETH Balance

0.00000942 ETH

Eth Value

$0.04 (@ $4,014.10/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add To Withdrawa...214072542024-12-15 10:14:3514 hrs ago1734257675IN
0x7a67D5Eb...1b79890c2
0 ETH0.000734946.43871708
Add To Withdrawa...214063652024-12-15 7:15:2317 hrs ago1734246923IN
0x7a67D5Eb...1b79890c2
0 ETH0.000944037.06560893
Dcs Bulk Check S...214013842024-12-14 14:35:1134 hrs ago1734186911IN
0x7a67D5Eb...1b79890c2
0 ETH0.00052269.28346252
Add To Withdrawa...213991792024-12-14 7:11:4741 hrs ago1734160307IN
0x7a67D5Eb...1b79890c2
0 ETH0.001013247.90850032
Fcn Bulk Process...213849182024-12-12 7:25:353 days ago1733988335IN
0x7a67D5Eb...1b79890c2
0 ETH0.0221412615.356063
Fcn Bulk Collect...213849152024-12-12 7:24:593 days ago1733988299IN
0x7a67D5Eb...1b79890c2
0 ETH0.0191347113.95216583
Fcn Bulk Settle ...213835102024-12-12 2:42:353 days ago1733971355IN
0x7a67D5Eb...1b79890c2
0 ETH0.0015954314.60287166
Sfn Bulk Process...213804642024-12-11 16:29:474 days ago1733934587IN
0x7a67D5Eb...1b79890c2
0 ETH0.018530529.37978503
Sfn Bulk Collect...213804542024-12-11 16:27:474 days ago1733934467IN
0x7a67D5Eb...1b79890c2
0 ETH0.0136942629.68419471
Sfn Bulk Settle ...213803352024-12-11 16:03:474 days ago1733933027IN
0x7a67D5Eb...1b79890c2
204.88984153 ETH0.0049652539.38677949
Fcn Bulk Check T...213801272024-12-11 15:21:474 days ago1733930507IN
0x7a67D5Eb...1b79890c2
0 ETH0.0664338731.21118172
Fcn Bulk Check T...213801262024-12-11 15:21:354 days ago1733930495IN
0x7a67D5Eb...1b79890c2
0 ETH0.0720853430.86758457
Fcn Bulk Check T...213801252024-12-11 15:21:234 days ago1733930483IN
0x7a67D5Eb...1b79890c2
0 ETH0.0790876132.3689017
Fcn Bulk Check T...213801242024-12-11 15:21:114 days ago1733930471IN
0x7a67D5Eb...1b79890c2
0 ETH0.0907519930.66727066
Fcn Bulk Check T...213801232024-12-11 15:20:594 days ago1733930459IN
0x7a67D5Eb...1b79890c2
0 ETH0.0991249330.41366935
Sfn Bulk Settle ...213801052024-12-11 15:17:234 days ago1733930243IN
0x7a67D5Eb...1b79890c2
0 ETH0.0040648328.78489732
Dcs Bulk Process...213798742024-12-11 14:30:594 days ago1733927459IN
0x7a67D5Eb...1b79890c2
0 ETH0.0239165326.805978
Dcs Bulk Collect...213798712024-12-11 14:30:114 days ago1733927411IN
0x7a67D5Eb...1b79890c2
0 ETH0.0235005825.20886815
Sfn Bulk Settle ...213798522024-12-11 14:26:234 days ago1733927183IN
0x7a67D5Eb...1b79890c2
0.01429595 ETH0.0159312827.45679617
Dcs Bulk Settle ...213798492024-12-11 14:25:474 days ago1733927147IN
0x7a67D5Eb...1b79890c2
0 ETH0.0107753525.21682482
Dcs Bulk Check T...213798122024-12-11 14:18:234 days ago1733926703IN
0x7a67D5Eb...1b79890c2
0 ETH0.0111859530.86189143
Dcs Bulk Check T...213798112024-12-11 14:18:114 days ago1733926691IN
0x7a67D5Eb...1b79890c2
0 ETH0.0117942629.771909
Fcn Bulk Check T...213797972024-12-11 14:15:234 days ago1733926523IN
0x7a67D5Eb...1b79890c2
0 ETH0.08575131.25881828
Fcn Bulk Check T...213797962024-12-11 14:15:114 days ago1733926511IN
0x7a67D5Eb...1b79890c2
0 ETH0.0850944731.01950578
Sfn Bulk Check T...213797832024-12-11 14:12:354 days ago1733926355IN
0x7a67D5Eb...1b79890c2
0 ETH0.0077676932.83161498
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
213803352024-12-11 16:03:474 days ago1733933027
0x7a67D5Eb...1b79890c2
204.88984153 ETH
213798522024-12-11 14:26:234 days ago1733927183
0x7a67D5Eb...1b79890c2
0.01429595 ETH
213299322024-12-04 15:09:1111 days ago1733324951
0x7a67D5Eb...1b79890c2
201.0162565 ETH
213299322024-12-04 15:09:1111 days ago1733324951
0x7a67D5Eb...1b79890c2
0.54087015 ETH
212886692024-11-28 20:45:3517 days ago1732826735
0x7a67D5Eb...1b79890c2
0.81387682 ETH
212872492024-11-28 15:59:5917 days ago1732809599
0x7a67D5Eb...1b79890c2
0.00390251 ETH
212872442024-11-28 15:58:5917 days ago1732809539
0x7a67D5Eb...1b79890c2
0.00001722 ETH
212872442024-11-28 15:58:5917 days ago1732809539
0x7a67D5Eb...1b79890c2
0.00463934 ETH
212872442024-11-28 15:58:5917 days ago1732809539
0x7a67D5Eb...1b79890c2
0.00001549 ETH
212800212024-11-27 15:36:1118 days ago1732721771
0x7a67D5Eb...1b79890c2
10.03627171 ETH
212799082024-11-27 15:13:1118 days ago1732720391
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799072024-11-27 15:12:5918 days ago1732720379
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799072024-11-27 15:12:5918 days ago1732720379
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799072024-11-27 15:12:5918 days ago1732720379
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799072024-11-27 15:12:5918 days ago1732720379
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799062024-11-27 15:12:4718 days ago1732720367
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799062024-11-27 15:12:4718 days ago1732720367
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212799062024-11-27 15:12:4718 days ago1732720367
0x7a67D5Eb...1b79890c2
 Contract Creation0 ETH
212798732024-11-27 15:05:4718 days ago1732719947
0x7a67D5Eb...1b79890c2
0.95633594 ETH
212768752024-11-27 5:03:4718 days ago1732683827
0x7a67D5Eb...1b79890c2
200 ETH
212434492024-11-22 13:03:5923 days ago1732280639
0x7a67D5Eb...1b79890c2
0.81374424 ETH
212410992024-11-22 5:11:2323 days ago1732252283
0x7a67D5Eb...1b79890c2
0.00811346 ETH
212410992024-11-22 5:11:2323 days ago1732252283
0x7a67D5Eb...1b79890c2
0.00229157 ETH
212410862024-11-22 5:08:4723 days ago1732252127
0x7a67D5Eb...1b79890c2
0.00000448 ETH
212410792024-11-22 5:07:2323 days ago1732252043
0x7a67D5Eb...1b79890c2
0.0309077 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CegaEntry

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : CegaEntry.sol
// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.8.10;

/******************************************************************************\
* A custom implementation of EIP-2535
* EIP-2535: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

import { CegaEntryLib } from "./lib/CegaEntryLib.sol";
import { ICegaEntry } from "./interfaces/ICegaEntry.sol";

contract CegaEntry is ICegaEntry {
    constructor(address _contractOwner) payable {
        CegaEntryLib.setContractOwner(_contractOwner);
    }

    function diamondCut(
        ProxyImplementation[] calldata _implementationParams,
        address _init,
        bytes calldata _calldata
    ) external override {
        CegaEntryLib.enforceIsContractOwner();
        CegaEntryLib.updateImplementation(
            _implementationParams,
            _init,
            _calldata
        );
    }

    // Find implementation for function that is called and execute the
    // function if a implementation is found and return any value.
    fallback() external payable {
        CegaEntryLib.ProxyStorage storage ds = CegaEntryLib.proxyStorage();

        // get implementation from function selector
        address implementation = ds
            .selectorToImplAndPosition[msg.sig]
            .implAddress;
        require(
            implementation != address(0),
            "CegaEntry: Function does not exist"
        );
        // Execute external function from implementation using delegatecall and return any value.
        assembly {
            // copy function selector and any arguments
            calldatacopy(0, 0, calldatasize())
            // execute function call using the implementation
            let result := delegatecall(
                gas(),
                implementation,
                0,
                calldatasize(),
                0,
                0
            )
            // get any return value
            returndatacopy(0, 0, returndatasize())
            // return any return value or error back to the caller
            switch result
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    receive() external payable {}
}

File 2 of 3 : ICegaEntry.sol
// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.8.10;

/******************************************************************************\
* EIP-2535: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

interface ICegaEntry {
    enum ProxyImplementationAction {
        Add,
        Replace,
        Remove
    }
    // Add=0, Replace=1, Remove=2

    struct ProxyImplementation {
        address implAddress;
        ProxyImplementationAction action;
        bytes4[] functionSelectors;
    }

    /// @notice Add/replace/remove any number of functions and optionally execute
    ///         a function with delegatecall
    /// @param _implementationParams Contains the implementation addresses and function selectors
    /// @param _init The address of the contract or implementation to execute _calldata
    /// @param _calldata A function call, including function selector and arguments
    ///                  _calldata is executed with delegatecall on _init
    function diamondCut(
        ProxyImplementation[] calldata _implementationParams,
        address _init,
        bytes calldata _calldata
    ) external;

    event DiamondCut(
        ProxyImplementation[] _diamondCut,
        address _init,
        bytes _calldata
    );
}

File 3 of 3 : CegaEntryLib.sol
// SPDX-License-Identifier: BUSL-1.1

pragma solidity ^0.8.10;

/******************************************************************************\
* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535
/******************************************************************************/

import { ICegaEntry } from "../interfaces/ICegaEntry.sol";

library CegaEntryLib {
    bytes32 constant PROXY_STORAGE_POSITION =
        bytes32(uint256(keccak256("cega.proxy.implementation.storage")) - 1);

    struct ImplementationAddressAndPosition {
        address implAddress;
        uint96 functionSelectorPosition; // position in implementationFunctionSelectors.functionSelectors array
    }

    struct ImplementationFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 implementationAddressPosition; // position of implAddress in implementationAddresses array
    }

    struct ProxyStorage {
        // maps function selector to the implementation address and
        // the position of the selector in the implementationFunctionSelectors.selectors array
        mapping(bytes4 => ImplementationAddressAndPosition) selectorToImplAndPosition;
        // maps implementation addresses to function selectors
        mapping(address => ImplementationFunctionSelectors) implementationFunctionSelectors;
        // implementation addresses
        address[] implementationAddresses;
        // Used to query if a contract implements an interface.
        // Used to implement ERC-165.
        mapping(bytes4 => bool) supportedInterfaces;
        // owner of the contract
        address contractOwner;
    }

    function proxyStorage() internal pure returns (ProxyStorage storage ds) {
        bytes32 position = PROXY_STORAGE_POSITION;
        assembly {
            ds.slot := position
        }
    }

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    function setContractOwner(address _newOwner) internal {
        ProxyStorage storage ds = proxyStorage();
        address previousOwner = ds.contractOwner;
        ds.contractOwner = _newOwner;
        emit OwnershipTransferred(previousOwner, _newOwner);
    }

    function contractOwner() internal view returns (address contractOwner_) {
        contractOwner_ = proxyStorage().contractOwner;
    }

    function enforceIsContractOwner() internal view {
        require(
            msg.sender == proxyStorage().contractOwner,
            "CegaEntry: Must be contract owner"
        );
    }

    event DiamondCut(
        ICegaEntry.ProxyImplementation[] _implementationData,
        address _init,
        bytes _calldata
    );

    // Internal function version of diamondCut
    function updateImplementation(
        ICegaEntry.ProxyImplementation[] memory _implementationData,
        address _init,
        bytes memory _calldata
    ) internal {
        for (
            uint256 implIndex;
            implIndex < _implementationData.length;
            implIndex++
        ) {
            ICegaEntry.ProxyImplementationAction action = _implementationData[
                implIndex
            ].action;
            if (action == ICegaEntry.ProxyImplementationAction.Add) {
                addFunctions(
                    _implementationData[implIndex].implAddress,
                    _implementationData[implIndex].functionSelectors
                );
            } else if (action == ICegaEntry.ProxyImplementationAction.Replace) {
                replaceFunctions(
                    _implementationData[implIndex].implAddress,
                    _implementationData[implIndex].functionSelectors
                );
            } else if (action == ICegaEntry.ProxyImplementationAction.Remove) {
                removeFunctions(
                    _implementationData[implIndex].implAddress,
                    _implementationData[implIndex].functionSelectors
                );
            } else {
                revert("CegaEntry: Incorrect ProxyImplementationAction");
            }
        }
        emit DiamondCut(_implementationData, _init, _calldata);
        initializeImplementation(_init, _calldata);
    }

    function addFunctions(
        address _implementationAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "CegaEntry: No selectors in implementation to cut"
        );
        ProxyStorage storage ds = proxyStorage();
        require(
            _implementationAddress != address(0),
            "CegaEntry: Add implementation can't be address(0)"
        );
        uint96 selectorPosition = uint96(
            ds
                .implementationFunctionSelectors[_implementationAddress]
                .functionSelectors
                .length
        );
        // add new implementation address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _implementationAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldImplementationAddress = ds
                .selectorToImplAndPosition[selector]
                .implAddress;
            require(
                oldImplementationAddress == address(0),
                "CegaEntry: Can't add function that already exists"
            );
            addFunction(ds, selector, selectorPosition, _implementationAddress);
            selectorPosition++;
        }
    }

    function replaceFunctions(
        address _implementationAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "CegaEntry: No selectors in implementation to cut"
        );
        ProxyStorage storage ds = proxyStorage();
        require(
            _implementationAddress != address(0),
            "CegaEntry: Replace implementation can't be address(0)"
        );
        uint96 selectorPosition = uint96(
            ds
                .implementationFunctionSelectors[_implementationAddress]
                .functionSelectors
                .length
        );
        // add new implementation address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _implementationAddress);
        }
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldImplementationAddress = ds
                .selectorToImplAndPosition[selector]
                .implAddress;
            require(
                oldImplementationAddress != _implementationAddress,
                "CegaEntry: Can't replace function with same function"
            );
            removeFunction(ds, oldImplementationAddress, selector);
            addFunction(ds, selector, selectorPosition, _implementationAddress);
            selectorPosition++;
        }
    }

    function removeFunctions(
        address _implementationAddress,
        bytes4[] memory _functionSelectors
    ) internal {
        require(
            _functionSelectors.length > 0,
            "CegaEntry: No selectors in implementation to cut"
        );
        ProxyStorage storage ds = proxyStorage();
        // if function does not exist then do nothing and return
        require(
            _implementationAddress == address(0),
            "CegaEntry: Remove implementation address must be address(0)"
        );
        for (
            uint256 selectorIndex;
            selectorIndex < _functionSelectors.length;
            selectorIndex++
        ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldImplementationAddress = ds
                .selectorToImplAndPosition[selector]
                .implAddress;
            removeFunction(ds, oldImplementationAddress, selector);
        }
    }

    function addFacet(
        ProxyStorage storage ds,
        address _implementationAddress
    ) internal {
        enforceHasContractCode(
            _implementationAddress,
            "CegaEntry: New implementation has no code"
        );
        ds
            .implementationFunctionSelectors[_implementationAddress]
            .implementationAddressPosition = ds.implementationAddresses.length;
        ds.implementationAddresses.push(_implementationAddress);
    }

    function addFunction(
        ProxyStorage storage ds,
        bytes4 _selector,
        uint96 _selectorPosition,
        address _implementationAddress
    ) internal {
        ds
            .selectorToImplAndPosition[_selector]
            .functionSelectorPosition = _selectorPosition;
        ds
            .implementationFunctionSelectors[_implementationAddress]
            .functionSelectors
            .push(_selector);
        ds
            .selectorToImplAndPosition[_selector]
            .implAddress = _implementationAddress;
    }

    function removeFunction(
        ProxyStorage storage ds,
        address _implementationAddress,
        bytes4 _selector
    ) internal {
        require(
            _implementationAddress != address(0),
            "CegaEntry: Can't remove function that doesn't exist"
        );
        // an immutable function is a function defined directly in a cegaEntry
        require(
            _implementationAddress != address(this),
            "CegaEntry: Can't remove immutable function"
        );
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds
            .selectorToImplAndPosition[_selector]
            .functionSelectorPosition;
        uint256 lastSelectorPosition = ds
            .implementationFunctionSelectors[_implementationAddress]
            .functionSelectors
            .length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds
                .implementationFunctionSelectors[_implementationAddress]
                .functionSelectors[lastSelectorPosition];
            ds
                .implementationFunctionSelectors[_implementationAddress]
                .functionSelectors[selectorPosition] = lastSelector;
            ds
                .selectorToImplAndPosition[lastSelector]
                .functionSelectorPosition = uint96(selectorPosition);
        }
        // delete the last selector
        ds
            .implementationFunctionSelectors[_implementationAddress]
            .functionSelectors
            .pop();
        delete ds.selectorToImplAndPosition[_selector];

        // if no more selectors for implementation address then delete the implementation address
        if (lastSelectorPosition == 0) {
            // replace implementation address with last implementation address and delete last implementation address
            uint256 lastImplementationAddressPosition = ds
                .implementationAddresses
                .length - 1;
            uint256 implementationAddressPosition = ds
                .implementationFunctionSelectors[_implementationAddress]
                .implementationAddressPosition;
            if (
                implementationAddressPosition !=
                lastImplementationAddressPosition
            ) {
                address lastImplementationAddress = ds.implementationAddresses[
                    lastImplementationAddressPosition
                ];
                ds.implementationAddresses[
                    implementationAddressPosition
                ] = lastImplementationAddress;
                ds
                    .implementationFunctionSelectors[lastImplementationAddress]
                    .implementationAddressPosition = implementationAddressPosition;
            }
            ds.implementationAddresses.pop();
            delete ds
                .implementationFunctionSelectors[_implementationAddress]
                .implementationAddressPosition;
        }
    }

    function initializeImplementation(
        address _init,
        bytes memory _calldata
    ) internal {
        if (_init == address(0)) {
            require(
                _calldata.length == 0,
                "CegaEntry: _init is address(0) but _calldata is not empty"
            );
        } else {
            require(
                _calldata.length > 0,
                "CegaEntry: _calldata is empty but _init is not address(0)"
            );
            if (_init != address(this)) {
                enforceHasContractCode(
                    _init,
                    "CegaEntry: _init address has no code"
                );
            }
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    assembly {
                        revert(add(error, 0x20), mload(error))
                    }
                } else {
                    revert("CegaEntry: _init function reverted");
                }
            }
        }
    }

    function enforceHasContractCode(
        address _contract,
        string memory _errorMessage
    ) internal view {
        require(_contract.code.length > 0, _errorMessage);
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"}],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"implAddress","type":"address"},{"internalType":"enum ICegaEntry.ProxyImplementationAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"indexed":false,"internalType":"struct ICegaEntry.ProxyImplementation[]","name":"_diamondCut","type":"tuple[]"},{"indexed":false,"internalType":"address","name":"_init","type":"address"},{"indexed":false,"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"DiamondCut","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"components":[{"internalType":"address","name":"implAddress","type":"address"},{"internalType":"enum ICegaEntry.ProxyImplementationAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct ICegaEntry.ProxyImplementation[]","name":"_implementationParams","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001862000012620000e1565b62000104565b6040516119e46200028a82396119e490f35b50634e487b7160e01b600052604160045260246000fd5b90601f01601f191681019081106001600160401b038211176200006357604052565b6200006d6200002a565b604052565b90620000896200008160405190565b928362000041565b565b600080fd5b6001600160a01b031690565b90565b6001600160a01b038116036200008b57565b9050519062000089826200009f565b906200009c9160208183031215620000b157620000db600080fd5b620000b1565b6200009c62001c6e80380380620000f88162000072565b928339810190620000c0565b62000089906200017c565b546001600160a01b031690565b6200009c9062000090906001600160a01b031682565b6200009c906200011c565b6200009c9062000132565b906200015c6200009c62000178926200013d565b82546001600160a01b0319166001600160a01b03919091161790565b9055565b6004620001886200027f565b0190620001a1816200019a846200010f565b9362000148565b620001d8620001d17f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936200013d565b916200013d565b91620001e360405190565b600090a3565b6200009c6200009c6200009c9290565b6200009c90620001e9565b50634e487b7160e01b600052601160045260246000fd5b919082039182116200022957565b6200008962000204565b6200009c62000279620002667f11cac52ac9aac3f05b98c564845f9cbef3a9feb42b2c77780d0605eb87044b24620001f9565b620002726001620001e9565b906200021b565b620001e9565b6200009c6200023356fe6080604052600436101561001e575b361561001c5761001c61052f565b005b60003560e01c631f931c1c0361000e57610036610192565b61000e565b600080fd5b909182601f83011215610089575b602082359267ffffffffffffffff841161007c575b01926020830284011161007257565b61007a600080fd5b565b610084600080fd5b610063565b610091600080fd5b61004e565b6001600160a01b031690565b90565b6001600160a01b0381165b0361003b57565b9050359061007a826100a5565b909182601f83011215610100575b602082359267ffffffffffffffff84116100f3575b01928284011161007257565b6100fb600080fd5b6100e7565b610108600080fd5b6100d2565b6101679192606082850312610185575b61013a84833567ffffffffffffffff8111610178575b8401610040565b93909461014a81602086016100b7565b9360408101359067ffffffffffffffff821161016b575b016100c4565b9091565b610173600080fd5b610161565b610180600080fd5b610133565b61018d600080fd5b61011d565b50346101b5575b6101b06101a736600461010d565b9392909261047f565b604051005b6101bd600080fd5b610199565b601f01601f191690565b50634e487b7160e01b600052604160045260246000fd5b90601f01601f1916810190811067ffffffffffffffff82111761020557604052565b61020d6101cc565b604052565b9061007a61021f60405190565b92836101e3565b6020809167ffffffffffffffff811161023e57020190565b6102466101cc565b020190565b6003111561003b57565b9050359061007a8261024b565b6001600160e01b031981166100b0565b9050359061007a82610262565b9092919261029461028f82610226565b610212565b93818552602080860192028301928184116102d2575b915b8383106102b95750505050565b602080916102c78486610272565b8152019201916102ac565b6102da600080fd5b6102aa565b906100a29181601f820112156102fb575b60208135910161027f565b610303600080fd5b6102f0565b919061036290606084820312610376575b6103236060610212565b93600061033083836100b7565b90860152602061034283828401610255565b9086015260408101359067ffffffffffffffff8211610369575b016102df565b6040830152565b610371600080fd5b61035c565b61037e600080fd5b610319565b9092919261039361028f82610226565b93818552602080860192028301928184116103f3575b80925b8484106103ba575050505050565b602080916103db85873567ffffffffffffffff81116103e6575b8601610308565b8152019301926103ac565b6103ee600080fd5b6103d4565b6103fb600080fd5b6103a9565b6100a2913691610383565b61042a60209167ffffffffffffffff811161042e57601f01601f191690565b0190565b6101c26101cc565b90826000939282370152565b92919061007a9161045561028f8361040b565b94828652602086019183820111156104365761046f600080fd5b610436565b6100a2913691610442565b9361049861049e9261007a96610493610685565b610400565b93610474565b916108f1565b906001600160e01b0319165b600052602052604060002090565b6100966100a26100a29290565b6100a2906104be565b156104db57565b60405162461bcd60e51b815260206004820152602260248201527f43656761456e7472793a2046756e6374696f6e20646f6573206e6f74206578696044820152611cdd60f21b6064820152608490fd5b0390fd5b50610562600061055481610541610627565b83356001600160e01b03191691016104a4565b01546001600160a01b031690565b6000808092610587610576610096846104cb565b6001600160a01b03831614156104d4565b368280378136915af43d82803e1561059d573d90f35b3d90fd5b6100a26100a26100a29290565b6100a2906105a1565b50634e487b7160e01b600052601160045260246000fd5b919082039182116105db57565b61007a6105b7565b6100a26106226106127f11cac52ac9aac3f05b98c564845f9cbef3a9feb42b2c77780d0605eb87044b246105ae565b61061c60016105a1565b906105ce565b6105a1565b6100a26105e3565b1561063657565b60405162461bcd60e51b815260206004820152602160248201527f43656761456e7472793a204d75737420626520636f6e7472616374206f776e656044820152603960f91b6064820152608490fd5b61007a336106a961069c6100966004610554610627565b916001600160a01b031690565b1461062f565b60019060001981146106bf570190565b61042a6105b7565b50634e487b7160e01b600052603260045260246000fd5b90602080916106eb845190565b8110156106f9575b02010190565b6107016106c7565b6106f3565b50634e487b7160e01b600052602160045260246000fd5b6003111561072757565b61007a610706565b9061007a8261071d565b6100a2905161072f565b9052565b6100a29061072f565b61074390610747565b90610779610772610768845190565b8084529260200190565b9260200190565b9060005b81811061078a5750505090565b9091926107b16107aa60019286516001600160e01b031916815260200190565b9460200190565b92910161077d565b80516001600160a01b031682526100a29160608101916040906107e460208201516020850190610750565b0151906040818403910152610759565b906100a2916107b9565b9061081461080a835190565b8083529160200190565b90816108266020830284019460200190565b926000915b83831061083a57505050505090565b9091929394602061085d610856838560019503875289516107f4565b9760200190565b930193019193929061082b565b60005b83811061087d5750506000910152565b818101518382015260200161086d565b6108ae6101c260209361042a936108a2815190565b80835293849260200190565b9586910161086a565b60608082526100a294926108e4916108d291908401906107fe565b6001600160a01b039094166020830152565b604081840391015261088d565b92909160005b6109026100a2865190565b811015610a5c5761091f602061091883886106de565b5101610739565b9060009161092c8361072f565b6109358261072f565b0361097d575061097361095e6109789361094f848a6106de565b5101516001600160a01b031690565b604061096a848a6106de565b51015190610c3d565b6106af565b6108f7565b610987600161072f565b6109908261072f565b036109bf57506109736109aa6109789361094f848a6106de565b60406109b6848a6106de565b51015190610e40565b6109d26109cc600261072f565b9161072f565b03610a00576109736109eb6109789361094f848a6106de565b60406109f7848a6106de565b51015190610fa8565b60405162461bcd60e51b815260206004820152602e60248201527f43656761456e7472793a20496e636f72726563742050726f7879496d706c656d60448201526d32b73a30ba34b7b720b1ba34b7b760911b6064820152608490fd5b5090929161007a92817f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67391610a9d85610a9460405190565b938493846108b7565b0390a161183c565b15610aac57565b60405162461bcd60e51b815260206004820152603060248201527f43656761456e7472793a204e6f2073656c6563746f727320696e20696d706c6560448201526f1b595b9d185d1a5bdb881d1bc818dd5d60821b6064820152608490fd5b15610b1157565b60405162461bcd60e51b815260206004820152603160248201527f43656761456e7472793a2041646420696d706c656d656e746174696f6e2063616044820152706e2774206265206164647265737328302960781b6064820152608490fd5b6100a290610096906001600160a01b031682565b6100a290610b70565b6100a290610b84565b906104b090610b8d565b610bad6100a26100a29290565b6001600160601b031690565b15610bc057565b60405162461bcd60e51b815260206004820152603160248201527f43656761456e7472793a2043616e2774206164642066756e6374696f6e207468604482015270617420616c72656164792065786973747360781b6064820152608490fd5b6001906001600160601b03166001600160601b0381146106bf570190565b9190610c47815190565b610c63600091610c5d610c59846105a1565b9190565b11610aa5565b610c6b610627565b610c74826104cb565b610c926001600160a01b0382166001600160a01b0388161415610b0a565b610cb0610cab84610ca68960018701610b96565b015490565b610ba0565b9384610ccb610cbe86610ba0565b916001600160601b031690565b14610d5e575b6000945b610ce06100a2835190565b861015610d5457610d4881610d438a610d4e9489610d3d610d25826105548f610d1c8f91610d0e908f6106de565b516001600160e01b03191690565b958691016104a4565b610d376001600160a01b038c1661069c565b14610bb9565b896112a9565b610c1f565b956106af565b94610cd5565b5050505050509050565b610d68878461115e565b610cd1565b15610d7457565b60405162461bcd60e51b815260206004820152603560248201527f43656761456e7472793a205265706c61636520696d706c656d656e746174696f6044820152746e2063616e2774206265206164647265737328302960581b6064820152608490fd5b15610dde57565b60405162461bcd60e51b815260206004820152603460248201527f43656761456e7472793a2043616e2774207265706c6163652066756e6374696f60448201527337103bb4ba341039b0b6b290333ab731ba34b7b760611b6064820152608490fd5b8151919291610e57600091610c5d610c59846105a1565b610e5f610627565b90610e80610e6f610096836104cb565b6001600160a01b0385161415610d6d565b610e94610cab82610ca68660018701610b96565b9485610ea2610cbe84610ba0565b14610f27575b6000955b610eb76100a2835190565b871015610f1e57610f1281610d4387610f189487610d3d8a610eee8f610554610ee4610d0e87938f6106de565b80968195016104a4565b610f0c6001600160a01b0387166001600160a01b0383161415610dd7565b8c61152a565b966106af565b95610eac565b50505050509050565b610f31848461115e565b610ea8565b15610f3d57565b60405162461bcd60e51b815260206004820152603b60248201527f43656761456e7472793a2052656d6f766520696d706c656d656e746174696f6e60448201527f2061646472657373206d757374206265206164647265737328302900000000006064820152608490fd5b81516000939290610fbf90610c5d610c59876105a1565b610fe0610fca610627565b92610fda61069c610096886104cb565b14610f36565b60005b610fee6100a2835190565b8110156110245780610973611009610d0e61101f94866106de565b6110198861055483828a016104a4565b8661152a565b610fe3565b5050509050565b9061103861028f8361040b565b918252565b611047602961102b565b7f43656761456e7472793a204e657720696d706c656d656e746174696f6e20686160208201526873206e6f20636f646560b81b604082015290565b6100a261103d565b90600019905b9181191691161790565b906110aa6100a26110b1926105a1565b825461108a565b9055565b6110d56001916110c3815490565b8410156110de57600052602060002090565b91020190600090565b6110e66106c7565b600052602060002090565b916001600160a01b0360089290920291821b911b611090565b921b90565b91906111206100a26110b193610b8d565b9083546110f1565b9061114b61007a92805490600160401b821015611151575b6001820181556110b5565b9061110f565b6111596101cc565b611140565b9061119b61007a92611177611171611082565b84611995565b6100a260028201916001611195868261118e875490565b9401610b96565b0161109a565b611128565b906001600160a01b03199060a01b611090565b610bad6100a26100a2926001600160601b031690565b906111d96100a26110b1926111b3565b82546111a0565b60086112056004929493946111f3815490565b8610156110de57600052602060002090565b8185040193060290565b9190600861109091029161110a63ffffffff841b90565b919061124561123f6110b1936001600160e01b03191690565b60e01c90565b90835461120f565b9061127061007a92805490600160401b821015611276575b6001820181556111e0565b90611226565b61127e6101cc565b611265565b906001600160a01b0390611090565b906112a26100a26110b192610b8d565b8254611283565b8184936112e66000946112e18661042a61007a9a60016112eb996112db85820199866112d58a8d6104a4565b016111c9565b01610b96565b61124d565b6104a4565b01611292565b156112f857565b60405162461bcd60e51b815260206004820152603360248201527f43656761456e7472793a2043616e27742072656d6f76652066756e6374696f6e604482015272081d1a185d08191bd95cdb89dd08195e1a5cdd606a1b6064820152608490fd5b1561136057565b60405162461bcd60e51b815260206004820152602a60248201527f43656761456e7472793a2043616e27742072656d6f766520696d6d757461626c6044820152693290333ab731ba34b7b760b11b6064820152608490fd5b6100a29060a01c610bad565b6100a290546113b8565b6100a26100a26100a2926001600160601b031690565b6100a2916008021c60e01b90565b906100a291546113e4565b50634e487b7160e01b600052603160045260246000fd5b61007a91600091611226565b600161142a825490565b8015611449575b039061144661144083836111e0565b90611414565b55565b6114516113fd565b611431565b50634e487b7160e01b600052600060045260246000fd5b61007a9161147b5760009055565b611483611456565b60009055565b6100a29081565b6100a29054611489565b6100a2916008021c610096565b906100a2915461149a565b61007a9160009161110f565b60016114c8825490565b80156114e4575b03906114466114de83836110b5565b906114b2565b6114ec6113fd565b6114cf565b9160001960089290920291821b911b611090565b91906115166100a26110b1936105a1565b9083546114f1565b61007a91600091611505565b6115bf9092919283600093611555611544610096876104cb565b6001600160a01b03841614156112f1565b61157561156461009630610b8d565b6001600160a01b0384161415611359565b6115f0856115eb8186019361159c6115978461159184896104a4565b016113c4565b6113ce565b946115ae84610ca68960018c01610b96565b87858a60019c8d9461061c866105a1565b809a6115c88290565b81036116a0575b50506115e692506112e69361042a91019e8f610b96565b611420565b61146d565b6115fc610c59866105a1565b14611609575b5050505050565b61166194611656611651600261165b950161162e611625825490565b61061c896105a1565b6116428861163c8888610b96565b01611490565b8882820361166b575b50505090565b6114be565b610b96565b0161151e565b3880808080611602565b61119561168461167e61169895876110b5565b906114a7565b6116928161114b86896110b5565b88610b96565b38808861164b565b610cab8561127083876116cb6116d76116d16116df99846116e69f6116cb906112d59e01998a610b96565b016111e0565b906113f2565b9a8b95610b96565b92856104a4565b8887858a89386115cf565b156116f857565b60405162461bcd60e51b815260206004820152603960248201527f43656761456e7472793a205f63616c6c6461746120697320656d70747920627560448201527f74205f696e6974206973206e6f742061646472657373283029000000000000006064820152608490fd5b61176d602461102b565b7f43656761456e7472793a205f696e6974206164647265737320686173206e6f20602082015263636f646560e01b604082015290565b6100a2611763565b3d156117c5576117ba3d61102b565b903d6000602084013e565b606090565b156117d157565b60405162461bcd60e51b815260206004820152603960248201527f43656761456e7472793a205f696e69742069732061646472657373283029206260448201527f7574205f63616c6c64617461206973206e6f7420656d707479000000000000006064820152608490fd5b60009061184b610096836104cb565b6001600160a01b038216036118785750611872610c5961186c61007a945190565b926105a1565b146117ca565b8192908161189a61188885945190565b611894610c59866105a1565b116116f1565b6118a661009630610b8d565b6001600160a01b03831603611944575b602081019051915af4906118d06118cb6117ab565b921590565b6118d8575050565b6118e6610c5961186c845190565b11156118f457602081519101fd5b60405162461bcd60e51b815260206004820152602260248201527f43656761456e7472793a205f696e69742066756e6374696f6e20726576657274604482015261195960f21b6064820152608490fd5b61195561194f6117a3565b83611995565b6118b6565b60208082526100a29291019061088d565b156119735750565b61052b9061198060405190565b62461bcd60e51b81529182916004830161195a565b9061007a913b6119a8610c5960006105a1565b1161196b56fea26469706673582212209c1a9b1685b56b025e5104d8b9c5dbd19c5c509a394422d7c0759c90d204b35d64736f6c634300081100330000000000000000000000001ddf7c4c98a78b492bb4a2881358f183d94c9806

Deployed Bytecode

0x6080604052600436101561001e575b361561001c5761001c61052f565b005b60003560e01c631f931c1c0361000e57610036610192565b61000e565b600080fd5b909182601f83011215610089575b602082359267ffffffffffffffff841161007c575b01926020830284011161007257565b61007a600080fd5b565b610084600080fd5b610063565b610091600080fd5b61004e565b6001600160a01b031690565b90565b6001600160a01b0381165b0361003b57565b9050359061007a826100a5565b909182601f83011215610100575b602082359267ffffffffffffffff84116100f3575b01928284011161007257565b6100fb600080fd5b6100e7565b610108600080fd5b6100d2565b6101679192606082850312610185575b61013a84833567ffffffffffffffff8111610178575b8401610040565b93909461014a81602086016100b7565b9360408101359067ffffffffffffffff821161016b575b016100c4565b9091565b610173600080fd5b610161565b610180600080fd5b610133565b61018d600080fd5b61011d565b50346101b5575b6101b06101a736600461010d565b9392909261047f565b604051005b6101bd600080fd5b610199565b601f01601f191690565b50634e487b7160e01b600052604160045260246000fd5b90601f01601f1916810190811067ffffffffffffffff82111761020557604052565b61020d6101cc565b604052565b9061007a61021f60405190565b92836101e3565b6020809167ffffffffffffffff811161023e57020190565b6102466101cc565b020190565b6003111561003b57565b9050359061007a8261024b565b6001600160e01b031981166100b0565b9050359061007a82610262565b9092919261029461028f82610226565b610212565b93818552602080860192028301928184116102d2575b915b8383106102b95750505050565b602080916102c78486610272565b8152019201916102ac565b6102da600080fd5b6102aa565b906100a29181601f820112156102fb575b60208135910161027f565b610303600080fd5b6102f0565b919061036290606084820312610376575b6103236060610212565b93600061033083836100b7565b90860152602061034283828401610255565b9086015260408101359067ffffffffffffffff8211610369575b016102df565b6040830152565b610371600080fd5b61035c565b61037e600080fd5b610319565b9092919261039361028f82610226565b93818552602080860192028301928184116103f3575b80925b8484106103ba575050505050565b602080916103db85873567ffffffffffffffff81116103e6575b8601610308565b8152019301926103ac565b6103ee600080fd5b6103d4565b6103fb600080fd5b6103a9565b6100a2913691610383565b61042a60209167ffffffffffffffff811161042e57601f01601f191690565b0190565b6101c26101cc565b90826000939282370152565b92919061007a9161045561028f8361040b565b94828652602086019183820111156104365761046f600080fd5b610436565b6100a2913691610442565b9361049861049e9261007a96610493610685565b610400565b93610474565b916108f1565b906001600160e01b0319165b600052602052604060002090565b6100966100a26100a29290565b6100a2906104be565b156104db57565b60405162461bcd60e51b815260206004820152602260248201527f43656761456e7472793a2046756e6374696f6e20646f6573206e6f74206578696044820152611cdd60f21b6064820152608490fd5b0390fd5b50610562600061055481610541610627565b83356001600160e01b03191691016104a4565b01546001600160a01b031690565b6000808092610587610576610096846104cb565b6001600160a01b03831614156104d4565b368280378136915af43d82803e1561059d573d90f35b3d90fd5b6100a26100a26100a29290565b6100a2906105a1565b50634e487b7160e01b600052601160045260246000fd5b919082039182116105db57565b61007a6105b7565b6100a26106226106127f11cac52ac9aac3f05b98c564845f9cbef3a9feb42b2c77780d0605eb87044b246105ae565b61061c60016105a1565b906105ce565b6105a1565b6100a26105e3565b1561063657565b60405162461bcd60e51b815260206004820152602160248201527f43656761456e7472793a204d75737420626520636f6e7472616374206f776e656044820152603960f91b6064820152608490fd5b61007a336106a961069c6100966004610554610627565b916001600160a01b031690565b1461062f565b60019060001981146106bf570190565b61042a6105b7565b50634e487b7160e01b600052603260045260246000fd5b90602080916106eb845190565b8110156106f9575b02010190565b6107016106c7565b6106f3565b50634e487b7160e01b600052602160045260246000fd5b6003111561072757565b61007a610706565b9061007a8261071d565b6100a2905161072f565b9052565b6100a29061072f565b61074390610747565b90610779610772610768845190565b8084529260200190565b9260200190565b9060005b81811061078a5750505090565b9091926107b16107aa60019286516001600160e01b031916815260200190565b9460200190565b92910161077d565b80516001600160a01b031682526100a29160608101916040906107e460208201516020850190610750565b0151906040818403910152610759565b906100a2916107b9565b9061081461080a835190565b8083529160200190565b90816108266020830284019460200190565b926000915b83831061083a57505050505090565b9091929394602061085d610856838560019503875289516107f4565b9760200190565b930193019193929061082b565b60005b83811061087d5750506000910152565b818101518382015260200161086d565b6108ae6101c260209361042a936108a2815190565b80835293849260200190565b9586910161086a565b60608082526100a294926108e4916108d291908401906107fe565b6001600160a01b039094166020830152565b604081840391015261088d565b92909160005b6109026100a2865190565b811015610a5c5761091f602061091883886106de565b5101610739565b9060009161092c8361072f565b6109358261072f565b0361097d575061097361095e6109789361094f848a6106de565b5101516001600160a01b031690565b604061096a848a6106de565b51015190610c3d565b6106af565b6108f7565b610987600161072f565b6109908261072f565b036109bf57506109736109aa6109789361094f848a6106de565b60406109b6848a6106de565b51015190610e40565b6109d26109cc600261072f565b9161072f565b03610a00576109736109eb6109789361094f848a6106de565b60406109f7848a6106de565b51015190610fa8565b60405162461bcd60e51b815260206004820152602e60248201527f43656761456e7472793a20496e636f72726563742050726f7879496d706c656d60448201526d32b73a30ba34b7b720b1ba34b7b760911b6064820152608490fd5b5090929161007a92817f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67391610a9d85610a9460405190565b938493846108b7565b0390a161183c565b15610aac57565b60405162461bcd60e51b815260206004820152603060248201527f43656761456e7472793a204e6f2073656c6563746f727320696e20696d706c6560448201526f1b595b9d185d1a5bdb881d1bc818dd5d60821b6064820152608490fd5b15610b1157565b60405162461bcd60e51b815260206004820152603160248201527f43656761456e7472793a2041646420696d706c656d656e746174696f6e2063616044820152706e2774206265206164647265737328302960781b6064820152608490fd5b6100a290610096906001600160a01b031682565b6100a290610b70565b6100a290610b84565b906104b090610b8d565b610bad6100a26100a29290565b6001600160601b031690565b15610bc057565b60405162461bcd60e51b815260206004820152603160248201527f43656761456e7472793a2043616e2774206164642066756e6374696f6e207468604482015270617420616c72656164792065786973747360781b6064820152608490fd5b6001906001600160601b03166001600160601b0381146106bf570190565b9190610c47815190565b610c63600091610c5d610c59846105a1565b9190565b11610aa5565b610c6b610627565b610c74826104cb565b610c926001600160a01b0382166001600160a01b0388161415610b0a565b610cb0610cab84610ca68960018701610b96565b015490565b610ba0565b9384610ccb610cbe86610ba0565b916001600160601b031690565b14610d5e575b6000945b610ce06100a2835190565b861015610d5457610d4881610d438a610d4e9489610d3d610d25826105548f610d1c8f91610d0e908f6106de565b516001600160e01b03191690565b958691016104a4565b610d376001600160a01b038c1661069c565b14610bb9565b896112a9565b610c1f565b956106af565b94610cd5565b5050505050509050565b610d68878461115e565b610cd1565b15610d7457565b60405162461bcd60e51b815260206004820152603560248201527f43656761456e7472793a205265706c61636520696d706c656d656e746174696f6044820152746e2063616e2774206265206164647265737328302960581b6064820152608490fd5b15610dde57565b60405162461bcd60e51b815260206004820152603460248201527f43656761456e7472793a2043616e2774207265706c6163652066756e6374696f60448201527337103bb4ba341039b0b6b290333ab731ba34b7b760611b6064820152608490fd5b8151919291610e57600091610c5d610c59846105a1565b610e5f610627565b90610e80610e6f610096836104cb565b6001600160a01b0385161415610d6d565b610e94610cab82610ca68660018701610b96565b9485610ea2610cbe84610ba0565b14610f27575b6000955b610eb76100a2835190565b871015610f1e57610f1281610d4387610f189487610d3d8a610eee8f610554610ee4610d0e87938f6106de565b80968195016104a4565b610f0c6001600160a01b0387166001600160a01b0383161415610dd7565b8c61152a565b966106af565b95610eac565b50505050509050565b610f31848461115e565b610ea8565b15610f3d57565b60405162461bcd60e51b815260206004820152603b60248201527f43656761456e7472793a2052656d6f766520696d706c656d656e746174696f6e60448201527f2061646472657373206d757374206265206164647265737328302900000000006064820152608490fd5b81516000939290610fbf90610c5d610c59876105a1565b610fe0610fca610627565b92610fda61069c610096886104cb565b14610f36565b60005b610fee6100a2835190565b8110156110245780610973611009610d0e61101f94866106de565b6110198861055483828a016104a4565b8661152a565b610fe3565b5050509050565b9061103861028f8361040b565b918252565b611047602961102b565b7f43656761456e7472793a204e657720696d706c656d656e746174696f6e20686160208201526873206e6f20636f646560b81b604082015290565b6100a261103d565b90600019905b9181191691161790565b906110aa6100a26110b1926105a1565b825461108a565b9055565b6110d56001916110c3815490565b8410156110de57600052602060002090565b91020190600090565b6110e66106c7565b600052602060002090565b916001600160a01b0360089290920291821b911b611090565b921b90565b91906111206100a26110b193610b8d565b9083546110f1565b9061114b61007a92805490600160401b821015611151575b6001820181556110b5565b9061110f565b6111596101cc565b611140565b9061119b61007a92611177611171611082565b84611995565b6100a260028201916001611195868261118e875490565b9401610b96565b0161109a565b611128565b906001600160a01b03199060a01b611090565b610bad6100a26100a2926001600160601b031690565b906111d96100a26110b1926111b3565b82546111a0565b60086112056004929493946111f3815490565b8610156110de57600052602060002090565b8185040193060290565b9190600861109091029161110a63ffffffff841b90565b919061124561123f6110b1936001600160e01b03191690565b60e01c90565b90835461120f565b9061127061007a92805490600160401b821015611276575b6001820181556111e0565b90611226565b61127e6101cc565b611265565b906001600160a01b0390611090565b906112a26100a26110b192610b8d565b8254611283565b8184936112e66000946112e18661042a61007a9a60016112eb996112db85820199866112d58a8d6104a4565b016111c9565b01610b96565b61124d565b6104a4565b01611292565b156112f857565b60405162461bcd60e51b815260206004820152603360248201527f43656761456e7472793a2043616e27742072656d6f76652066756e6374696f6e604482015272081d1a185d08191bd95cdb89dd08195e1a5cdd606a1b6064820152608490fd5b1561136057565b60405162461bcd60e51b815260206004820152602a60248201527f43656761456e7472793a2043616e27742072656d6f766520696d6d757461626c6044820152693290333ab731ba34b7b760b11b6064820152608490fd5b6100a29060a01c610bad565b6100a290546113b8565b6100a26100a26100a2926001600160601b031690565b6100a2916008021c60e01b90565b906100a291546113e4565b50634e487b7160e01b600052603160045260246000fd5b61007a91600091611226565b600161142a825490565b8015611449575b039061144661144083836111e0565b90611414565b55565b6114516113fd565b611431565b50634e487b7160e01b600052600060045260246000fd5b61007a9161147b5760009055565b611483611456565b60009055565b6100a29081565b6100a29054611489565b6100a2916008021c610096565b906100a2915461149a565b61007a9160009161110f565b60016114c8825490565b80156114e4575b03906114466114de83836110b5565b906114b2565b6114ec6113fd565b6114cf565b9160001960089290920291821b911b611090565b91906115166100a26110b1936105a1565b9083546114f1565b61007a91600091611505565b6115bf9092919283600093611555611544610096876104cb565b6001600160a01b03841614156112f1565b61157561156461009630610b8d565b6001600160a01b0384161415611359565b6115f0856115eb8186019361159c6115978461159184896104a4565b016113c4565b6113ce565b946115ae84610ca68960018c01610b96565b87858a60019c8d9461061c866105a1565b809a6115c88290565b81036116a0575b50506115e692506112e69361042a91019e8f610b96565b611420565b61146d565b6115fc610c59866105a1565b14611609575b5050505050565b61166194611656611651600261165b950161162e611625825490565b61061c896105a1565b6116428861163c8888610b96565b01611490565b8882820361166b575b50505090565b6114be565b610b96565b0161151e565b3880808080611602565b61119561168461167e61169895876110b5565b906114a7565b6116928161114b86896110b5565b88610b96565b38808861164b565b610cab8561127083876116cb6116d76116d16116df99846116e69f6116cb906112d59e01998a610b96565b016111e0565b906113f2565b9a8b95610b96565b92856104a4565b8887858a89386115cf565b156116f857565b60405162461bcd60e51b815260206004820152603960248201527f43656761456e7472793a205f63616c6c6461746120697320656d70747920627560448201527f74205f696e6974206973206e6f742061646472657373283029000000000000006064820152608490fd5b61176d602461102b565b7f43656761456e7472793a205f696e6974206164647265737320686173206e6f20602082015263636f646560e01b604082015290565b6100a2611763565b3d156117c5576117ba3d61102b565b903d6000602084013e565b606090565b156117d157565b60405162461bcd60e51b815260206004820152603960248201527f43656761456e7472793a205f696e69742069732061646472657373283029206260448201527f7574205f63616c6c64617461206973206e6f7420656d707479000000000000006064820152608490fd5b60009061184b610096836104cb565b6001600160a01b038216036118785750611872610c5961186c61007a945190565b926105a1565b146117ca565b8192908161189a61188885945190565b611894610c59866105a1565b116116f1565b6118a661009630610b8d565b6001600160a01b03831603611944575b602081019051915af4906118d06118cb6117ab565b921590565b6118d8575050565b6118e6610c5961186c845190565b11156118f457602081519101fd5b60405162461bcd60e51b815260206004820152602260248201527f43656761456e7472793a205f696e69742066756e6374696f6e20726576657274604482015261195960f21b6064820152608490fd5b61195561194f6117a3565b83611995565b6118b6565b60208082526100a29291019061088d565b156119735750565b61052b9061198060405190565b62461bcd60e51b81529182916004830161195a565b9061007a913b6119a8610c5960006105a1565b1161196b56fea26469706673582212209c1a9b1685b56b025e5104d8b9c5dbd19c5c509a394422d7c0759c90d204b35d64736f6c63430008110033

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

0000000000000000000000001ddf7c4c98a78b492bb4a2881358f183d94c9806

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x1DdF7C4C98a78b492bb4a2881358f183d94c9806

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001ddf7c4c98a78b492bb4a2881358f183d94c9806


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.