ETH Price: $3,313.70 (-1.37%)

Contract

0x69460570c93f9DE5E2edbC3052bf10125f0Ca22d
 
Transaction Hash
Method
Block
From
To
0xa712369fec0f387f7207271421c2336447619879893ad1249a5f12e76d67d3ff Optimism Bridge(pending)2024-11-22 22:53:5616 mins ago1732316036IN
Rango V2: Rango Diamond
0.0001 ETH(Pending)(Pending)
0x3489f069bdf0a8381e5edf64b6418ef922d08f3ea613aa2a1abb08689b651dd2 On Chain Swaps(pending)2024-11-22 22:33:3836 mins ago1732314818IN
Rango V2: Rango Diamond
0.00078 ETH(Pending)(Pending)
0x14145dabc2986d468c030b8f5010a29aae794533c843be359a2bb37288957cac On Chain Swaps(pending)2024-11-22 22:00:371 hr ago1732312837IN
Rango V2: Rango Diamond
0 ETH(Pending)(Pending)
0x8813c327656bfc2fbb1e219538ab5f53744695834a14de66688d0fc784811905 Optimism Bridge(pending)2024-11-22 2:31:2320 hrs ago1732242683IN
Rango V2: Rango Diamond
0.003 ETH(Pending)(Pending)
Stargate V2Bridg...212464422024-11-22 23:05:594 mins ago1732316759IN
Rango V2: Rango Diamond
0.15003065 ETH0.0060004615.49799171
On Chain Swaps212464192024-11-22 23:01:239 mins ago1732316483IN
Rango V2: Rango Diamond
0 ETH0.0053188719.55332841
De Bridge Bridge212464122024-11-22 22:59:5910 mins ago1732316399IN
Rango V2: Rango Diamond
0.301 ETH0.0029689515.28924607
On Chain Swaps212462902024-11-22 22:35:3534 mins ago1732314935IN
Rango V2: Rango Diamond
0.011 ETH0.0040798719.38056053
On Chain Swaps212461932024-11-22 22:15:5954 mins ago1732313759IN
Rango V2: Rango Diamond
0 ETH0.0083698425.44318909
On Chain Swaps212461842024-11-22 22:14:1156 mins ago1732313651IN
Rango V2: Rango Diamond
0 ETH0.0090965525.44318909
Stargate V2Bridg...212461832024-11-22 22:13:5956 mins ago1732313639IN
Rango V2: Rango Diamond
0.00031427 ETH0.0073489720.27746621
On Chain Swaps212461642024-11-22 22:10:111 hr ago1732313411IN
Rango V2: Rango Diamond
0 ETH0.0073251222.925891
On Chain Swaps212461592024-11-22 22:09:111 hr ago1732313351IN
Rango V2: Rango Diamond
0 ETH0.0063589421.51773941
Across Bridge212461222024-11-22 22:01:471 hr ago1732312907IN
Rango V2: Rango Diamond
0.143 ETH0.0023422520.37471091
Across Bridge212460882024-11-22 21:54:471 hr ago1732312487IN
Rango V2: Rango Diamond
0.049 ETH0.0023698320.61464769
Across Bridge212460792024-11-22 21:52:591 hr ago1732312379IN
Rango V2: Rango Diamond
1.52 ETH0.0024482821.29922715
Stargate V2Bridg...212460372024-11-22 21:44:351 hr ago1732311875IN
Rango V2: Rango Diamond
0.09202889 ETH0.008048522.02492384
On Chain Swaps212460062024-11-22 21:38:231 hr ago1732311503IN
Rango V2: Rango Diamond
0.02533136 ETH0.0048499421.62914074
On Chain Swaps212459972024-11-22 21:36:351 hr ago1732311395IN
Rango V2: Rango Diamond
0 ETH0.0057270718.94868981
On Chain Swaps212459902024-11-22 21:35:111 hr ago1732311311IN
Rango V2: Rango Diamond
0 ETH0.0038957917.68980421
Across Bridge212459792024-11-22 21:32:591 hr ago1732311179IN
Rango V2: Rango Diamond
0.1 ETH0.0021291418.52086727
Across Bridge212458282024-11-22 21:02:472 hrs ago1732309367IN
Rango V2: Rango Diamond
0.05 ETH0.0020344317.69891752
On Chain Swaps212458222024-11-22 21:01:352 hrs ago1732309295IN
Rango V2: Rango Diamond
0 ETH0.0070641222.19621099
Across Bridge212458112024-11-22 20:59:232 hrs ago1732309163IN
Rango V2: Rango Diamond
0.65 ETH0.0018166615.80273868
Across Bridge212458112024-11-22 20:59:232 hrs ago1732309163IN
Rango V2: Rango Diamond
0.185 ETH0.0018166615.80273868
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
212464422024-11-22 23:05:594 mins ago1732316759
Rango V2: Rango Diamond
0.14898065 ETH
212464422024-11-22 23:05:594 mins ago1732316759
Rango V2: Rango Diamond
0.00105 ETH
212464122024-11-22 22:59:5910 mins ago1732316399
Rango V2: Rango Diamond
0.2989 ETH
212464122024-11-22 22:59:5910 mins ago1732316399
Rango V2: Rango Diamond
0.0021 ETH
212462902024-11-22 22:35:3534 mins ago1732314935
Rango V2: Rango Diamond
0.010758 ETH
212462902024-11-22 22:35:3534 mins ago1732314935
Rango V2: Rango Diamond
0.00022 ETH
212462902024-11-22 22:35:3534 mins ago1732314935
Rango V2: Rango Diamond
0.000022 ETH
212461832024-11-22 22:13:5956 mins ago1732313639
Rango V2: Rango Diamond
0.00000097 ETH
212461832024-11-22 22:13:5956 mins ago1732313639
Rango V2: Rango Diamond
0.00031224 ETH
212461832024-11-22 22:13:5956 mins ago1732313639
Rango V2: Rango Diamond
0.00000203 ETH
212461222024-11-22 22:01:471 hr ago1732312907
Rango V2: Rango Diamond
0.141999 ETH
212461222024-11-22 22:01:471 hr ago1732312907
Rango V2: Rango Diamond
0.001001 ETH
212460882024-11-22 21:54:471 hr ago1732312487
Rango V2: Rango Diamond
0.048657 ETH
212460882024-11-22 21:54:471 hr ago1732312487
Rango V2: Rango Diamond
0.000343 ETH
212460792024-11-22 21:52:591 hr ago1732312379
Rango V2: Rango Diamond
1.50936 ETH
212460792024-11-22 21:52:591 hr ago1732312379
Rango V2: Rango Diamond
0.01064 ETH
212460372024-11-22 21:44:351 hr ago1732311875
Rango V2: Rango Diamond
0.09138489 ETH
212460372024-11-22 21:44:351 hr ago1732311875
Rango V2: Rango Diamond
0.000644 ETH
212460062024-11-22 21:38:231 hr ago1732311503
Rango V2: Rango Diamond
0.02477407 ETH
212460062024-11-22 21:38:231 hr ago1732311503
Rango V2: Rango Diamond
0.00050662 ETH
212460062024-11-22 21:38:231 hr ago1732311503
Rango V2: Rango Diamond
0.00005066 ETH
212459972024-11-22 21:36:351 hr ago1732311395
Rango V2: Rango Diamond
21.94373951 ETH
212459972024-11-22 21:36:351 hr ago1732311395
Rango V2: Rango Diamond
21.94373951 ETH
212459902024-11-22 21:35:111 hr ago1732311311
Rango V2: Rango Diamond
0.00325071 ETH
212459902024-11-22 21:35:111 hr ago1732311311
Rango V2: Rango Diamond
0.00325071 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RangoDiamond

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 10000 runs

Other Settings:
default evmVersion
File 1 of 3 : RangoDiamond.sol
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity 0.8.16;

import { LibDiamond } from "../libraries/LibDiamond.sol";
import { IDiamondCut } from "../interfaces/IDiamondCut.sol";

contract RangoDiamond {
    constructor(address _contractOwner, address _diamondCutFacet) payable {
        LibDiamond.setContractOwner(_contractOwner);

        // Add the diamondCut external function from the diamondCutFacet
        IDiamondCut.FacetCut[] memory cut = new IDiamondCut.FacetCut[](1);
        bytes4[] memory functionSelectors = new bytes4[](1);
        functionSelectors[0] = IDiamondCut.diamondCut.selector;
        cut[0] = IDiamondCut.FacetCut({
            facetAddress: _diamondCutFacet,
            action: IDiamondCut.FacetCutAction.Add,
            functionSelectors: functionSelectors
        });
        LibDiamond.diamondCut(cut, address(0), "");
    }

    // Find facet for function that is called and execute the
    // function if a facet is found and return any value.
    // solhint-disable-next-line no-complex-fallback
    fallback() external payable {
        LibDiamond.DiamondStorage storage ds;
        bytes32 position = LibDiamond.DIAMOND_STORAGE_POSITION;

        // get diamond storage
        // solhint-disable-next-line no-inline-assembly
        assembly {
            ds.slot := position
        }

        // get facet from function selector
        address facet = ds.selectorToFacetAndPosition[msg.sig].facetAddress;

        if (facet == address(0)) {
            revert LibDiamond.FunctionDoesNotExist();
        }

        // Execute external function from facet using delegatecall and return any value.
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // copy function selector and any arguments
            calldatacopy(0, 0, calldatasize())
            // execute function call using the facet
            let result := delegatecall(gas(), facet, 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())
            }
        }
    }

    // Able to receive ether
    // solhint-disable-next-line no-empty-blocks
    receive() external payable {}
}

File 2 of 3 : IDiamondCut.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

interface IDiamondCut {
    enum FacetCutAction {
        Add,
        Replace,
        Remove
    }
    // Add=0, Replace=1, Remove=2

    struct FacetCut {
        address facetAddress;
        FacetCutAction action;
        bytes4[] functionSelectors;
    }

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

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

File 3 of 3 : LibDiamond.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;

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

/// Implementation of EIP-2535 Diamond Standard
/// https://eips.ethereum.org/EIPS/eip-2535
library LibDiamond {
    /// @dev keccak256("diamond.standard.diamond.storage");
    bytes32 internal constant DIAMOND_STORAGE_POSITION = hex"c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c";

    // Diamond specific errors
    error IncorrectFacetCutAction();
    error NoSelectorsInFacet();
    error FunctionAlreadyExists();
    error FacetAddressIsZero();
    error FacetAddressIsNotZero();
    error FacetContainsNoCode();
    error FunctionDoesNotExist();
    error FunctionIsImmutable();
    error InitZeroButCalldataNotEmpty();
    error CalldataEmptyButInitNotZero();
    error InitReverted();
    // ----------------

    struct FacetAddressAndPosition {
        address facetAddress;
        uint96 functionSelectorPosition; // position in facetFunctionSelectors.functionSelectors array
    }

    struct FacetFunctionSelectors {
        bytes4[] functionSelectors;
        uint256 facetAddressPosition; // position of facetAddress in facetAddresses array
    }

    struct DiamondStorage {
        // maps function selector to the facet address and
        // the position of the selector in the facetFunctionSelectors.selectors array
        mapping(bytes4 => FacetAddressAndPosition) selectorToFacetAndPosition;
        // maps facet addresses to function selectors
        mapping(address => FacetFunctionSelectors) facetFunctionSelectors;
        // facet addresses
        address[] facetAddresses;
        // 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 diamondStorage() internal pure returns (DiamondStorage storage ds) {
        bytes32 position = DIAMOND_STORAGE_POSITION;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            ds.slot := position
        }
    }

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

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

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

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

    event DiamondCut(IDiamondCut.FacetCut[] _diamondCut, address _init, bytes _calldata);

    // Internal function version of diamondCut
    function diamondCut(
        IDiamondCut.FacetCut[] memory _diamondCut,
        address _init,
        bytes memory _calldata
    ) internal {
        for (uint256 facetIndex; facetIndex < _diamondCut.length; ) {
            IDiamondCut.FacetCutAction action = _diamondCut[facetIndex].action;
            if (action == IDiamondCut.FacetCutAction.Add) {
                addFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Replace) {
                replaceFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else if (action == IDiamondCut.FacetCutAction.Remove) {
                removeFunctions(_diamondCut[facetIndex].facetAddress, _diamondCut[facetIndex].functionSelectors);
            } else {
                revert IncorrectFacetCutAction();
            }
            unchecked {
                ++facetIndex;
            }
        }
        emit DiamondCut(_diamondCut, _init, _calldata);
        initializeDiamondCut(_init, _calldata);
    }

    function addFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_facetAddress == address(0)) {
            revert FacetAddressIsZero();
        }
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet();
        }
        DiamondStorage storage ds = diamondStorage();
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (oldFacetAddress != address(0)) {
                revert FunctionAlreadyExists();
            }
            addFunction(ds, selector, selectorPosition, _facetAddress);
            unchecked {
                ++selectorPosition;
                ++selectorIndex;
            }
        }
    }

    function replaceFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet();
        }
        if (_facetAddress == address(0)) {
            revert FacetAddressIsZero();
        }
        DiamondStorage storage ds = diamondStorage();
        uint96 selectorPosition = uint96(ds.facetFunctionSelectors[_facetAddress].functionSelectors.length);
        // add new facet address if it does not exist
        if (selectorPosition == 0) {
            addFacet(ds, _facetAddress);
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            if (oldFacetAddress == _facetAddress) {
                revert FunctionAlreadyExists();
            }
            removeFunction(ds, oldFacetAddress, selector);
            addFunction(ds, selector, selectorPosition, _facetAddress);
            unchecked {
                ++selectorPosition;
                ++selectorIndex;
            }
        }
    }

    function removeFunctions(address _facetAddress, bytes4[] memory _functionSelectors) internal {
        if (_functionSelectors.length == 0) {
            revert NoSelectorsInFacet();
        }
        DiamondStorage storage ds = diamondStorage();
        // if function does not exist then do nothing and return
        if (_facetAddress != address(0)) {
            revert FacetAddressIsNotZero();
        }
        for (uint256 selectorIndex; selectorIndex < _functionSelectors.length; ) {
            bytes4 selector = _functionSelectors[selectorIndex];
            address oldFacetAddress = ds.selectorToFacetAndPosition[selector].facetAddress;
            removeFunction(ds, oldFacetAddress, selector);
            unchecked {
                ++selectorIndex;
            }
        }
    }

    function addFacet(DiamondStorage storage ds, address _facetAddress) internal {
        enforceHasContractCode(_facetAddress);
        ds.facetFunctionSelectors[_facetAddress].facetAddressPosition = ds.facetAddresses.length;
        ds.facetAddresses.push(_facetAddress);
    }

    function addFunction(
        DiamondStorage storage ds,
        bytes4 _selector,
        uint96 _selectorPosition,
        address _facetAddress
    ) internal {
        ds.selectorToFacetAndPosition[_selector].functionSelectorPosition = _selectorPosition;
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.push(_selector);
        ds.selectorToFacetAndPosition[_selector].facetAddress = _facetAddress;
    }

    function removeFunction(
        DiamondStorage storage ds,
        address _facetAddress,
        bytes4 _selector
    ) internal {
        if (_facetAddress == address(0)) {
            revert FunctionDoesNotExist();
        }
        // an immutable function is a function defined directly in a diamond
        if (_facetAddress == address(this)) {
            revert FunctionIsImmutable();
        }
        // replace selector with last selector, then delete last selector
        uint256 selectorPosition = ds.selectorToFacetAndPosition[_selector].functionSelectorPosition;
        uint256 lastSelectorPosition = ds.facetFunctionSelectors[_facetAddress].functionSelectors.length - 1;
        // if not the same then replace _selector with lastSelector
        if (selectorPosition != lastSelectorPosition) {
            bytes4 lastSelector = ds.facetFunctionSelectors[_facetAddress].functionSelectors[lastSelectorPosition];
            ds.facetFunctionSelectors[_facetAddress].functionSelectors[selectorPosition] = lastSelector;
            ds.selectorToFacetAndPosition[lastSelector].functionSelectorPosition = uint96(selectorPosition);
        }
        // delete the last selector
        ds.facetFunctionSelectors[_facetAddress].functionSelectors.pop();
        delete ds.selectorToFacetAndPosition[_selector];

        // if no more selectors for facet address then delete the facet address
        if (lastSelectorPosition == 0) {
            // replace facet address with last facet address and delete last facet address
            uint256 lastFacetAddressPosition = ds.facetAddresses.length - 1;
            uint256 facetAddressPosition = ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
            if (facetAddressPosition != lastFacetAddressPosition) {
                address lastFacetAddress = ds.facetAddresses[lastFacetAddressPosition];
                ds.facetAddresses[facetAddressPosition] = lastFacetAddress;
                ds.facetFunctionSelectors[lastFacetAddress].facetAddressPosition = facetAddressPosition;
            }
            ds.facetAddresses.pop();
            delete ds.facetFunctionSelectors[_facetAddress].facetAddressPosition;
        }
    }

    function initializeDiamondCut(address _init, bytes memory _calldata) internal {
        if (_init == address(0)) {
            if (_calldata.length != 0) {
                revert InitZeroButCalldataNotEmpty();
            }
        } else {
            if (_calldata.length == 0) {
                revert CalldataEmptyButInitNotZero();
            }
            if (_init != address(this)) {
                enforceHasContractCode(_init);
            }
            // solhint-disable-next-line avoid-low-level-calls
            (bool success, bytes memory error) = _init.delegatecall(_calldata);
            if (!success) {
                if (error.length > 0) {
                    // bubble up the error
                    revert(string(error));
                } else {
                    revert InitReverted();
                }
            }
        }
    }

    function enforceHasContractCode(address _contract) internal view {
        uint256 contractSize;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            contractSize := extcodesize(_contract)
        }
        if (contractSize == 0) {
            revert FacetContainsNoCode();
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_contractOwner","type":"address"},{"internalType":"address","name":"_diamondCutFacet","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"CalldataEmptyButInitNotZero","type":"error"},{"inputs":[],"name":"FacetAddressIsNotZero","type":"error"},{"inputs":[],"name":"FacetAddressIsZero","type":"error"},{"inputs":[],"name":"FacetContainsNoCode","type":"error"},{"inputs":[],"name":"FunctionAlreadyExists","type":"error"},{"inputs":[],"name":"FunctionDoesNotExist","type":"error"},{"inputs":[],"name":"FunctionIsImmutable","type":"error"},{"inputs":[],"name":"IncorrectFacetCutAction","type":"error"},{"inputs":[],"name":"InitReverted","type":"error"},{"inputs":[],"name":"InitZeroButCalldataNotEmpty","type":"error"},{"inputs":[],"name":"NoSelectorsInFacet","type":"error"},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200242138038062002421833981016040819052620000269162000d42565b6200003c826200015660201b620000d21760201c565b604080516001808252818301909252600091816020015b60408051606080820183526000808352602083015291810191909152815260200190600190039081620000535750506040805160018082528183019092529192506000919060208083019080368337019050509050631f931c1c60e01b81600081518110620000c657620000c662000d7a565b6001600160e01b031990921660209283029190910182015260408051606081019091526001600160a01b038516815290810160008152602001828152508260008151811062000119576200011962000d7a565b60200260200101819052506200014c82600060405180602001604052806000815250620001da60201b6200018c1760201c565b5050505062000f79565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080546001600160a01b031981166001600160a01b03848116918217909355604051600080516020620023e1833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b835181101562000396576000848281518110620001fe57620001fe62000d7a565b60200260200101516020015190506000600281111562000222576200022262000d90565b81600281111562000237576200023762000d90565b0362000295576200028f85838151811062000256576200025662000d7a565b60200260200101516000015186848151811062000277576200027762000d7a565b602002602001015160400151620003e560201b60201c565b6200038c565b6001816002811115620002ac57620002ac62000d90565b0362000304576200028f858381518110620002cb57620002cb62000d7a565b602002602001015160000151868481518110620002ec57620002ec62000d7a565b602002602001015160400151620005a960201b60201c565b60028160028111156200031b576200031b62000d90565b0362000373576200028f8583815181106200033a576200033a62000d7a565b6020026020010151600001518684815181106200035b576200035b62000d7a565b6020026020010151604001516200077860201b60201c565b60405163e548e6b560e01b815260040160405180910390fd5b50600101620001dd565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb673838383604051620003cc9392919062000dfa565b60405180910390a1620003e0828262000848565b505050565b6001600160a01b0382166200040d57604051636347641d60e11b815260040160405180910390fd5b8051600003620004305760405163092d2fe560e41b815260040160405180910390fd5b6001600160a01b0382166000908152600080516020620024018339815191526020526040812054600080516020620023e1833981519152916001600160601b038216900362000485576200048582856200096b565b60005b8351811015620005a2576000848281518110620004a957620004a962000d7a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620004fb5760405163a023275d60e01b815260040160405180910390fd5b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b03191617905550506001918201910162000488565b5050505050565b8051600003620005cc5760405163092d2fe560e41b815260040160405180910390fd5b6001600160a01b038216620005f457604051636347641d60e11b815260040160405180910390fd5b6001600160a01b0382166000908152600080516020620024018339815191526020526040812054600080516020620023e1833981519152916001600160601b038216900362000649576200064982856200096b565b60005b8351811015620005a25760008482815181106200066d576200066d62000d7a565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b039081169087168103620006c45760405163a023275d60e01b815260040160405180910390fd5b620006d1858284620009be565b6001600160e01b0319821660008181526020878152604080832080546001600160a01b03908116600160a01b6001600160601b038c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281546001600160a01b0319161790555050600191820191016200064c565b80516000036200079b5760405163092d2fe560e41b815260040160405180910390fd5b600080516020620023e18339815191526001600160a01b03831615620007d457604051633ce4ef9160e11b815260040160405180910390fd5b60005b825181101562000842576000838281518110620007f857620007f862000d7a565b6020908102919091018101516001600160e01b031981166000908152918590526040909120549091506001600160a01b031662000837848284620009be565b5050600101620007d7565b50505050565b6001600160a01b0382166200087c5780511562000878576040516304c08b4360e51b815260040160405180910390fd5b5050565b80516000036200089f5760405163211002b360e11b815260040160405180910390fd5b6001600160a01b0382163014620008bb57620008bb8262000d01565b600080836001600160a01b031683604051620008d8919062000f01565b600060405180830381855af49150503d806000811462000915576040519150601f19603f3d011682016040523d82523d6000602084013e6200091a565b606091505b509150915081620008425780511562000952578060405162461bcd60e51b815260040162000949919062000f1f565b60405180910390fd5b60405163c53ebed560e01b815260040160405180910390fd5b620009768162000d01565b6002820180546001600160a01b0390921660008181526001948501602090815260408220860185905594840183559182529290200180546001600160a01b0319169091179055565b6001600160a01b038216620009e657604051631535ac5f60e31b815260040160405180910390fd5b306001600160a01b0383160362000a105760405163c3c5ec3760e01b815260040160405180910390fd5b6001600160e01b03198116600090815260208481526040808320546001600160a01b0386168452600180880190935290832054600160a01b9091046001600160601b0316929162000a619162000f3b565b905080821462000b5a576001600160a01b0384166000908152600186016020526040812080548390811062000a9a5762000a9a62000d7a565b600091825260208083206008830401546001600160a01b038916845260018a019091526040909220805460079092166004026101000a90920460e01b92508291908590811062000aee5762000aee62000d7a565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790556001600160e01b03199290921682528690526040902080546001600160a01b0316600160a01b6001600160601b038516021790555b6001600160a01b0384166000908152600186016020526040902080548062000b865762000b8662000f63565b60008281526020808220600860001990940193840401805463ffffffff600460078716026101000a0219169055919092556001600160e01b03198516825286905260408120819055819003620005a257600285015460009062000bec9060019062000f3b565b6001600160a01b038616600090815260018089016020526040909120015490915080821462000ca257600087600201838154811062000c2f5762000c2f62000d7a565b6000918252602090912001546002890180546001600160a01b03909216925082918490811062000c635762000c6362000d7a565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055929091168152600189810190925260409020018190555b8660020180548062000cb85762000cb862000f63565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388168252600189810190915260408220015550505050505050565b803b600081900362000878576040516271a80360e91b815260040160405180910390fd5b80516001600160a01b038116811462000d3d57600080fd5b919050565b6000806040838503121562000d5657600080fd5b62000d618362000d25565b915062000d716020840162000d25565b90509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60005b8381101562000dc357818101518382015260200162000da9565b50506000910152565b6000815180845262000de681602086016020860162000da6565b601f01601f19169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b8481101562000ecf57898403607f19018652815180516001600160a01b0316855283810151898601906003811062000e6b57634e487b7160e01b600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101562000eb95783516001600160e01b031916825292860192600192909201919086019062000e8d565b5097850197955050509082019060010162000e23565b50506001600160a01b038a1690880152868103604088015262000ef3818962000dcc565b9a9950505050505050505050565b6000825162000f1581846020870162000da6565b9190910192915050565b60208152600062000f34602083018462000dcc565b9392505050565b8181038181111562000f5d57634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052603160045260246000fd5b6114588062000f896000396000f3fe60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100ae576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e8080156100cd573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103225760008482815181106101ac576101ac611149565b6020026020010151602001519050600060028111156101cd576101cd611178565b8160028111156101df576101df611178565b0361022d576102288583815181106101f9576101f9611149565b60200260200101516000015186848151811061021757610217611149565b60200260200101516040015161036d565b610319565b600181600281111561024157610241611178565b0361028a5761022885838151811061025b5761025b611149565b60200260200101516000015186848151811061027957610279611149565b60200260200101516040015161062a565b600281600281111561029e5761029e611178565b036102e7576102288583815181106102b8576102b8611149565b6020026020010151600001518684815181106102d6576102d6611149565b6020026020010151604001516108f0565b6040517fe548e6b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161018f565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161035693929190611215565b60405180910390a16103688282610a2c565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166103ba576040517fc68ec83a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000036103f5576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361047b5761047b8285610bcd565b60005b835181101561062357600084828151811061049b5761049b611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561052a576040517fa023275d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905550506001918201910161047e565b5050505050565b8051600003610665576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166106b2576040517fc68ec83a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610738576107388285610bcd565b60005b835181101561062357600084828151811061075857610758611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff90811690871681036107ec576040517fa023275d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107f7858284610c43565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905550506001918201910161073b565b805160000361092b576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff83161561099a576040517f79c9df2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610a265760008382815181106109ba576109ba611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610a1c848284610c43565b505060010161099d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610a8457805115610a80576040517f9811686000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8051600003610abf576040517f4220056600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163014610ae557610ae58261110c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b0d919061137d565b600060405180830381855af49150503d8060008114610b48576040519150601f19603f3d011682016040523d82523d6000602084013e610b4d565b606091505b509150915081610a2657805115610b9b57806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b929190611399565b60405180910390fd5b6040517fc53ebed500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd68161110c565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216610c90576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff831603610cdf576040517fc3c5ec3700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169291610d69916113b3565b9050808214610eb05773ffffffffffffffffffffffffffffffffffffffff841660009081526001860160205260408120805483908110610dab57610dab611149565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0957610e09611149565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff841660009081526001860160205260409020805480610ee657610ee66113f3565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff000000000000000000000000000000000000000000000000000000008516825286905260408120819055819003610623576002850154600090610f7f906001906113b3565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461106d576000876002018381548110610fcb57610fcb611149565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061100957611009611149565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b86600201805480611080576110806113f3565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b803b6000819003610a80576040517fe350060000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60005b838110156111c25781810151838201526020016111aa565b50506000910152565b600081518084526111e38160208601602086016111a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff825116865284820151600381106112c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561132b5783517fffffffff000000000000000000000000000000000000000000000000000000001682529286019260019290920191908601906112e9565b5097850197955050509082019060010161123e565b505073ffffffffffffffffffffffffffffffffffffffff8a1690880152868103604088015261136f81896111cb565b9a9950505050505050505050565b6000825161138f8184602087016111a7565b9190910192915050565b6020815260006113ac60208301846111cb565b9392505050565b818103818111156113ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212200331dbf66047b164b6604529cff12ffb7cde5940ac4ae6b71be1ead5cf157c4f64736f6c63430008100033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131cc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d00000000000000000000000022493d053bb53f2a07a41049a591bd35f03300980000000000000000000000001d3c0b1bc50190133659bbf7c2cddc4c39a93bc2

Deployed Bytecode

0x60806040523661000b57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c6020819052604090912054819073ffffffffffffffffffffffffffffffffffffffff16806100ae576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3660008037600080366000845af43d6000803e8080156100cd573d6000f35b3d6000fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c132080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60005b83518110156103225760008482815181106101ac576101ac611149565b6020026020010151602001519050600060028111156101cd576101cd611178565b8160028111156101df576101df611178565b0361022d576102288583815181106101f9576101f9611149565b60200260200101516000015186848151811061021757610217611149565b60200260200101516040015161036d565b610319565b600181600281111561024157610241611178565b0361028a5761022885838151811061025b5761025b611149565b60200260200101516000015186848151811061027957610279611149565b60200260200101516040015161062a565b600281600281111561029e5761029e611178565b036102e7576102288583815181106102b8576102b8611149565b6020026020010151600001518684815181106102d6576102d6611149565b6020026020010151604001516108f0565b6040517fe548e6b500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5060010161018f565b507f8faa70878671ccd212d20771b795c50af8fd3ff6cf27f4bde57e5d4de0aeb67383838360405161035693929190611215565b60405180910390a16103688282610a2c565b505050565b73ffffffffffffffffffffffffffffffffffffffff82166103ba576040517fc68ec83a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80516000036103f5576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff8216900361047b5761047b8285610bcd565b60005b835181101561062357600084828151811061049b5761049b611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561052a576040517fa023275d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905550506001918201910161047e565b5050505050565b8051600003610665576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166106b2576040517fc68ec83a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660009081527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131d60205260408120547fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c916bffffffffffffffffffffffff82169003610738576107388285610bcd565b60005b835181101561062357600084828151811061075857610758611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff90811690871681036107ec576040517fa023275d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107f7858284610c43565b7fffffffff000000000000000000000000000000000000000000000000000000008216600081815260208781526040808320805473ffffffffffffffffffffffffffffffffffffffff908116740100000000000000000000000000000000000000006bffffffffffffffffffffffff8c16021782558c168085526001808c0185529285208054938401815585528385206008840401805463ffffffff60079095166004026101000a948502191660e08a901c94909402939093179092559390925287905281547fffffffffffffffffffffffff00000000000000000000000000000000000000001617905550506001918201910161073b565b805160000361092b576040517f92d2fe5000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff83161561099a576040517f79c9df2200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610a265760008382815181106109ba576109ba611149565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529185905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16610a1c848284610c43565b505060010161099d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610a8457805115610a80576040517f9811686000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b8051600003610abf576040517f4220056600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82163014610ae557610ae58261110c565b6000808373ffffffffffffffffffffffffffffffffffffffff1683604051610b0d919061137d565b600060405180830381855af49150503d8060008114610b48576040519150601f19603f3d011682016040523d82523d6000602084013e610b4d565b606091505b509150915081610a2657805115610b9b57806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b929190611399565b60405180910390fd5b6040517fc53ebed500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bd68161110c565b60028201805473ffffffffffffffffffffffffffffffffffffffff90921660008181526001948501602090815260408220860185905594840183559182529290200180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b73ffffffffffffffffffffffffffffffffffffffff8216610c90576040517fa9ad62f800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff831603610cdf576040517fc3c5ec3700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fffffffff0000000000000000000000000000000000000000000000000000000081166000908152602084815260408083205473ffffffffffffffffffffffffffffffffffffffff86168452600180880190935290832054740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff169291610d69916113b3565b9050808214610eb05773ffffffffffffffffffffffffffffffffffffffff841660009081526001860160205260408120805483908110610dab57610dab611149565b6000918252602080832060088304015473ffffffffffffffffffffffffffffffffffffffff8916845260018a019091526040909220805460079092166004026101000a90920460e01b925082919085908110610e0957610e09611149565b600091825260208083206008830401805463ffffffff60079094166004026101000a938402191660e09590951c929092029390931790557fffffffff0000000000000000000000000000000000000000000000000000000092909216825286905260409020805473ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000006bffffffffffffffffffffffff8516021790555b73ffffffffffffffffffffffffffffffffffffffff841660009081526001860160205260409020805480610ee657610ee66113f3565b6000828152602080822060087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90940193840401805463ffffffff600460078716026101000a0219169055919092557fffffffff000000000000000000000000000000000000000000000000000000008516825286905260408120819055819003610623576002850154600090610f7f906001906113b3565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260018089016020526040909120015490915080821461106d576000876002018381548110610fcb57610fcb611149565b60009182526020909120015460028901805473ffffffffffffffffffffffffffffffffffffffff909216925082918490811061100957611009611149565b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff948516179055929091168152600189810190925260409020018190555b86600201805480611080576110806113f3565b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff88168252600189810190915260408220015550505050505050565b803b6000819003610a80576040517fe350060000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60005b838110156111c25781810151838201526020016111aa565b50506000910152565b600081518084526111e38160208601602086016111a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006060808301818452808751808352608092508286019150828160051b8701016020808b0160005b84811015611340577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8503018652815188850173ffffffffffffffffffffffffffffffffffffffff825116865284820151600381106112c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b868601526040918201519186018a905281519081905290840190600090898701905b8083101561132b5783517fffffffff000000000000000000000000000000000000000000000000000000001682529286019260019290920191908601906112e9565b5097850197955050509082019060010161123e565b505073ffffffffffffffffffffffffffffffffffffffff8a1690880152868103604088015261136f81896111cb565b9a9950505050505050505050565b6000825161138f8184602087016111a7565b9190910192915050565b6020815260006113ac60208301846111cb565b9392505050565b818103818111156113ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea26469706673582212200331dbf66047b164b6604529cff12ffb7cde5940ac4ae6b71be1ead5cf157c4f64736f6c63430008100033

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

00000000000000000000000022493d053bb53f2a07a41049a591bd35f03300980000000000000000000000001d3c0b1bc50190133659bbf7c2cddc4c39a93bc2

-----Decoded View---------------
Arg [0] : _contractOwner (address): 0x22493D053BB53f2a07A41049a591Bd35F0330098
Arg [1] : _diamondCutFacet (address): 0x1d3C0B1BC50190133659BBF7c2cddc4c39a93Bc2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000022493d053bb53f2a07a41049a591bd35f0330098
Arg [1] : 0000000000000000000000001d3c0b1bc50190133659bbf7c2cddc4c39a93bc2


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Chain Token Portfolio % Price Amount Value
ZKSYNC50.71%$3,313.70.00503056$16.67
CELO18.51%$0.7283358.3551$6.09
LINEA6.97%$3,311.680.0006916$2.29
AVAX6.34%$42.550.049$2.08
AVAX0.34%$0.9997660.111$0.1109
SCROLL5.59%$3,311.680.000555$1.84
ETH3.65%$0.005953201.3467$1.2
ETH
Ether (ETH)
1.77%$3,313.70.00017536$0.581101
OPBNB3.01%$630.080.00157$0.989229
BSC1.15%$628.230.0006019$0.378133
OP0.73%$3,312.580.00007249$0.240121
BASE0.66%$3,280.130.00006565$0.215329
ARB0.55%$3,313.510.00005466$0.181132
BLAST0.03%$3,315.420.00000275$0.009126
POL<0.01%$0.4834850.0000000000000456<$0.000001
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.