ETH Price: $3,204.77 (-3.65%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Pause Group237550722025-11-08 14:15:4732 days ago1762611347IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000044770.56162538
Pause Group237550712025-11-08 14:15:3532 days ago1762611335IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000044770.56162538
Pause Group237550702025-11-08 14:15:2332 days ago1762611323IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000043520.54602345
Pause Group237550692025-11-08 14:15:1132 days ago1762611311IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000046790.58694362
Pause Group237550662025-11-08 14:14:3532 days ago1762611275IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047510.59598438
Pause Group237550652025-11-08 14:14:2332 days ago1762611263IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047510.59598438
Pause Group237550642025-11-08 14:14:1132 days ago1762611251IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047770.59928202
Pause Group237550632025-11-08 14:13:5932 days ago1762611239IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047770.59928202
Pause Group237550622025-11-08 14:13:4732 days ago1762611227IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000048080.60319439
Pause Group237550612025-11-08 14:13:3532 days ago1762611215IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000048330.60625703
Pause Group237550592025-11-08 14:13:1132 days ago1762611191IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000049010.61490102
Pause Group237550582025-11-08 14:12:5932 days ago1762611179IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000049010.61490102
Pause Group237550572025-11-08 14:12:4732 days ago1762611167IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000046990.58955773
Pause Group237550552025-11-08 14:12:2332 days ago1762611143IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047110.59097292
Pause Group237550542025-11-08 14:12:1132 days ago1762611131IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047110.59097292
Pause Group237550532025-11-08 14:11:5932 days ago1762611119IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000047790.5995606
Pause Group237550522025-11-08 14:11:4732 days ago1762611107IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000046010.57724907
Pause Group237550512025-11-08 14:11:3532 days ago1762611095IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000040910.51327038
Pause Group237550502025-11-08 14:11:2332 days ago1762611083IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000040910.51327038
Pause Group237550482025-11-08 14:10:5932 days ago1762611059IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000038340.48098693
Pause Group237550462025-11-08 14:10:3532 days ago1762611035IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000038340.48098693
Pause Group237550452025-11-08 14:10:2332 days ago1762611023IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000038850.48737276
Pause Group237550442025-11-08 14:10:1132 days ago1762611011IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000038850.48737276
Pause Group237550432025-11-08 14:09:5932 days ago1762610999IN
0x9f3328E6...EA2C0B6f9
0 ETH0.000038570.48391982
Pause Group237550422025-11-08 14:09:4732 days ago1762610987IN
0x9f3328E6...EA2C0B6f9
0 ETH0.00004040.50677829
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60806040223900582025-05-01 16:01:35223 days ago1746115295  Contract Creation0 ETH
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x831A56FD...848876D14
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
PauserGuard

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.20;

import {Auth, Authority} from "@solmate/src/auth/Auth.sol";

/**
 *                                     .-==+=======+:
 *                                      :---=-::-==:
 *                                      .-:-==-:-==:
 *                    .:::--::::::.     .--:-=--:--.       .:--:::--..
 *                   .=++=++:::::..     .:::---::--.    ....::...:::.
 *                    :::-::..::..      .::::-:::::.     ...::...:::.
 *                    ...::..::::..     .::::--::-:.    ....::...:::..
 *                    ............      ....:::..::.    ------:......
 *    ...........     ........:....     .....::..:..    ======-......      ...........
 *    :------:.:...   ...:+***++*#+     .------:---.    ...::::.:::...   .....:-----::.
 *    .::::::::-:..   .::--..:-::..    .-=+===++=-==:   ...:::..:--:..   .:==+=++++++*:
 *
 * @title PauserGuard
 * @notice Abstract contract that provides a flexible pausing mechanism for function selectors
 * @dev This contract allows for granular control over function execution through a pausing system.
 * Functions can be paused individually or as part of a group. Groups are logical collections of
 * function selectors that can be paused/unpaused together.
 *
 * The group parameter (bytes32) is expected to be a keccak256 hash of a descriptive string
 * representing the group's purpose.
 */
contract PauserGuard is Auth {
    /// @notice Represents a function signature and its associated contract address
    struct FunctionSig {
        bytes4 selector;
        address target;
    }

    /// @notice Tracks which selectors are currently paused
    mapping(address => mapping(bytes4 => bool)) public pausedSelectors;

    /// @notice Defines logical groupings of function selectors
    mapping(bytes32 => FunctionSig[]) public groupToFunctions;

    /// @notice Tracks which selectors are configurable (pre-approved)
    mapping(address => mapping(bytes4 => bool)) public isPausableSelector;

    event SelectorPaused(address indexed target, bytes4 indexed selector, address indexed by);
    event SelectorUnpaused(address indexed target, bytes4 indexed selector, address indexed by);
    event GroupPaused(bytes32 indexed group, address indexed by);
    event GroupUnpaused(bytes32 indexed group, address indexed by);
    event FunctionSigConfigured(bytes32 indexed group, address indexed target, bytes4 selector);

    constructor(address _owner, Authority _authority) Auth(_owner, _authority) {}

    // ============ Configuration (governance-controlled) ============

    /**
     * @notice Configures a group of function selectors that can be paused together
     * @dev This function allows the authority to define a logical group of functions
     * that can be paused/unpaused together. Once configured, all selectors in the group
     * become pausable. Only callable by authorized addresses (AdminTimelock only)
     * @param group The keccak256 hash of the group identifier (e.g., keccak256("EMERGENCY_PAUSE"))
     * @param signatures Array of function signatures and their associated contract addresses
     * to be included in the group
     * @dev Throws if signatures array is empty or exceeds 255 selectors
     */
    function configureGroup(bytes32 group, FunctionSig[] calldata signatures) external requiresAuth {
        if (signatures.length == 0) {
            revert("Selectors must not be empty");
        }
        if (signatures.length > 255) {
            revert("Selectors must not exceed 255");
        }
        groupToFunctions[group] = signatures;

        for (uint256 i = 0; i < signatures.length; i++) {
            isPausableSelector[signatures[i].target][signatures[i].selector] = true;
            emit FunctionSigConfigured(group, signatures[i].target, signatures[i].selector);
        }
    }

    // ============ Pausing ============

    /**
     * @notice Pauses a specific function selector
     * @dev Only callable by authorized addresses (must have PAUSER_ROLE)
     * @param selector The function selector to pause
     * @dev Throws if the selector is not configured as pausable
     */
    function pauseSelector(address target, bytes4 selector) external requiresAuth {
        if (!isPausableSelector[target][selector]) {
            revert("Selector not pausable");
        }
        pausedSelectors[target][selector] = true;
        emit SelectorPaused(target, selector, msg.sender);
    }

    /**
     * @notice Unpauses a specific function selector
     * @dev Only callable by authorized addresses (must have UNPAUSER_ROLE)
     * @param selector The function selector to unpause
     * @dev Throws if the selector is not currently paused
     */
    function unpauseSelector(address target, bytes4 selector) external requiresAuth {
        if (!pausedSelectors[target][selector]) {
            revert("Selector not paused");
        }
        pausedSelectors[target][selector] = false;
        emit SelectorUnpaused(target, selector, msg.sender);
    }

    /**
     * @notice Pauses all functions in a configured group
     * @dev Only callable by authorized addresses (must have PAUSER_ROLE)
     * @param group The keccak256 hash of the group identifier
     * @dev Emits events only for selectors that were actually paused
     */
    function pauseGroup(bytes32 group) external requiresAuth {
        if (groupToFunctions[group].length == 0) {
            revert("Group not found");
        }
        FunctionSig[] memory signatures = groupToFunctions[group];
        bool anyPaused = false;
        for (uint256 i = 0; i < signatures.length; i++) {
            FunctionSig memory signature = signatures[i];
            if (!pausedSelectors[signature.target][signature.selector]) {
                pausedSelectors[signature.target][signature.selector] = true;
                emit SelectorPaused(signature.target, signature.selector, msg.sender);
                anyPaused = true;
            }
        }

        if (anyPaused) {
            emit GroupPaused(group, msg.sender);
        }
    }

    /**
     * @notice Unpauses all functions in a configured group
     * @dev Only callable by authorized addresses (must have UNPAUSER_ROLE)
     * @param group The keccak256 hash of the group identifier
     * @dev Emits events only for selectors that were actually unpaused
     */
    function unpauseGroup(bytes32 group) external requiresAuth {
        if (groupToFunctions[group].length == 0) {
            revert("Group not found");
        }
        FunctionSig[] memory signatures = groupToFunctions[group];
        bool anyUnpaused = false;
        for (uint256 i = 0; i < signatures.length; i++) {
            FunctionSig memory signature = signatures[i];
            if (pausedSelectors[signature.target][signature.selector]) {
                pausedSelectors[signature.target][signature.selector] = false;
                emit SelectorUnpaused(signature.target, signature.selector, msg.sender);
                anyUnpaused = true;
            }
        }

        if (anyUnpaused) {
            emit GroupUnpaused(group, msg.sender);
        }
    }

    // ============ View Helpers ============

    /**
     * @notice Checks if a specific function selector is paused
     * @param selector The function selector to check
     * @return bool True if the selector is paused, false otherwise
     */
    function isPaused(address target, bytes4 selector) public view returns (bool) {
        return pausedSelectors[target][selector];
    }

    /**
     * @notice Retrieves all function selectors configured for a specific group
     * @param group The keccak256 hash of the group identifier
     * @return FunctionSig[] Array of function signatures in the group
     */
    function getGroupFunctions(bytes32 group) public view returns (FunctionSig[] memory) {
        return groupToFunctions[group];
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
abstract contract Auth {
    event OwnershipTransferred(address indexed user, address indexed newOwner);

    event AuthorityUpdated(address indexed user, Authority indexed newAuthority);

    address public owner;

    Authority public authority;

    constructor(address _owner, Authority _authority) {
        owner = _owner;
        authority = _authority;

        emit OwnershipTransferred(msg.sender, _owner);
        emit AuthorityUpdated(msg.sender, _authority);
    }

    modifier requiresAuth() virtual {
        require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED");

        _;
    }

    function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) {
        Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas.

        // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be
        // aware that this makes protected functions uncallable even to the owner if the authority is out of order.
        return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner;
    }

    function setAuthority(Authority newAuthority) public virtual {
        // We check if the caller is the owner first because we want to ensure they can
        // always swap out the authority even if it's reverting or using up a lot of gas.
        require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig));

        authority = newAuthority;

        emit AuthorityUpdated(msg.sender, newAuthority);
    }

    function transferOwnership(address newOwner) public virtual requiresAuth {
        owner = newOwner;

        emit OwnershipTransferred(msg.sender, newOwner);
    }
}

/// @notice A generic interface for a contract which provides authorization data to an Auth instance.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol)
/// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol)
interface Authority {
    function canCall(
        address user,
        address target,
        bytes4 functionSig
    ) external view returns (bool);
}

Settings
{
  "remappings": [
    "@level/src/=src/",
    "@level/config/=config/",
    "@level/script/=script/",
    "@level/test/=test/",
    "ds-test/=lib/ds-test/src/",
    "forge-std/=lib/forge-std/src/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin-4.9.0/contracts/=lib/openzeppelin-contracts-4.9.0/contracts/",
    "@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@solmate/=lib/solmate/",
    "@openzeppelin-upgrades/=lib/openzeppelin-foundry-upgrades/"
  ],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "none",
    "appendCBOR": false
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "cancun",
  "viaIR": true,
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_authority","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"group","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"FunctionSigConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"group","type":"bytes32"},{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"GroupPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"group","type":"bytes32"},{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"GroupUnpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"SelectorPaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":true,"internalType":"bytes4","name":"selector","type":"bytes4"},{"indexed":true,"internalType":"address","name":"by","type":"address"}],"name":"SelectorUnpaused","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"group","type":"bytes32"},{"components":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"target","type":"address"}],"internalType":"struct PauserGuard.FunctionSig[]","name":"signatures","type":"tuple[]"}],"name":"configureGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"group","type":"bytes32"}],"name":"getGroupFunctions","outputs":[{"components":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"target","type":"address"}],"internalType":"struct PauserGuard.FunctionSig[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"groupToFunctions","outputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"address","name":"target","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"isPausableSelector","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"group","type":"bytes32"}],"name":"pauseGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"pauseSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes4","name":"","type":"bytes4"}],"name":"pausedSelectors","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"group","type":"bytes32"}],"name":"unpauseGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"unpauseSelector","outputs":[],"stateMutability":"nonpayable","type":"function"}]

0x6080604052346100305761001a610014610133565b90610155565b610022610035565b611d8b6102c98239611d8b90f35b61003b565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100679061003f565b810190811060018060401b0382111761007f57604052565b610049565b90610097610090610035565b928361005d565b565b5f80fd5b60018060a01b031690565b6100b19061009d565b90565b6100bd816100a8565b036100c457565b5f80fd5b905051906100d5826100b4565b565b6100e0906100a8565b90565b6100ec816100d7565b036100f357565b5f80fd5b90505190610104826100e3565b565b919060408382031261012e578061012261012b925f86016100c8565b936020016100f7565b90565b610099565b6101516120548038038061014681610084565b928339810190610106565b9091565b9061015f9161021b565b565b5f1b90565b9061017760018060a01b0391610161565b9181191691161790565b90565b61019861019361019d9261009d565b610181565b61009d565b90565b6101a990610184565b90565b6101b5906101a0565b90565b90565b906101d06101cb6101d7926101ac565b6101b8565b8254610166565b9055565b6101e490610184565b90565b6101f0906101db565b90565b90565b9061020b610206610212926101e7565b6101f3565b8254610166565b9055565b5f0190565b610225815f6101bb565b6102308260016101f6565b339061026561025f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0936101ac565b916101ac565b9161026e610035565b8061027881610216565b0390a333906102b06102aa7fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198936101ac565b916101e7565b916102b9610035565b806102c381610216565b0390a356fe60806040526004361015610013575b610a16565b61001d5f356100fc565b8063048b4bd6146100f7578063408b0875146100f2578063439d27ae146100ed57806362fe07ee146100e857806374b896f1146100e35780637a9e5e4b146100de5780637ac3c653146100d95780638da5cb5b146100d45780639a926664146100cf578063bf7e214f146100ca578063caff415f146100c5578063cd0beb30146100c0578063d7f588b9146100bb5763f2fde38b0361000e576109e3565b610990565b61088c565b6107c7565b610792565b6106ed565b610527565b610481565b61042d565b6103aa565b610377565b610343565b61030d565b61015d565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61012081610114565b0361012757565b5f80fd5b9050359061013882610117565b565b9060208282031261015357610150915f0161012b565b90565b61010c565b5f0190565b3461018b5761017561017036600461013a565b610f3d565b61017d610102565b8061018781610158565b0390f35b610108565b60018060a01b031690565b6101a490610190565b90565b6101b08161019b565b036101b757565b5f80fd5b905035906101c8826101a7565b565b63ffffffff60e01b1690565b6101df816101ca565b036101e657565b5f80fd5b905035906101f7826101d6565b565b9190604083820312610221578061021561021e925f86016101bb565b936020016101ea565b90565b61010c565b90565b61023d61023861024292610190565b610226565b610190565b90565b61024e90610229565b90565b61025a90610245565b90565b9061026790610251565b5f5260205260405f2090565b61027c906101ca565b90565b9061028990610273565b5f5260205260405f2090565b1c90565b60ff1690565b6102af9060086102b49302610295565b610299565b90565b906102c2915461029f565b90565b6102de6102e3926102d96004935f9461025d565b61027f565b6102b7565b90565b151590565b6102f4906102e6565b9052565b919061030b905f602085019401906102eb565b565b3461033e5761033a6103296103233660046101f9565b906102c5565b610331610102565b918291826102f8565b0390f35b610108565b346103725761035c6103563660046101f9565b9061108d565b610364610102565b8061036e81610158565b0390f35b610108565b346103a55761038f61038a36600461013a565b6112b8565b610397610102565b806103a181610158565b0390f35b610108565b346103db576103d76103c66103c03660046101f9565b906112c7565b6103ce610102565b918291826102f8565b0390f35b610108565b6103e99061019b565b90565b6103f5816103e0565b036103fc57565b5f80fd5b9050359061040d826103ec565b565b9060208282031261042857610425915f01610400565b90565b61010c565b3461045b5761044561044036600461040f565b611421565b61044d610102565b8061045781610158565b0390f35b610108565b61047961047e926104746002935f9461025d565b61027f565b6102b7565b90565b346104b2576104ae61049d6104973660046101f9565b90610460565b6104a5610102565b918291826102f8565b0390f35b610108565b5f9103126104c157565b61010c565b60018060a01b031690565b6104e19060086104e69302610295565b6104c6565b90565b906104f491546104d1565b90565b6105025f5f906104e9565b90565b61050e9061019b565b9052565b9190610525905f60208501940190610505565b565b34610557576105373660046104b7565b6105536105426104f7565b61054a610102565b91829182610512565b0390f35b610108565b90565b6105688161055c565b0361056f57565b5f80fd5b905035906105808261055f565b565b91906040838203126105aa578061059e6105a7925f860161012b565b93602001610573565b90565b61010c565b6105b890610114565b90565b906105c5906105af565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6105fb816105e5565b8210156106155761060d6001916105e9565b910201905f90565b6105d1565b5f1c90565b60e01b90565b61062e9061061f565b90565b61063d6106429161061a565b610625565b90565b61064f9054610631565b90565b60201c90565b61066461066991610652565b6104c6565b90565b6106769054610658565b90565b6106849060036105bb565b9061068e826105e5565b8110156106b95761069e916105f2565b50906106b65f6106af818501610645565b930161066c565b90565b5f80fd5b6106c6906101ca565b9052565b9160206106eb9294936106e460408201965f8301906106bd565b0190610505565b565b3461071f57610706610700366004610582565b90610679565b9061071b610712610102565b928392836106ca565b0390f35b610108565b60018060a01b031690565b61073f9060086107449302610295565b610724565b90565b90610752915461072f565b90565b61076160015f90610747565b90565b61076d90610245565b90565b61077990610764565b9052565b9190610790905f60208501940190610770565b565b346107c2576107a23660046104b7565b6107be6107ad610755565b6107b5610102565b9182918261077d565b0390f35b610108565b346107f6576107e06107da3660046101f9565b90611692565b6107e8610102565b806107f281610158565b0390f35b610108565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156108415781359167ffffffffffffffff831161083c57602001926040830284011161083757565b610803565b6107ff565b6107fb565b9190916040818403126108875761085f835f830161012b565b92602082013567ffffffffffffffff81116108825761087e9201610807565b9091565b610110565b61010c565b346108bb576108a561089f366004610846565b91611b84565b6108ad610102565b806108b781610158565b0390f35b610108565b5190565b60209181520190565b60200190565b6108dc906101ca565b9052565b6108e99061019b565b9052565b9060208061090f936109055f8201515f8601906108d3565b01519101906108e0565b565b9061091e816040936108ed565b0190565b60200190565b9061094561093f610938846108c0565b80936108c4565b926108cd565b905f5b8181106109555750505090565b90919261096e6109686001928651610911565b94610922565b9101919091610948565b61098d9160208201915f818403910152610928565b90565b346109c0576109bc6109ab6109a636600461013a565b611b96565b6109b3610102565b91829182610978565b0390f35b610108565b906020828203126109de576109db915f016101bb565b90565b61010c565b34610a11576109fb6109f63660046109c5565b611c54565b610a03610102565b80610a0d81610158565b0390f35b610108565b5f80fd5b60209181520190565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610a57600c602092610a1a565b610a6081610a23565b0190565b610a799060208101905f818303910152610a4a565b90565b15610a8357565b610a8b610102565b62461bcd60e51b815280610aa160048201610a64565b0390fd5b610acb90610ac6610ac13363ffffffff60e01b5f351690611c87565b610a7c565b610d50565b565b90565b610ae4610adf610ae992610acd565b610226565b61055c565b90565b5f7f47726f7570206e6f7420666f756e640000000000000000000000000000000000910152565b610b20600f602092610a1a565b610b2981610aec565b0190565b610b429060208101905f818303910152610b13565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610b6d90610b45565b810190811067ffffffffffffffff821117610b8757604052565b610b4f565b90610b9f610b98610102565b9283610b63565b565b67ffffffffffffffff8111610bb95760208091020190565b610b4f565b90610bd0610bcb83610ba1565b610b8c565b918252565b90610bdf906101ca565b9052565b90610bed9061019b565b9052565b610bfb6040610b8c565b90565b90610c34610c2b5f610c0e610bf1565b94610c25610c1d838301610645565b838801610bd5565b0161066c565b60208401610be3565b565b610c3f90610bfe565b90565b90610c4c826105e5565b610c5581610bbe565b92610c6360208501916105e9565b5f915b838310610c735750505050565b600160208192610c8285610c36565b815201920192019190610c66565b610c9990610c42565b90565b6001610ca8910161055c565b90565b90610cb5826108c0565b811015610cc6576020809102010190565b6105d1565b610cd5905161019b565b90565b610ce290516101ca565b90565b610cf1610cf69161061a565b610299565b90565b610d039054610ce5565b90565b5f1b90565b90610d1760ff91610d06565b9181191691161790565b610d2a906102e6565b90565b90565b90610d45610d40610d4c92610d21565b610d2d565b8254610d0b565b9055565b610d64610d5f600383906105bb565b6105e5565b610d76610d705f610ad0565b9161055c565b14610f1b57610d8f610d8a600383906105bb565b610c90565b915f91610d9b5f610ad0565b5b80610db7610db1610dac886108c0565b61055c565b9161055c565b1015610ebe57610dc8858290610cab565b51610dfc610df7610de66002610de060208601610ccb565b9061025d565b610df15f8501610cd8565b9061027f565b610cf9565b610e10575b50610e0b90610c9c565b610d9c565b909350610e475f610e42610e316002610e2b60208701610ccb565b9061025d565b610e3c5f8601610cd8565b9061027f565b610d30565b610e5e5f610e5760208401610ccb565b9201610cd8565b3390610e9c610e96610e907fcb9a4273234cef036302892c067ab7fde730302d29fee81a12c0e020a57b63df95610251565b92610273565b92610251565b92610ea5610102565b80610eaf81610158565b0390a4610e0b60019390610e01565b5091909250610ecb575b50565b33610eff610ef97ff5e141bb69df3e33ff36acecd45dca4934e52f478caec65c156b0d7e4e0f4623936105af565b91610251565b91610f08610102565b80610f1281610158565b0390a35f610ec8565b610f23610102565b62461bcd60e51b815280610f3960048201610b2d565b0390fd5b610f4690610aa5565b565b90610f6f91610f6a610f653363ffffffff60e01b5f351690611c87565b610a7c565b610fca565b565b5f7f53656c6563746f72206e6f742070617573656400000000000000000000000000910152565b610fa56013602092610a1a565b610fae81610f71565b0190565b610fc79060208101905f818303910152610f98565b90565b610ff1610feb610fe6610fdf6002859061025d565b859061027f565b610cf9565b156102e6565b61106b576110145f61100f6110086002859061025d565b859061027f565b610d30565b90339061105361104d6110477fcb9a4273234cef036302892c067ab7fde730302d29fee81a12c0e020a57b63df95610251565b92610273565b92610251565b9261105c610102565b8061106681610158565b0390a4565b611073610102565b62461bcd60e51b81528061108960048201610fb2565b0390fd5b9061109791610f48565b565b6110bf906110ba6110b53363ffffffff60e01b5f351690611c87565b610a7c565b6110c1565b565b6110d56110d0600383906105bb565b6105e5565b6110e76110e15f610ad0565b9161055c565b14611296576111006110fb600383906105bb565b610c90565b915f9161110c5f610ad0565b5b8061112861112261111d886108c0565b61055c565b9161055c565b101561123957611139858290610cab565b5161117661117061116b61115a600261115460208701610ccb565b9061025d565b6111655f8601610cd8565b9061027f565b610cf9565b156102e6565b61118a575b5061118590610c9c565b61110d565b9093506111c260016111bd6111ac60026111a660208701610ccb565b9061025d565b6111b75f8601610cd8565b9061027f565b610d30565b6111d95f6111d260208401610ccb565b9201610cd8565b339061121761121161120b7fc907b2f17024b0431e71fca7deb7b2bcc4006272c9438594773cfb3e591e05f895610251565b92610273565b92610251565b92611220610102565b8061122a81610158565b0390a46111856001939061117b565b5091909250611246575b50565b3361127a6112747f3d7e70595b0ce47333816bc46b6f5d751c909d47395157a8aca8d85f5b5c5608936105af565b91610251565b91611283610102565b8061128d81610158565b0390a35f611243565b61129e610102565b62461bcd60e51b8152806112b460048201610b2d565b0390fd5b6112c190611099565b565b5f90565b6112ec916112e26112e7926112da6112c3565b50600261025d565b61027f565b610cf9565b90565b6112fb6113009161061a565b6104c6565b90565b61130d90546112ef565b90565b61131c6113219161061a565b610724565b90565b61132e9054611310565b90565b61133a90610245565b90565b611346816102e6565b0361134d57565b5f80fd5b9050519061135e8261133d565b565b9060208282031261137957611376915f01611351565b90565b61010c565b6040906113a76113ae949695939661139d60608401985f850190610505565b6020830190610505565b01906106bd565b565b6113b8610102565b3d5f823e3d90fd5b156113c757565b5f80fd5b906113dc60018060a01b0391610d06565b9181191691161790565b6113ef90610229565b90565b6113fb906113e6565b90565b90565b9061141661141161141d926113f2565b6113fe565b82546113cb565b9055565b3361143c6114366114315f611303565b61019b565b9161019b565b1480156114a5575b61144d906113c0565b611458816001611401565b339061148d6114877fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019893610251565b916113f2565b91611496610102565b806114a081610158565b0390a3565b506114b86114b36001611324565b610764565b602063b70096139133906114f16114ce30611331565b946114fc63ffffffff60e01b5f35166114e5610102565b9788968795869561061f565b85526004850161137e565b03915afa80156115475761144d915f91611519575b509050611444565b61153a915060203d8111611540575b6115328183610b63565b810190611360565b5f611511565b503d611528565b6113b0565b906115739161156e6115693363ffffffff60e01b5f351690611c87565b610a7c565b6115ce565b565b5f7f53656c6563746f72206e6f74207061757361626c650000000000000000000000910152565b6115a96015602092610a1a565b6115b281611575565b0190565b6115cb9060208101905f81830391015261159c565b90565b6115f56115ef6115ea6115e36004859061025d565b859061027f565b610cf9565b156102e6565b61167057611619600161161461160d6002859061025d565b859061027f565b610d30565b90339061165861165261164c7fc907b2f17024b0431e71fca7deb7b2bcc4006272c9438594773cfb3e591e05f895610251565b92610273565b92610251565b92611661610102565b8061166b81610158565b0390a4565b611678610102565b62461bcd60e51b81528061168e600482016115b6565b0390fd5b9061169c9161154c565b565b906116c692916116c16116bc3363ffffffff60e01b5f351690611c87565b610a7c565b6119da565b565b5090565b5f7f53656c6563746f7273206d757374206e6f7420626520656d7074790000000000910152565b611700601b602092610a1a565b611709816116cc565b0190565b6117229060208101905f8183039101526116f3565b90565b90565b61173c61173761174192611725565b610226565b61055c565b90565b5f7f53656c6563746f7273206d757374206e6f742065786365656420323535000000910152565b611778601d602092610a1a565b61178181611744565b0190565b61179a9060208101905f81830391015261176b565b90565b634e487b7160e01b5f525f60045260245ffd5b90565b600190818003010490565b5f80910155565b905f036117d7576117d5906117be565b565b61179d565b5b8181106117e8575050565b806117f55f6001936117c5565b016117dd565b909182811061180a575b505050565b61182861182261181c611833956117b3565b926117b3565b926105e9565b9182019101906117dc565b5f8080611805565b906801000000000000000081116118645781611859611862936105e5565b908281556117fb565b565b610b4f565b35611873816101d6565b90565b9061188563ffffffff91610d06565b9181191691161790565b611898906100fc565b90565b906118b06118ab6118b792610273565b61188f565b8254611876565b9055565b356118c5816101a7565b90565b60201b90565b906118e4640100000000600160c01b03916118c8565b9181191691161790565b90565b9061190661190161190d92610251565b6118ee565b82546118ce565b9055565b9061193b60205f6119419461193382820161192d848801611869565b9061189b565b0192016118bb565b906118f1565b565b9061194d91611911565b565b909161197161196161197792856116c8565b9361196c858561183b565b6117b0565b916105e9565b5f915b8383106119875750505050565b6001604082611997839486611943565b0192019201919061197a565b906119ae929161194f565b565b91908110156119c0576040020190565b6105d1565b91906119d8905f602085019401906106bd565b565b9291906119e88183906116c8565b6119fa6119f45f610ad0565b9161055c565b14611b6257611a0a8183906116c8565b611a1d611a1760ff611728565b9161055c565b11611b4057611a39818390611a34600388906105bb565b6119a3565b611a425f610ad0565b5b80611a60611a5a611a558587906116c8565b61055c565b9161055c565b1015611b3957611b3490611ab56001611ab0611a946004611a8e6020611a888a8c8a916119b0565b016118bb565b9061025d565b611aaa5f611aa4898b89916119b0565b01611869565b9061027f565b610d30565b85611acd6020611ac7868886916119b0565b016118bb565b611ae35f611add878987916119b0565b01611869565b91611b2c611b1a611b147f01c5e935b3b6afdc4fd2b490eab10a0c76bf17621ba65ffd79d0a72528f6b53f936105af565b93610251565b93611b23610102565b918291826119c5565b0390a3610c9c565b611a43565b5050509050565b611b48610102565b62461bcd60e51b815280611b5e60048201611785565b0390fd5b611b6a610102565b62461bcd60e51b815280611b806004820161170d565b0390fd5b90611b8f929161169e565b565b606090565b611bad611bb291611ba5611b91565b5060036105bb565b610c90565b90565b611bdb90611bd6611bd13363ffffffff60e01b5f351690611c87565b610a7c565b611bfd565b565b90611bf2611bed611bf992610251565b6118ee565b82546113cb565b9055565b611c07815f611bdd565b3390611c3c611c367f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610251565b91610251565b91611c45610102565b80611c4f81610158565b0390a3565b611c5d90611bb5565b565b611c73611c6e611c7892610acd565b610226565b610190565b90565b611c8490611c5f565b90565b90611c906112c3565b50611c9b6001611324565b90611ca582610764565b611cbf611cb9611cb45f611c7b565b61019b565b9161019b565b14159182611cf9575b5050908115611cd6575b5090565b9050611cf2611cec611ce75f611303565b61019b565b9161019b565b145f611cd2565b6020919250611d0790610764565b63b700961390611d338592611d3e611d1e30611331565b96611d27610102565b9788968795869561061f565b85526004850161137e565b03915afa908115611d86575f91611d58575b505f80611cc8565b611d79915060203d8111611d7f575b611d718183610b63565b810190611360565b5f611d50565b503d611d67565b6113b0560000000000000000000000008bbe46a0bb587d6363cf34e655108dcb4d671e9e000000000000000000000000c8425ace617aca1ddcb09cb7784b67403440098a

Deployed Bytecode

0x60806040526004361015610013575b610a16565b61001d5f356100fc565b8063048b4bd6146100f7578063408b0875146100f2578063439d27ae146100ed57806362fe07ee146100e857806374b896f1146100e35780637a9e5e4b146100de5780637ac3c653146100d95780638da5cb5b146100d45780639a926664146100cf578063bf7e214f146100ca578063caff415f146100c5578063cd0beb30146100c0578063d7f588b9146100bb5763f2fde38b0361000e576109e3565b610990565b61088c565b6107c7565b610792565b6106ed565b610527565b610481565b61042d565b6103aa565b610377565b610343565b61030d565b61015d565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b90565b61012081610114565b0361012757565b5f80fd5b9050359061013882610117565b565b9060208282031261015357610150915f0161012b565b90565b61010c565b5f0190565b3461018b5761017561017036600461013a565b610f3d565b61017d610102565b8061018781610158565b0390f35b610108565b60018060a01b031690565b6101a490610190565b90565b6101b08161019b565b036101b757565b5f80fd5b905035906101c8826101a7565b565b63ffffffff60e01b1690565b6101df816101ca565b036101e657565b5f80fd5b905035906101f7826101d6565b565b9190604083820312610221578061021561021e925f86016101bb565b936020016101ea565b90565b61010c565b90565b61023d61023861024292610190565b610226565b610190565b90565b61024e90610229565b90565b61025a90610245565b90565b9061026790610251565b5f5260205260405f2090565b61027c906101ca565b90565b9061028990610273565b5f5260205260405f2090565b1c90565b60ff1690565b6102af9060086102b49302610295565b610299565b90565b906102c2915461029f565b90565b6102de6102e3926102d96004935f9461025d565b61027f565b6102b7565b90565b151590565b6102f4906102e6565b9052565b919061030b905f602085019401906102eb565b565b3461033e5761033a6103296103233660046101f9565b906102c5565b610331610102565b918291826102f8565b0390f35b610108565b346103725761035c6103563660046101f9565b9061108d565b610364610102565b8061036e81610158565b0390f35b610108565b346103a55761038f61038a36600461013a565b6112b8565b610397610102565b806103a181610158565b0390f35b610108565b346103db576103d76103c66103c03660046101f9565b906112c7565b6103ce610102565b918291826102f8565b0390f35b610108565b6103e99061019b565b90565b6103f5816103e0565b036103fc57565b5f80fd5b9050359061040d826103ec565b565b9060208282031261042857610425915f01610400565b90565b61010c565b3461045b5761044561044036600461040f565b611421565b61044d610102565b8061045781610158565b0390f35b610108565b61047961047e926104746002935f9461025d565b61027f565b6102b7565b90565b346104b2576104ae61049d6104973660046101f9565b90610460565b6104a5610102565b918291826102f8565b0390f35b610108565b5f9103126104c157565b61010c565b60018060a01b031690565b6104e19060086104e69302610295565b6104c6565b90565b906104f491546104d1565b90565b6105025f5f906104e9565b90565b61050e9061019b565b9052565b9190610525905f60208501940190610505565b565b34610557576105373660046104b7565b6105536105426104f7565b61054a610102565b91829182610512565b0390f35b610108565b90565b6105688161055c565b0361056f57565b5f80fd5b905035906105808261055f565b565b91906040838203126105aa578061059e6105a7925f860161012b565b93602001610573565b90565b61010c565b6105b890610114565b90565b906105c5906105af565b5f5260205260405f2090565b634e487b7160e01b5f52603260045260245ffd5b5490565b5f5260205f2090565b6105fb816105e5565b8210156106155761060d6001916105e9565b910201905f90565b6105d1565b5f1c90565b60e01b90565b61062e9061061f565b90565b61063d6106429161061a565b610625565b90565b61064f9054610631565b90565b60201c90565b61066461066991610652565b6104c6565b90565b6106769054610658565b90565b6106849060036105bb565b9061068e826105e5565b8110156106b95761069e916105f2565b50906106b65f6106af818501610645565b930161066c565b90565b5f80fd5b6106c6906101ca565b9052565b9160206106eb9294936106e460408201965f8301906106bd565b0190610505565b565b3461071f57610706610700366004610582565b90610679565b9061071b610712610102565b928392836106ca565b0390f35b610108565b60018060a01b031690565b61073f9060086107449302610295565b610724565b90565b90610752915461072f565b90565b61076160015f90610747565b90565b61076d90610245565b90565b61077990610764565b9052565b9190610790905f60208501940190610770565b565b346107c2576107a23660046104b7565b6107be6107ad610755565b6107b5610102565b9182918261077d565b0390f35b610108565b346107f6576107e06107da3660046101f9565b90611692565b6107e8610102565b806107f281610158565b0390f35b610108565b5f80fd5b5f80fd5b5f80fd5b909182601f830112156108415781359167ffffffffffffffff831161083c57602001926040830284011161083757565b610803565b6107ff565b6107fb565b9190916040818403126108875761085f835f830161012b565b92602082013567ffffffffffffffff81116108825761087e9201610807565b9091565b610110565b61010c565b346108bb576108a561089f366004610846565b91611b84565b6108ad610102565b806108b781610158565b0390f35b610108565b5190565b60209181520190565b60200190565b6108dc906101ca565b9052565b6108e99061019b565b9052565b9060208061090f936109055f8201515f8601906108d3565b01519101906108e0565b565b9061091e816040936108ed565b0190565b60200190565b9061094561093f610938846108c0565b80936108c4565b926108cd565b905f5b8181106109555750505090565b90919261096e6109686001928651610911565b94610922565b9101919091610948565b61098d9160208201915f818403910152610928565b90565b346109c0576109bc6109ab6109a636600461013a565b611b96565b6109b3610102565b91829182610978565b0390f35b610108565b906020828203126109de576109db915f016101bb565b90565b61010c565b34610a11576109fb6109f63660046109c5565b611c54565b610a03610102565b80610a0d81610158565b0390f35b610108565b5f80fd5b60209181520190565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610a57600c602092610a1a565b610a6081610a23565b0190565b610a799060208101905f818303910152610a4a565b90565b15610a8357565b610a8b610102565b62461bcd60e51b815280610aa160048201610a64565b0390fd5b610acb90610ac6610ac13363ffffffff60e01b5f351690611c87565b610a7c565b610d50565b565b90565b610ae4610adf610ae992610acd565b610226565b61055c565b90565b5f7f47726f7570206e6f7420666f756e640000000000000000000000000000000000910152565b610b20600f602092610a1a565b610b2981610aec565b0190565b610b429060208101905f818303910152610b13565b90565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b90610b6d90610b45565b810190811067ffffffffffffffff821117610b8757604052565b610b4f565b90610b9f610b98610102565b9283610b63565b565b67ffffffffffffffff8111610bb95760208091020190565b610b4f565b90610bd0610bcb83610ba1565b610b8c565b918252565b90610bdf906101ca565b9052565b90610bed9061019b565b9052565b610bfb6040610b8c565b90565b90610c34610c2b5f610c0e610bf1565b94610c25610c1d838301610645565b838801610bd5565b0161066c565b60208401610be3565b565b610c3f90610bfe565b90565b90610c4c826105e5565b610c5581610bbe565b92610c6360208501916105e9565b5f915b838310610c735750505050565b600160208192610c8285610c36565b815201920192019190610c66565b610c9990610c42565b90565b6001610ca8910161055c565b90565b90610cb5826108c0565b811015610cc6576020809102010190565b6105d1565b610cd5905161019b565b90565b610ce290516101ca565b90565b610cf1610cf69161061a565b610299565b90565b610d039054610ce5565b90565b5f1b90565b90610d1760ff91610d06565b9181191691161790565b610d2a906102e6565b90565b90565b90610d45610d40610d4c92610d21565b610d2d565b8254610d0b565b9055565b610d64610d5f600383906105bb565b6105e5565b610d76610d705f610ad0565b9161055c565b14610f1b57610d8f610d8a600383906105bb565b610c90565b915f91610d9b5f610ad0565b5b80610db7610db1610dac886108c0565b61055c565b9161055c565b1015610ebe57610dc8858290610cab565b51610dfc610df7610de66002610de060208601610ccb565b9061025d565b610df15f8501610cd8565b9061027f565b610cf9565b610e10575b50610e0b90610c9c565b610d9c565b909350610e475f610e42610e316002610e2b60208701610ccb565b9061025d565b610e3c5f8601610cd8565b9061027f565b610d30565b610e5e5f610e5760208401610ccb565b9201610cd8565b3390610e9c610e96610e907fcb9a4273234cef036302892c067ab7fde730302d29fee81a12c0e020a57b63df95610251565b92610273565b92610251565b92610ea5610102565b80610eaf81610158565b0390a4610e0b60019390610e01565b5091909250610ecb575b50565b33610eff610ef97ff5e141bb69df3e33ff36acecd45dca4934e52f478caec65c156b0d7e4e0f4623936105af565b91610251565b91610f08610102565b80610f1281610158565b0390a35f610ec8565b610f23610102565b62461bcd60e51b815280610f3960048201610b2d565b0390fd5b610f4690610aa5565b565b90610f6f91610f6a610f653363ffffffff60e01b5f351690611c87565b610a7c565b610fca565b565b5f7f53656c6563746f72206e6f742070617573656400000000000000000000000000910152565b610fa56013602092610a1a565b610fae81610f71565b0190565b610fc79060208101905f818303910152610f98565b90565b610ff1610feb610fe6610fdf6002859061025d565b859061027f565b610cf9565b156102e6565b61106b576110145f61100f6110086002859061025d565b859061027f565b610d30565b90339061105361104d6110477fcb9a4273234cef036302892c067ab7fde730302d29fee81a12c0e020a57b63df95610251565b92610273565b92610251565b9261105c610102565b8061106681610158565b0390a4565b611073610102565b62461bcd60e51b81528061108960048201610fb2565b0390fd5b9061109791610f48565b565b6110bf906110ba6110b53363ffffffff60e01b5f351690611c87565b610a7c565b6110c1565b565b6110d56110d0600383906105bb565b6105e5565b6110e76110e15f610ad0565b9161055c565b14611296576111006110fb600383906105bb565b610c90565b915f9161110c5f610ad0565b5b8061112861112261111d886108c0565b61055c565b9161055c565b101561123957611139858290610cab565b5161117661117061116b61115a600261115460208701610ccb565b9061025d565b6111655f8601610cd8565b9061027f565b610cf9565b156102e6565b61118a575b5061118590610c9c565b61110d565b9093506111c260016111bd6111ac60026111a660208701610ccb565b9061025d565b6111b75f8601610cd8565b9061027f565b610d30565b6111d95f6111d260208401610ccb565b9201610cd8565b339061121761121161120b7fc907b2f17024b0431e71fca7deb7b2bcc4006272c9438594773cfb3e591e05f895610251565b92610273565b92610251565b92611220610102565b8061122a81610158565b0390a46111856001939061117b565b5091909250611246575b50565b3361127a6112747f3d7e70595b0ce47333816bc46b6f5d751c909d47395157a8aca8d85f5b5c5608936105af565b91610251565b91611283610102565b8061128d81610158565b0390a35f611243565b61129e610102565b62461bcd60e51b8152806112b460048201610b2d565b0390fd5b6112c190611099565b565b5f90565b6112ec916112e26112e7926112da6112c3565b50600261025d565b61027f565b610cf9565b90565b6112fb6113009161061a565b6104c6565b90565b61130d90546112ef565b90565b61131c6113219161061a565b610724565b90565b61132e9054611310565b90565b61133a90610245565b90565b611346816102e6565b0361134d57565b5f80fd5b9050519061135e8261133d565b565b9060208282031261137957611376915f01611351565b90565b61010c565b6040906113a76113ae949695939661139d60608401985f850190610505565b6020830190610505565b01906106bd565b565b6113b8610102565b3d5f823e3d90fd5b156113c757565b5f80fd5b906113dc60018060a01b0391610d06565b9181191691161790565b6113ef90610229565b90565b6113fb906113e6565b90565b90565b9061141661141161141d926113f2565b6113fe565b82546113cb565b9055565b3361143c6114366114315f611303565b61019b565b9161019b565b1480156114a5575b61144d906113c0565b611458816001611401565b339061148d6114877fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b7638998019893610251565b916113f2565b91611496610102565b806114a081610158565b0390a3565b506114b86114b36001611324565b610764565b602063b70096139133906114f16114ce30611331565b946114fc63ffffffff60e01b5f35166114e5610102565b9788968795869561061f565b85526004850161137e565b03915afa80156115475761144d915f91611519575b509050611444565b61153a915060203d8111611540575b6115328183610b63565b810190611360565b5f611511565b503d611528565b6113b0565b906115739161156e6115693363ffffffff60e01b5f351690611c87565b610a7c565b6115ce565b565b5f7f53656c6563746f72206e6f74207061757361626c650000000000000000000000910152565b6115a96015602092610a1a565b6115b281611575565b0190565b6115cb9060208101905f81830391015261159c565b90565b6115f56115ef6115ea6115e36004859061025d565b859061027f565b610cf9565b156102e6565b61167057611619600161161461160d6002859061025d565b859061027f565b610d30565b90339061165861165261164c7fc907b2f17024b0431e71fca7deb7b2bcc4006272c9438594773cfb3e591e05f895610251565b92610273565b92610251565b92611661610102565b8061166b81610158565b0390a4565b611678610102565b62461bcd60e51b81528061168e600482016115b6565b0390fd5b9061169c9161154c565b565b906116c692916116c16116bc3363ffffffff60e01b5f351690611c87565b610a7c565b6119da565b565b5090565b5f7f53656c6563746f7273206d757374206e6f7420626520656d7074790000000000910152565b611700601b602092610a1a565b611709816116cc565b0190565b6117229060208101905f8183039101526116f3565b90565b90565b61173c61173761174192611725565b610226565b61055c565b90565b5f7f53656c6563746f7273206d757374206e6f742065786365656420323535000000910152565b611778601d602092610a1a565b61178181611744565b0190565b61179a9060208101905f81830391015261176b565b90565b634e487b7160e01b5f525f60045260245ffd5b90565b600190818003010490565b5f80910155565b905f036117d7576117d5906117be565b565b61179d565b5b8181106117e8575050565b806117f55f6001936117c5565b016117dd565b909182811061180a575b505050565b61182861182261181c611833956117b3565b926117b3565b926105e9565b9182019101906117dc565b5f8080611805565b906801000000000000000081116118645781611859611862936105e5565b908281556117fb565b565b610b4f565b35611873816101d6565b90565b9061188563ffffffff91610d06565b9181191691161790565b611898906100fc565b90565b906118b06118ab6118b792610273565b61188f565b8254611876565b9055565b356118c5816101a7565b90565b60201b90565b906118e4640100000000600160c01b03916118c8565b9181191691161790565b90565b9061190661190161190d92610251565b6118ee565b82546118ce565b9055565b9061193b60205f6119419461193382820161192d848801611869565b9061189b565b0192016118bb565b906118f1565b565b9061194d91611911565b565b909161197161196161197792856116c8565b9361196c858561183b565b6117b0565b916105e9565b5f915b8383106119875750505050565b6001604082611997839486611943565b0192019201919061197a565b906119ae929161194f565b565b91908110156119c0576040020190565b6105d1565b91906119d8905f602085019401906106bd565b565b9291906119e88183906116c8565b6119fa6119f45f610ad0565b9161055c565b14611b6257611a0a8183906116c8565b611a1d611a1760ff611728565b9161055c565b11611b4057611a39818390611a34600388906105bb565b6119a3565b611a425f610ad0565b5b80611a60611a5a611a558587906116c8565b61055c565b9161055c565b1015611b3957611b3490611ab56001611ab0611a946004611a8e6020611a888a8c8a916119b0565b016118bb565b9061025d565b611aaa5f611aa4898b89916119b0565b01611869565b9061027f565b610d30565b85611acd6020611ac7868886916119b0565b016118bb565b611ae35f611add878987916119b0565b01611869565b91611b2c611b1a611b147f01c5e935b3b6afdc4fd2b490eab10a0c76bf17621ba65ffd79d0a72528f6b53f936105af565b93610251565b93611b23610102565b918291826119c5565b0390a3610c9c565b611a43565b5050509050565b611b48610102565b62461bcd60e51b815280611b5e60048201611785565b0390fd5b611b6a610102565b62461bcd60e51b815280611b806004820161170d565b0390fd5b90611b8f929161169e565b565b606090565b611bad611bb291611ba5611b91565b5060036105bb565b610c90565b90565b611bdb90611bd6611bd13363ffffffff60e01b5f351690611c87565b610a7c565b611bfd565b565b90611bf2611bed611bf992610251565b6118ee565b82546113cb565b9055565b611c07815f611bdd565b3390611c3c611c367f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610251565b91610251565b91611c45610102565b80611c4f81610158565b0390a3565b611c5d90611bb5565b565b611c73611c6e611c7892610acd565b610226565b610190565b90565b611c8490611c5f565b90565b90611c906112c3565b50611c9b6001611324565b90611ca582610764565b611cbf611cb9611cb45f611c7b565b61019b565b9161019b565b14159182611cf9575b5050908115611cd6575b5090565b9050611cf2611cec611ce75f611303565b61019b565b9161019b565b145f611cd2565b6020919250611d0790610764565b63b700961390611d338592611d3e611d1e30611331565b96611d27610102565b9788968795869561061f565b85526004850161137e565b03915afa908115611d86575f91611d58575b505f80611cc8565b611d79915060203d8111611d7f575b611d718183610b63565b810190611360565b5f611d50565b503d611d67565b6113b056

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.