ETH Price: $3,236.01 (-0.57%)
Gas: 1 Gwei

Contract

0x8DbB99cc3721f5c9cc7c9E92Db260813cf78cdd3
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Add Whitelisted203910162024-07-26 13:27:1138 hrs ago1722000431IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000440763.45061504
Add Whitelisted203910152024-07-26 13:26:5938 hrs ago1722000419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000240133.1805245
Add Whitelisted203766932024-07-24 13:26:593 days ago1721827619IN
0x8DbB99cc...3cf78cdd3
0 ETH0.001087656.04389269
Add Whitelisted203695242024-07-23 13:26:594 days ago1721741219IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000398415.27432022
Add Whitelisted203641512024-07-22 19:26:595 days ago1721676419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000758357.46143249
Add Whitelisted203605732024-07-22 7:26:595 days ago1721633219IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000305884.04948174
Add Whitelisted203336982024-07-18 13:26:599 days ago1721309219IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0009837213.02501325
Add Whitelisted203283312024-07-17 19:26:5910 days ago1721244419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00101596.60338411
Add Whitelisted203050352024-07-14 13:26:5913 days ago1720963619IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00024083.18784247
Add Whitelisted202907132024-07-12 13:26:5915 days ago1720790819IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000350024.63379275
Add Whitelisted202781842024-07-10 19:27:1117 days ago1720639631IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000679578.99647385
Add Whitelisted202781832024-07-10 19:26:5917 days ago1720639619IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000679849
Add Whitelisted202638692024-07-08 19:27:1119 days ago1720466831IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000330424.37428235
Add Whitelisted202638682024-07-08 19:26:5919 days ago1720466819IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000322894.27459781
Add Whitelisted202423882024-07-05 19:26:5922 days ago1720207619IN
0x8DbB99cc...3cf78cdd3
0 ETH0.00035094.64535811
Add Whitelisted202405962024-07-05 13:26:5922 days ago1720186019IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000577017.63988756
Add Whitelisted202388072024-07-05 7:26:5922 days ago1720164419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0010423913.79959513
Add Whitelisted202298602024-07-04 1:26:5924 days ago1720056419IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000377695
Add Whitelisted202191222024-07-02 13:26:4725 days ago1719926807IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000711467.00009862
Add Whitelisted202101702024-07-01 7:26:5926 days ago1719818819IN
0x8DbB99cc...3cf78cdd3
0 ETH0.0003024
Add Whitelisted201779412024-06-26 19:26:4731 days ago1719430007IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000745559.87155064
Add Whitelisted201636162024-06-24 19:25:3533 days ago1719257135IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000813246.3666822
Add Whitelisted201117942024-06-17 13:26:1140 days ago1718630771IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000590315.8080998
Add Whitelisted201117922024-06-17 13:25:4740 days ago1718630747IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000693085.42592933
Add Whitelisted201117912024-06-17 13:25:3540 days ago1718630735IN
0x8DbB99cc...3cf78cdd3
0 ETH0.000449185.94650034
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CertifiedPartners

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: CertifiedPartners.sol
/*
* SPDX-License-Identifier: UNLICENSED
* Copyright © 2021 Blocksquare d.o.o.
*/

pragma solidity ^0.6.12;
pragma experimental ABIEncoderV2;

import "./Ownable.sol";

interface CertifiedPartnersHelpers {
    function hasSystemAdminRights(address addr) external view returns (bool);

    function isCPAdminOf(address account, bytes32 cpBytes) external view returns (bool);

    function getSpecialWallet() external view returns (address);
}

// @title Certified Partners
contract CertifiedPartners is Ownable {
    struct CertifiedPartner {
        bool canDistributeRent;
        bool isCP;
        mapping(bytes32 => bool) whitelistedUsers;
    }

    CertifiedPartnersHelpers private _roles;

    mapping(bytes32 => CertifiedPartner) private _certifiedPartner;
    mapping(address => bytes32) _associatedWallets;

    address private _dataProxy;


    event AddedCertifiedPartner(bytes32 indexed cpBytes, string cp);
    event AddedWallet(bytes32 indexed cp, address wallet, string cpName);
    event RemovedWallet(bytes32 indexed cp, address wallet);
    event AddedWhitelisted(bytes32 indexed cp, string[] users, string cpName);
    event RemovedWhitelisted(bytes32 indexed cp, string[] users, string cpName);

    modifier onlySystemAdmin {
        require(_roles.hasSystemAdminRights(_msgSender()), "CertifiedPartners: You need to have system admin rights!");
        _;
    }


    modifier onlySystemAdminOrSpecialWallet {
        require(_roles.hasSystemAdminRights(_msgSender()) || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You don't have rights!");
        _;
    }

    modifier onlyCPAdmin(string memory cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_roles.isCPAdminOf(_msgSender(), cpBytes) || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You need to be admin of this CP!");
        _;
    }

    modifier onlyCPOrManager(string memory cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_roles.isCPAdminOf(_msgSender(), cpBytes) || _associatedWallets[_msgSender()] == cpBytes || CertifiedPartnersHelpers(_dataProxy).getSpecialWallet() == _msgSender(), "CertifiedPartners: You need to have CP admin rights or you have to be CP!");
        _;
    }

    constructor(address roles) public {
        _roles = CertifiedPartnersHelpers(roles);
    }

    function changeRolesAddress(address newRoles) public onlyOwner {
        _roles = CertifiedPartnersHelpers(newRoles);
    }

    function changeDataProxy(address dataProxy) public onlyOwner {
        _dataProxy = dataProxy;
    }

    /// @notice added new Certified Partner
    /// @param cp Certified Partner identifier
    function addCertifiedPartner(string memory cp) public onlySystemAdmin {
        bytes32 cpBytes = getUserBytes(cp);
        _certifiedPartner[cpBytes] = CertifiedPartner({canDistributeRent : true, isCP : true});
        emit AddedCertifiedPartner(cpBytes, cp);
    }

    /// @notice add wallets to Certified Partner
    /// @param cp Certified Partner identifier
    /// @param wallets Array of wallet address
    function addWalletsToCP(string memory cp, address[] memory wallets) public onlyCPAdmin(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        require(_certifiedPartner[cpBytes].isCP, "CertifiedPartners: Not a certified partner");
        for (uint256 i = 0; i < wallets.length; i++) {
            _associatedWallets[wallets[i]] = cpBytes;
            emit AddedWallet(cpBytes, wallets[i], cp);
        }
    }

    /// @notice add wallet to Certified Partner
    /// @param cp Certified Partner identifier
    /// @param wallet Wallet address
    function addCPAndWallet(string memory cp, address wallet) public onlySystemAdmin {
        bytes32 cpBytes = getUserBytes(cp);
        addCertifiedPartner(cp);
        _associatedWallets[wallet] = cpBytes;
        emit AddedWallet(cpBytes, wallet, cp);
    }

    /// @notice remove wallets
    /// @param wallets Array of wallet addresses
    function removeWallets(address[] memory wallets) public onlySystemAdminOrSpecialWallet {
        bytes32 cpBytes = _associatedWallets[wallets[0]];
        for (uint256 i = 0; i < wallets.length; i++) {
            delete _associatedWallets[wallets[i]];
            emit RemovedWallet(cpBytes, wallets[i]);
        }
    }

    /// @notice change whether Certified Partner can distribute revenue
    /// @param cp Certified Partner identifier
    function changeCanDistributeRent(string memory cp) public onlyCPAdmin(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        _certifiedPartner[cpBytes].canDistributeRent = !_certifiedPartner[cpBytes].canDistributeRent;
    }

    /// @notice whitelist users to Certified Partner allowing them to trade Certified Partner's properties
    /// @param cp Certified Partner identifier
    /// @param users Array of user identifiers
    function addWhitelisted(string memory cp, string[] memory users) public onlyCPOrManager(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        for (uint256 i = 0; i < users.length; i++) {
            bytes32 userBytes = getUserBytes(users[i]);
            _certifiedPartner[cpBytes].whitelistedUsers[userBytes] = true;
        }
        emit AddedWhitelisted(cpBytes, users, cp);
    }

    /// @notice remove users from Certified Partner's whitelist
    /// @param cp Certified Partner identifier
    /// @param users Array of user identifiers
    function removeWhitelisted(string memory cp, string[] memory users) public onlyCPOrManager(cp) {
        bytes32 cpBytes = getUserBytes(cp);
        for (uint256 i = 0; i < users.length; i++) {
            bytes32 userBytes = getUserBytes(users[i]);
            _certifiedPartner[cpBytes].whitelistedUsers[userBytes] = false;
        }
        emit RemovedWhitelisted(cpBytes, users, cp);
    }

    /// @notice check if Certified Partner identifier is registered
    /// @param name Identifier to check
    /// @return true if name is a registered Certified Partner otherwise false
    function isCertifiedPartnerName(string memory name) public view returns (bool) {
        bytes32 nameBytes = getUserBytes(name);
        return _certifiedPartner[nameBytes].isCP;
    }

    /// @notice check if addr belongs to a registered Certified Partner
    /// @param addr Wallet address to check
    /// @return true if addr belongs to a registered Certified Partner
    function isCertifiedPartner(address addr) public view returns (bool) {
        return _certifiedPartner[_associatedWallets[addr]].isCP;
    }

    /// @notice check if Certified Partner with wallet addr can distribute revenue
    /// @param addr Wallet address of Certified Partner
    /// @return true if Certified Partner with wallet addr can distribute revenue otherwise false
    function canCertifiedPartnerDistributeRent(address addr) public view returns (bool) {
        return _certifiedPartner[_associatedWallets[addr]].canDistributeRent;
    }

    /// @notice check if user is whitelisted for cp
    /// @param cp Certified Partner identifier
    /// @param user User identifier
    /// @return true if user is whitelisted for cp otherwise false
    function isUserWhitelistedByName(string memory cp, string memory user) public view returns (bool) {
        bytes32 cpBytes = getUserBytes(cp);
        return _certifiedPartner[cpBytes].whitelistedUsers[getUserBytes(user)];
    }

    /// @notice if admin is admin of cp based on wallet addresses
    /// @param admin Wallet address of admin
    /// @param cp Wallet address of Certified Partner
    /// @return true if admin is admin of cp otherwise false
    function isCPAdmin(address admin, address cp) external view returns (bool) {
        return _roles.isCPAdminOf(admin, _associatedWallets[cp]);
    }

    /// @notice check if user whitelisted for cp based on bytes
    /// @param cp Keccak256 hash of Certified Partner identifier
    /// @param user Keccak256 hash of user identifier
    /// @return true if user is whitelisted for cp otherwise false
    function isUserWhitelisted(bytes32 cp, bytes32 user) external view returns (bool) {
        return _certifiedPartner[cp].whitelistedUsers[user];
    }

    /// @notice get keccak256 hash of string
    /// @param user User or Certified Partner identifier
    /// @return keccak256 hash
    function getUserBytes(string memory user) public pure returns (bytes32) {
        return keccak256(abi.encode(user));
    }

    /// @notice retrieves keccak256 hash of Certified Partner based on wallet
    /// @param wallet Wallet address of Certified Partner
    /// @return keccak256 hash
    function getCPBytesFromWallet(address wallet) public view returns (bytes32) {
        return _associatedWallets[wallet];
    }
}

File 2 of 3: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

File 3 of 3: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import "./Context.sol";
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"roles","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cpBytes","type":"bytes32"},{"indexed":false,"internalType":"string","name":"cp","type":"string"}],"name":"AddedCertifiedPartner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"AddedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"string[]","name":"users","type":"string[]"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"AddedWhitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"RemovedWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"cp","type":"bytes32"},{"indexed":false,"internalType":"string[]","name":"users","type":"string[]"},{"indexed":false,"internalType":"string","name":"cpName","type":"string"}],"name":"RemovedWhitelisted","type":"event"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"address","name":"wallet","type":"address"}],"name":"addCPAndWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"}],"name":"addCertifiedPartner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"addWalletsToCP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string[]","name":"users","type":"string[]"}],"name":"addWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"canCertifiedPartnerDistributeRent","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"}],"name":"changeCanDistributeRent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"dataProxy","type":"address"}],"name":"changeDataProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRoles","type":"address"}],"name":"changeRolesAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getCPBytesFromWallet","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"user","type":"string"}],"name":"getUserBytes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address","name":"cp","type":"address"}],"name":"isCPAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isCertifiedPartner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"isCertifiedPartnerName","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"cp","type":"bytes32"},{"internalType":"bytes32","name":"user","type":"bytes32"}],"name":"isUserWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string","name":"user","type":"string"}],"name":"isUserWhitelistedByName","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":"address[]","name":"wallets","type":"address[]"}],"name":"removeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"cp","type":"string"},{"internalType":"string[]","name":"users","type":"string[]"}],"name":"removeWhitelisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5060405162001bbd38038062001bbd833981016040819052610031916100ae565b600061003b6100aa565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100dc565b3390565b6000602082840312156100bf578081fd5b81516001600160a01b03811681146100d5578182fd5b9392505050565b611ad180620000ec6000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063ec7f82f711610071578063ec7f82f714610269578063f02753161461027c578063f2fde38b1461028f578063f8736814146102a2578063fc22c0e9146102b55761012b565b80638da5cb5b146101fb5780639224e473146102105780639deb1d3a14610223578063bd3f263214610236578063d48fcde0146102565761012b565b806334c031b0116100f457806334c031b0146101a7578063376abb9b146101ba5780635ca3e77d146101cd5780635e1557a3146101e0578063715018a6146101f35761012b565b8062f86b771461013057806302f0633c1461014557806305f500531461015857806314a5ff671461016b578063338f454a14610194575b600080fd5b61014361013e3660046114f8565b6102c8565b005b6101436101533660046115d1565b610400565b6101436101663660046114f8565b61063c565b61017e6101793660046114f8565b6107c5565b60405161018b91906117e8565b60405180910390f35b61017e6101a23660046114d7565b6107ef565b61017e6101b536600461140c565b610813565b6101436101c83660046115d1565b61083e565b61017e6101db366004611681565b610a5c565b61017e6101ee366004611444565b610aa4565b610143610b40565b610203610bbf565b60405161018b9190611723565b61014361021e36600461140c565b610bce565b61014361023136600461140c565b610c25565b61024961024436600461140c565b610c7c565b60405161018b91906117f3565b61017e61026436600461140c565b610c97565b61014361027736600461147c565b610cc7565b61014361028a36600461152b565b610eee565b61014361029d36600461140c565b611001565b6101436102b0366004611570565b6110b7565b6102496102c33660046114f8565b6112f8565b6001546001600160a01b031663a49d9af26102e1611328565b6040518263ffffffff1660e01b81526004016102fd9190611723565b60206040518083038186803b15801561031557600080fd5b505afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906114b7565b6103725760405162461bcd60e51b81526004016103699061180f565b60405180910390fd5b600061037d826112f8565b604080518082018252600180825260208083019182526000858152600290915283902091518254915115156101000261ff001991151560ff1990931692909217161790555190915081907fd8e0014932a5e33471ffe2f38a918ade0f91c1e9a0bb8e67e55851f4e7c12c68906103f49085906117fc565b60405180910390a25050565b81600061040c826112f8565b6001549091506001600160a01b03166357d0a9ed610428611328565b836040518363ffffffff1660e01b8152600401610446929190611737565b60206040518083038186803b15801561045e57600080fd5b505afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049691906114b7565b806104cc575080600360006104a9611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b8061057457506104da611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190611428565b6001600160a01b0316145b6105905760405162461bcd60e51b8152600401610369906119cd565b600061059b856112f8565b905060005b84518110156105fa5760006105c78683815181106105ba57fe5b60200260200101516112f8565b600084815260026020908152604080832093835260019384019091529020805460ff1916821790559190910190506105a0565b50807f050d62dccfd8b3aba7abcaf9540e935dc71483b6c5b66b50c87ee182a21b7f5a858760405161062d929190611774565b60405180910390a25050505050565b806000610648826112f8565b6001549091506001600160a01b03166357d0a9ed610664611328565b836040518363ffffffff1660e01b8152600401610682929190611737565b60206040518083038186803b15801561069a57600080fd5b505afa1580156106ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d291906114b7565b8061077a57506106e0611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611428565b6001600160a01b0316145b6107965760405162461bcd60e51b8152600401610369906118b2565b60006107a1846112f8565b6000908152600260205260409020805460ff19811660ff9091161517905550505050565b6000806107d1836112f8565b600090815260026020526040902054610100900460ff169392505050565b60009182526002602090815260408084209284526001909201905290205460ff1690565b6001600160a01b03166000908152600360209081526040808320548352600290915290205460ff1690565b81600061084a826112f8565b6001549091506001600160a01b03166357d0a9ed610866611328565b836040518363ffffffff1660e01b8152600401610884929190611737565b60206040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906114b7565b8061090a575080600360006108e7611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b806109b25750610918611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611428565b6001600160a01b0316145b6109ce5760405162461bcd60e51b8152600401610369906119cd565b60006109d9856112f8565b905060005b8451811015610a295760006109f88683815181106105ba57fe5b600084815260026020908152604080832093835260019384019091529020805460ff191690559190910190506109de565b50807f636c09c4028c49ab0593eb53399a90ee7f3bf67154817b91d6fc9a1c69b81bb5858760405161062d929190611774565b600080610a68846112f8565b6000818152600260205260408120919250600190910190610a88856112f8565b815260208101919091526040016000205460ff16949350505050565b6001546001600160a01b038281166000908152600360205260408082205490516357d0a9ed60e01b8152919392909216916357d0a9ed91610ae9918791600401611737565b60206040518083038186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3991906114b7565b9392505050565b610b48611328565b6000546001600160a01b03908116911614610b755760405162461bcd60e51b81526004016103699061194f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610bd6611328565b6000546001600160a01b03908116911614610c035760405162461bcd60e51b81526004016103699061194f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610c2d611328565b6000546001600160a01b03908116911614610c5a5760405162461bcd60e51b81526004016103699061194f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b031660009081526003602090815260408083205483526002909152902054610100900460ff1690565b6001546001600160a01b031663a49d9af2610ce0611328565b6040518263ffffffff1660e01b8152600401610cfc9190611723565b60206040518083038186803b158015610d1457600080fd5b505afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906114b7565b80610df45750610d5a611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190611428565b6001600160a01b0316145b610e105760405162461bcd60e51b815260040161036990611984565b60006003600083600081518110610e2357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060005b8251811015610ee95760036000848381518110610e6a57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009055817ff8222a0a21124b98ebd8c32186e98f96e17b966f73d2becdcfd9e64185b71d0e848381518110610ec457fe5b6020026020010151604051610ed99190611723565b60405180910390a2600101610e51565b505050565b6001546001600160a01b031663a49d9af2610f07611328565b6040518263ffffffff1660e01b8152600401610f239190611723565b60206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7391906114b7565b610f8f5760405162461bcd60e51b81526004016103699061180f565b6000610f9a836112f8565b9050610fa5836102c8565b6001600160a01b038216600090815260036020526040908190208290555181907fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a8790610ff49085908790611750565b60405180910390a2505050565b611009611328565b6000546001600160a01b039081169116146110365760405162461bcd60e51b81526004016103699061194f565b6001600160a01b03811661105c5760405162461bcd60e51b81526004016103699061186c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8160006110c3826112f8565b6001549091506001600160a01b03166357d0a9ed6110df611328565b836040518363ffffffff1660e01b81526004016110fd929190611737565b60206040518083038186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906114b7565b806111f5575061115b611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611428565b6001600160a01b0316145b6112115760405162461bcd60e51b8152600401610369906118b2565b600061121c856112f8565b600081815260026020526040902054909150610100900460ff166112525760405162461bcd60e51b815260040161036990611905565b60005b84518110156112f057816003600087848151811061126f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550817fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a878683815181106112c957fe5b6020026020010151886040516112e0929190611750565b60405180910390a2600101611255565b505050505050565b60008160405160200161130b91906117fc565b604051602081830303815290604052805190602001209050919050565b3390565b600082601f83011261133c578081fd5b813561134f61134a82611a63565b611a3c565b81815291506020808301908481018184028601820187101561137057600080fd5b60005b8481101561139857813561138681611a83565b84529282019290820190600101611373565b505050505092915050565b600082601f8301126113b3578081fd5b813567ffffffffffffffff8111156113c9578182fd5b6113dc601f8201601f1916602001611a3c565b91508082528360208285010111156113f357600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561141d578081fd5b8135610b3981611a83565b600060208284031215611439578081fd5b8151610b3981611a83565b60008060408385031215611456578081fd5b823561146181611a83565b9150602083013561147181611a83565b809150509250929050565b60006020828403121561148d578081fd5b813567ffffffffffffffff8111156114a3578182fd5b6114af8482850161132c565b949350505050565b6000602082840312156114c8578081fd5b81518015158114610b39578182fd5b600080604083850312156114e9578182fd5b50508035926020909101359150565b600060208284031215611509578081fd5b813567ffffffffffffffff81111561151f578182fd5b6114af848285016113a3565b6000806040838503121561153d578182fd5b823567ffffffffffffffff811115611553578283fd5b61155f858286016113a3565b925050602083013561147181611a83565b60008060408385031215611582578182fd5b823567ffffffffffffffff80821115611599578384fd5b6115a5868387016113a3565b935060208501359150808211156115ba578283fd5b506115c78582860161132c565b9150509250929050565b600080604083850312156115e3578182fd5b823567ffffffffffffffff808211156115fa578384fd5b611606868387016113a3565b935060209150818501358181111561161c578384fd5b85019050601f8101861361162e578283fd5b803561163c61134a82611a63565b81815283810190838501865b848110156116715761165f8b8884358901016113a3565b84529286019290860190600101611648565b5096999098509650505050505050565b60008060408385031215611693578182fd5b823567ffffffffffffffff808211156116aa578384fd5b6116b6868387016113a3565b935060208501359150808211156116cb578283fd5b506115c7858286016113a3565b60008151808452815b818110156116fd576020818501810151868301820152016116e1565b8181111561170e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906114af908301846116d8565b60006040820160408352808551808352606085019150602092506060838202860101838801855b838110156117c957605f198884030185526117b78383516116d8565b9486019492509085019060010161179b565b5050858103848701526117dc81886116d8565b98975050505050505050565b901515815260200190565b90815260200190565b600060208252610b3960208301846116d8565b60208082526038908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652073797374656d2061646d696e20726967687473210000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526033908201527f436572746966696564506172746e6572733a20596f75206e65656420746f2062604082015272652061646d696e206f6620746869732043502160681b606082015260800190565b6020808252602a908201527f436572746966696564506172746e6572733a204e6f742061206365727469666960408201526932b2103830b93a3732b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f436572746966696564506172746e6572733a20596f7520646f6e27742068617660408201526865207269676874732160b81b606082015260800190565b60208082526049908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652043502061646d696e20726967687473206f7220796f75206861766520606082015268746f2062652043502160b81b608082015260a00190565b60405181810167ffffffffffffffff81118282101715611a5b57600080fd5b604052919050565b600067ffffffffffffffff821115611a79578081fd5b5060209081020190565b6001600160a01b0381168114611a9857600080fd5b5056fea2646970667358221220a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d58664736f6c634300060c0033000000000000000000000000cddd81a19cfd74281c7c5f83415e195b44953ec4

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80638da5cb5b116100ad578063ec7f82f711610071578063ec7f82f714610269578063f02753161461027c578063f2fde38b1461028f578063f8736814146102a2578063fc22c0e9146102b55761012b565b80638da5cb5b146101fb5780639224e473146102105780639deb1d3a14610223578063bd3f263214610236578063d48fcde0146102565761012b565b806334c031b0116100f457806334c031b0146101a7578063376abb9b146101ba5780635ca3e77d146101cd5780635e1557a3146101e0578063715018a6146101f35761012b565b8062f86b771461013057806302f0633c1461014557806305f500531461015857806314a5ff671461016b578063338f454a14610194575b600080fd5b61014361013e3660046114f8565b6102c8565b005b6101436101533660046115d1565b610400565b6101436101663660046114f8565b61063c565b61017e6101793660046114f8565b6107c5565b60405161018b91906117e8565b60405180910390f35b61017e6101a23660046114d7565b6107ef565b61017e6101b536600461140c565b610813565b6101436101c83660046115d1565b61083e565b61017e6101db366004611681565b610a5c565b61017e6101ee366004611444565b610aa4565b610143610b40565b610203610bbf565b60405161018b9190611723565b61014361021e36600461140c565b610bce565b61014361023136600461140c565b610c25565b61024961024436600461140c565b610c7c565b60405161018b91906117f3565b61017e61026436600461140c565b610c97565b61014361027736600461147c565b610cc7565b61014361028a36600461152b565b610eee565b61014361029d36600461140c565b611001565b6101436102b0366004611570565b6110b7565b6102496102c33660046114f8565b6112f8565b6001546001600160a01b031663a49d9af26102e1611328565b6040518263ffffffff1660e01b81526004016102fd9190611723565b60206040518083038186803b15801561031557600080fd5b505afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d91906114b7565b6103725760405162461bcd60e51b81526004016103699061180f565b60405180910390fd5b600061037d826112f8565b604080518082018252600180825260208083019182526000858152600290915283902091518254915115156101000261ff001991151560ff1990931692909217161790555190915081907fd8e0014932a5e33471ffe2f38a918ade0f91c1e9a0bb8e67e55851f4e7c12c68906103f49085906117fc565b60405180910390a25050565b81600061040c826112f8565b6001549091506001600160a01b03166357d0a9ed610428611328565b836040518363ffffffff1660e01b8152600401610446929190611737565b60206040518083038186803b15801561045e57600080fd5b505afa158015610472573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049691906114b7565b806104cc575080600360006104a9611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b8061057457506104da611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190611428565b6001600160a01b0316145b6105905760405162461bcd60e51b8152600401610369906119cd565b600061059b856112f8565b905060005b84518110156105fa5760006105c78683815181106105ba57fe5b60200260200101516112f8565b600084815260026020908152604080832093835260019384019091529020805460ff1916821790559190910190506105a0565b50807f050d62dccfd8b3aba7abcaf9540e935dc71483b6c5b66b50c87ee182a21b7f5a858760405161062d929190611774565b60405180910390a25050505050565b806000610648826112f8565b6001549091506001600160a01b03166357d0a9ed610664611328565b836040518363ffffffff1660e01b8152600401610682929190611737565b60206040518083038186803b15801561069a57600080fd5b505afa1580156106ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d291906114b7565b8061077a57506106e0611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561073757600080fd5b505afa15801561074b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076f9190611428565b6001600160a01b0316145b6107965760405162461bcd60e51b8152600401610369906118b2565b60006107a1846112f8565b6000908152600260205260409020805460ff19811660ff9091161517905550505050565b6000806107d1836112f8565b600090815260026020526040902054610100900460ff169392505050565b60009182526002602090815260408084209284526001909201905290205460ff1690565b6001600160a01b03166000908152600360209081526040808320548352600290915290205460ff1690565b81600061084a826112f8565b6001549091506001600160a01b03166357d0a9ed610866611328565b836040518363ffffffff1660e01b8152600401610884929190611737565b60206040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d491906114b7565b8061090a575080600360006108e7611328565b6001600160a01b03166001600160a01b0316815260200190815260200160002054145b806109b25750610918611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109a79190611428565b6001600160a01b0316145b6109ce5760405162461bcd60e51b8152600401610369906119cd565b60006109d9856112f8565b905060005b8451811015610a295760006109f88683815181106105ba57fe5b600084815260026020908152604080832093835260019384019091529020805460ff191690559190910190506109de565b50807f636c09c4028c49ab0593eb53399a90ee7f3bf67154817b91d6fc9a1c69b81bb5858760405161062d929190611774565b600080610a68846112f8565b6000818152600260205260408120919250600190910190610a88856112f8565b815260208101919091526040016000205460ff16949350505050565b6001546001600160a01b038281166000908152600360205260408082205490516357d0a9ed60e01b8152919392909216916357d0a9ed91610ae9918791600401611737565b60206040518083038186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3991906114b7565b9392505050565b610b48611328565b6000546001600160a01b03908116911614610b755760405162461bcd60e51b81526004016103699061194f565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b610bd6611328565b6000546001600160a01b03908116911614610c035760405162461bcd60e51b81526004016103699061194f565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b610c2d611328565b6000546001600160a01b03908116911614610c5a5760405162461bcd60e51b81526004016103699061194f565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b031660009081526003602052604090205490565b6001600160a01b031660009081526003602090815260408083205483526002909152902054610100900460ff1690565b6001546001600160a01b031663a49d9af2610ce0611328565b6040518263ffffffff1660e01b8152600401610cfc9190611723565b60206040518083038186803b158015610d1457600080fd5b505afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906114b7565b80610df45750610d5a611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b158015610db157600080fd5b505afa158015610dc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de99190611428565b6001600160a01b0316145b610e105760405162461bcd60e51b815260040161036990611984565b60006003600083600081518110610e2357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054905060005b8251811015610ee95760036000848381518110610e6a57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009055817ff8222a0a21124b98ebd8c32186e98f96e17b966f73d2becdcfd9e64185b71d0e848381518110610ec457fe5b6020026020010151604051610ed99190611723565b60405180910390a2600101610e51565b505050565b6001546001600160a01b031663a49d9af2610f07611328565b6040518263ffffffff1660e01b8152600401610f239190611723565b60206040518083038186803b158015610f3b57600080fd5b505afa158015610f4f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7391906114b7565b610f8f5760405162461bcd60e51b81526004016103699061180f565b6000610f9a836112f8565b9050610fa5836102c8565b6001600160a01b038216600090815260036020526040908190208290555181907fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a8790610ff49085908790611750565b60405180910390a2505050565b611009611328565b6000546001600160a01b039081169116146110365760405162461bcd60e51b81526004016103699061194f565b6001600160a01b03811661105c5760405162461bcd60e51b81526004016103699061186c565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b8160006110c3826112f8565b6001549091506001600160a01b03166357d0a9ed6110df611328565b836040518363ffffffff1660e01b81526004016110fd929190611737565b60206040518083038186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906114b7565b806111f5575061115b611328565b6001600160a01b0316600460009054906101000a90046001600160a01b03166001600160a01b031663607014116040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190611428565b6001600160a01b0316145b6112115760405162461bcd60e51b8152600401610369906118b2565b600061121c856112f8565b600081815260026020526040902054909150610100900460ff166112525760405162461bcd60e51b815260040161036990611905565b60005b84518110156112f057816003600087848151811061126f57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002081905550817fa042d7210279a26a0d0f518fb8fa0e8b28bcc2a26efeb606bb16cd0587e41a878683815181106112c957fe5b6020026020010151886040516112e0929190611750565b60405180910390a2600101611255565b505050505050565b60008160405160200161130b91906117fc565b604051602081830303815290604052805190602001209050919050565b3390565b600082601f83011261133c578081fd5b813561134f61134a82611a63565b611a3c565b81815291506020808301908481018184028601820187101561137057600080fd5b60005b8481101561139857813561138681611a83565b84529282019290820190600101611373565b505050505092915050565b600082601f8301126113b3578081fd5b813567ffffffffffffffff8111156113c9578182fd5b6113dc601f8201601f1916602001611a3c565b91508082528360208285010111156113f357600080fd5b8060208401602084013760009082016020015292915050565b60006020828403121561141d578081fd5b8135610b3981611a83565b600060208284031215611439578081fd5b8151610b3981611a83565b60008060408385031215611456578081fd5b823561146181611a83565b9150602083013561147181611a83565b809150509250929050565b60006020828403121561148d578081fd5b813567ffffffffffffffff8111156114a3578182fd5b6114af8482850161132c565b949350505050565b6000602082840312156114c8578081fd5b81518015158114610b39578182fd5b600080604083850312156114e9578182fd5b50508035926020909101359150565b600060208284031215611509578081fd5b813567ffffffffffffffff81111561151f578182fd5b6114af848285016113a3565b6000806040838503121561153d578182fd5b823567ffffffffffffffff811115611553578283fd5b61155f858286016113a3565b925050602083013561147181611a83565b60008060408385031215611582578182fd5b823567ffffffffffffffff80821115611599578384fd5b6115a5868387016113a3565b935060208501359150808211156115ba578283fd5b506115c78582860161132c565b9150509250929050565b600080604083850312156115e3578182fd5b823567ffffffffffffffff808211156115fa578384fd5b611606868387016113a3565b935060209150818501358181111561161c578384fd5b85019050601f8101861361162e578283fd5b803561163c61134a82611a63565b81815283810190838501865b848110156116715761165f8b8884358901016113a3565b84529286019290860190600101611648565b5096999098509650505050505050565b60008060408385031215611693578182fd5b823567ffffffffffffffff808211156116aa578384fd5b6116b6868387016113a3565b935060208501359150808211156116cb578283fd5b506115c7858286016113a3565b60008151808452815b818110156116fd576020818501810151868301820152016116e1565b8181111561170e5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03831681526040602082018190526000906114af908301846116d8565b60006040820160408352808551808352606085019150602092506060838202860101838801855b838110156117c957605f198884030185526117b78383516116d8565b9486019492509085019060010161179b565b5050858103848701526117dc81886116d8565b98975050505050505050565b901515815260200190565b90815260200190565b600060208252610b3960208301846116d8565b60208082526038908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652073797374656d2061646d696e20726967687473210000000000000000606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526033908201527f436572746966696564506172746e6572733a20596f75206e65656420746f2062604082015272652061646d696e206f6620746869732043502160681b606082015260800190565b6020808252602a908201527f436572746966696564506172746e6572733a204e6f742061206365727469666960408201526932b2103830b93a3732b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f436572746966696564506172746e6572733a20596f7520646f6e27742068617660408201526865207269676874732160b81b606082015260800190565b60208082526049908201527f436572746966696564506172746e6572733a20596f75206e65656420746f206860408201527f6176652043502061646d696e20726967687473206f7220796f75206861766520606082015268746f2062652043502160b81b608082015260a00190565b60405181810167ffffffffffffffff81118282101715611a5b57600080fd5b604052919050565b600067ffffffffffffffff821115611a79578081fd5b5060209081020190565b6001600160a01b0381168114611a9857600080fd5b5056fea2646970667358221220a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d58664736f6c634300060c0033

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

000000000000000000000000cddd81a19cfd74281c7c5f83415e195b44953ec4

-----Decoded View---------------
Arg [0] : roles (address): 0xcDdd81a19cfd74281c7C5f83415e195B44953EC4

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000cddd81a19cfd74281c7c5f83415e195b44953ec4


Deployed Bytecode Sourcemap

472:8297:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2725:266;;;;;;:::i;:::-;;:::i;:::-;;4914:388;;;;;;:::i;:::-;;:::i;4480:227::-;;;;;;:::i;:::-;;:::i;6053:184::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8056:150;;;;;;:::i;:::-;;:::i;6814:169::-;;;;;;:::i;:::-;;:::i;5466:394::-;;;;;;:::i;:::-;;:::i;7191:229::-;;;;;;:::i;:::-;;:::i;7652:148::-;;;;;;:::i;:::-;;:::i;1684:145:2:-;;;:::i;1061:77::-;;;:::i;:::-;;;;;;;:::i;2399:123:0:-;;;;;;:::i;:::-;;:::i;2528:100::-;;;;;;:::i;:::-;;:::i;8641:126::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6430:141::-;;;;;;:::i;:::-;;:::i;4034:321::-;;;;;;:::i;:::-;;:::i;3690:258::-;;;;;;:::i;:::-;;:::i;1978:240:2:-;;;;;;:::i;:::-;;:::i;3140:412:0:-;;;;;;:::i;:::-;;:::i;8345:123::-;;;;;;:::i;:::-;;:::i;2725:266::-;1264:6;;-1:-1:-1;;;;;1264:6:0;:27;1292:12;:10;:12::i;:::-;1264:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1256:110;;;;-1:-1:-1;;;1256:110:0;;;;;;;:::i;:::-;;;;;;;;;2805:15:::1;2823:16;2836:2;2823:12;:16::i;:::-;2878:57;::::0;;;;::::1;::::0;;2916:4:::1;2878:57:::0;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;2849:26:0;;;:17:::1;:26:::0;;;;;;:86;;;;;;::::1;;;;-1:-1:-1::0;;2849:86:0;::::1;;-1:-1:-1::0;;2849:86:0;;::::1;::::0;;;::::1;;;::::0;;2950:34;2805;;-1:-1:-1;2805:34:0;;2950::::1;::::0;::::1;::::0;2981:2;;2950:34:::1;:::i;:::-;;;;;;;;1376:1;2725:266:::0;:::o;4914:388::-;5002:2;1985:15;2003:16;2016:2;2003:12;:16::i;:::-;2037:6;;1985:34;;-1:-1:-1;;;;;;2037:6:0;:18;2056:12;:10;:12::i;:::-;2070:7;2037:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;;;;2118:7;2082:18;:32;2101:12;:10;:12::i;:::-;-1:-1:-1;;;;;2082:32:0;-1:-1:-1;;;;;2082:32:0;;;;;;;;;;;;;:43;2037:88;:163;;;;2188:12;:10;:12::i;:::-;-1:-1:-1;;;;;2129:71:0;2154:10;;;;;;;;;-1:-1:-1;;;;;2154:10:0;-1:-1:-1;;;;;2129:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2129:71:0;;2037:163;2029:249;;;;-1:-1:-1;;;2029:249:0;;;;;;;:::i;:::-;5016:15:::1;5034:16;5047:2;5034:12;:16::i;:::-;5016:34;;5065:9;5060:185;5084:5;:12;5080:1;:16;5060:185;;;5117:17;5137:22;5150:5;5156:1;5150:8;;;;;;;;;;;;;;5137:12;:22::i;:::-;5173:26;::::0;;;:17:::1;:26;::::0;;;;;;;:54;;;5230:4:::1;5173:43:::0;;::::1;:54:::0;;;;;:61;;-1:-1:-1;;5173:61:0::1;::::0;::::1;::::0;;5098:3;;;::::1;::::0;-1:-1:-1;5060:185:0::1;;;;5276:7;5259:36;5285:5;5292:2;5259:36;;;;;;;:::i;:::-;;;;;;;;2288:1;4914:388:::0;;;;:::o;4480:227::-;4550:2;1684:15;1702:16;1715:2;1702:12;:16::i;:::-;1736:6;;1684:34;;-1:-1:-1;;;;;;1736:6:0;:18;1755:12;:10;:12::i;:::-;1769:7;1736:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1840:12;:10;:12::i;:::-;-1:-1:-1;;;;;1781:71:0;1806:10;;;;;;;;;-1:-1:-1;;;;;1806:10:0;-1:-1:-1;;;;;1781:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1781:71:0;;1736:116;1728:180;;;;-1:-1:-1;;;1728:180:0;;;;;;;:::i;:::-;4564:15:::1;4582:16;4595:2;4582:12;:16::i;:::-;4656:26;::::0;;;:17:::1;:26;::::0;;;;:44;;-1:-1:-1;;4608:92:0;::::1;4656:44;::::0;;::::1;4655:45;4608:92;::::0;;-1:-1:-1;;;;4480:227:0:o;6053:184::-;6126:4;6142:17;6162:18;6175:4;6162:12;:18::i;:::-;6197:28;;;;:17;:28;;;;;:33;;;;;;;6053:184;-1:-1:-1;;;6053:184:0:o;8056:150::-;8132:4;8155:21;;;:17;:21;;;;;;;;:44;;;:38;;;;:44;;;;;;;;8056:150::o;6814:169::-;-1:-1:-1;;;;;6933:24:0;6892:4;6933:24;;;:18;:24;;;;;;;;;6915:43;;:17;:43;;;;;:61;;;;6814:169::o;5466:394::-;5557:2;1985:15;2003:16;2016:2;2003:12;:16::i;:::-;2037:6;;1985:34;;-1:-1:-1;;;;;;2037:6:0;:18;2056:12;:10;:12::i;:::-;2070:7;2037:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:88;;;;2118:7;2082:18;:32;2101:12;:10;:12::i;:::-;-1:-1:-1;;;;;2082:32:0;-1:-1:-1;;;;;2082:32:0;;;;;;;;;;;;;:43;2037:88;:163;;;;2188:12;:10;:12::i;:::-;-1:-1:-1;;;;;2129:71:0;2154:10;;;;;;;;;-1:-1:-1;;;;;2154:10:0;-1:-1:-1;;;;;2129:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2129:71:0;;2037:163;2029:249;;;;-1:-1:-1;;;2029:249:0;;;;;;;:::i;:::-;5571:15:::1;5589:16;5602:2;5589:12;:16::i;:::-;5571:34;;5620:9;5615:186;5639:5;:12;5635:1;:16;5615:186;;;5672:17;5692:22;5705:5;5711:1;5705:8;;;;;;;5692:22;5785:5;5728:26:::0;;;:17:::1;:26;::::0;;;;;;;:54;;;:43:::1;::::0;;::::1;:54:::0;;;;;:62;;-1:-1:-1;;5728:62:0::1;::::0;;5653:3;;;::::1;::::0;-1:-1:-1;5615:186:0::1;;;;5834:7;5815:38;5843:5;5850:2;5815:38;;;;;;;:::i;7191:229::-:0;7283:4;7299:15;7317:16;7330:2;7317:12;:16::i;:::-;7350:26;;;;:17;:26;;;;;7299:34;;-1:-1:-1;7350:43:0;;;;;7394:18;7407:4;7394:12;:18::i;:::-;7350:63;;;;;;;;;;;-1:-1:-1;7350:63:0;;;;;7191:229;-1:-1:-1;;;;7191:229:0:o;7652:148::-;7744:6;;-1:-1:-1;;;;;7770:22:0;;;7721:4;7770:22;;;:18;:22;;;;;;;7744:49;;-1:-1:-1;;;7744:49:0;;7721:4;;7744:6;;;;;:18;;:49;;7763:5;;7744:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7737:56;7652:148;-1:-1:-1;;;7652:148:0:o;1684:145:2:-;1275:12;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;1790:1:::1;1774:6:::0;;1753:40:::1;::::0;-1:-1:-1;;;;;1774:6:2;;::::1;::::0;1753:40:::1;::::0;1790:1;;1753:40:::1;1820:1;1803:19:::0;;-1:-1:-1;;;;;;1803:19:2::1;::::0;;1684:145::o;1061:77::-;1099:7;1125:6;-1:-1:-1;;;;;1125:6:2;1061:77;:::o;2399:123:0:-;1275:12:2;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;2472:6:0::1;:43:::0;;-1:-1:-1;;;;;;2472:43:0::1;-1:-1:-1::0;;;;;2472:43:0;;;::::1;::::0;;;::::1;::::0;;2399:123::o;2528:100::-;1275:12:2;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;2599:10:0::1;:22:::0;;-1:-1:-1;;;;;;2599:22:0::1;-1:-1:-1::0;;;;;2599:22:0;;;::::1;::::0;;;::::1;::::0;;2528:100::o;8641:126::-;-1:-1:-1;;;;;8734:26:0;8708:7;8734:26;;;:18;:26;;;;;;;8641:126::o;6430:141::-;-1:-1:-1;;;;;6534:24:0;6493:4;6534:24;;;:18;:24;;;;;;;;;6516:43;;:17;:43;;;;;:48;;;;;;;6430:141::o;4034:321::-;1449:6;;-1:-1:-1;;;;;1449:6:0;:27;1477:12;:10;:12::i;:::-;1449:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1553:12;:10;:12::i;:::-;-1:-1:-1;;;;;1494:71:0;1519:10;;;;;;;;;-1:-1:-1;;;;;1519:10:0;-1:-1:-1;;;;;1494:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1494:71:0;;1449:116;1441:170;;;;-1:-1:-1;;;1441:170:0;;;;;;;:::i;:::-;4131:15:::1;4149:18;:30;4168:7;4176:1;4168:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4149:30:0::1;-1:-1:-1::0;;;;;4149:30:0::1;;;;;;;;;;;;;4131:48;;4194:9;4189:160;4213:7;:14;4209:1;:18;4189:160;;;4255:18;:30;4274:7;4282:1;4274:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4255:30:0::1;-1:-1:-1::0;;;;;4255:30:0::1;;;;;;;;;;;;4248:37;;;4318:7;4304:34;4327:7;4335:1;4327:10;;;;;;;;;;;;;;4304:34;;;;;;:::i;:::-;;;;;;;;4229:3;;4189:160;;;;1621:1;4034:321:::0;:::o;3690:258::-;1264:6;;-1:-1:-1;;;;;1264:6:0;:27;1292:12;:10;:12::i;:::-;1264:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1256:110;;;;-1:-1:-1;;;1256:110:0;;;;;;;:::i;:::-;3781:15:::1;3799:16;3812:2;3799:12;:16::i;:::-;3781:34;;3825:23;3845:2;3825:19;:23::i;:::-;-1:-1:-1::0;;;;;3858:26:0;::::1;;::::0;;;:18:::1;:26;::::0;;;;;;:36;;;3909:32;3887:7;;3909:32:::1;::::0;::::1;::::0;3877:6;;3938:2;;3909:32:::1;:::i;:::-;;;;;;;;1376:1;3690:258:::0;;:::o;1978:240:2:-;1275:12;:10;:12::i;:::-;1265:6;;-1:-1:-1;;;;;1265:6:2;;;:22;;;1257:67;;;;-1:-1:-1;;;1257:67:2;;;;;;;:::i;:::-;-1:-1:-1;;;;;2066:22:2;::::1;2058:73;;;;-1:-1:-1::0;;;2058:73:2::1;;;;;;;:::i;:::-;2167:6;::::0;;2146:38:::1;::::0;-1:-1:-1;;;;;2146:38:2;;::::1;::::0;2167:6;::::1;::::0;2146:38:::1;::::0;::::1;2194:6;:17:::0;;-1:-1:-1;;;;;;2194:17:2::1;-1:-1:-1::0;;;;;2194:17:2;;;::::1;::::0;;;::::1;::::0;;1978:240::o;3140:412:0:-;3227:2;1684:15;1702:16;1715:2;1702:12;:16::i;:::-;1736:6;;1684:34;;-1:-1:-1;;;;;;1736:6:0;:18;1755:12;:10;:12::i;:::-;1769:7;1736:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:116;;;;1840:12;:10;:12::i;:::-;-1:-1:-1;;;;;1781:71:0;1806:10;;;;;;;;;-1:-1:-1;;;;;1806:10:0;-1:-1:-1;;;;;1781:53:0;;:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1781:71:0;;1736:116;1728:180;;;;-1:-1:-1;;;1728:180:0;;;;;;;:::i;:::-;3241:15:::1;3259:16;3272:2;3259:12;:16::i;:::-;3293:26;::::0;;;:17:::1;:26;::::0;;;;:31;:26;;-1:-1:-1;3293:31:0::1;::::0;::::1;;;3285:86;;;;-1:-1:-1::0;;;3285:86:0::1;;;;;;;:::i;:::-;3386:9;3381:165;3405:7;:14;3401:1;:18;3381:165;;;3473:7;3440:18;:30;3459:7;3467:1;3459:10;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3440:30:0::1;-1:-1:-1::0;;;;;3440:30:0::1;;;;;;;;;;;;:40;;;;3511:7;3499:36;3520:7;3528:1;3520:10;;;;;;;;;;;;;;3532:2;3499:36;;;;;;;:::i;:::-;;;;;;;;3421:3;;3381:165;;;;1918:1;3140:412:::0;;;;:::o;8345:123::-;8408:7;8455:4;8444:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;8434:27;;;;;;8427:34;;8345:123;;;:::o;590:104:1:-;677:10;590:104;:::o;301:707:-1:-;;418:3;411:4;403:6;399:17;395:27;385:2;;-1:-1;;426:12;385:2;473:6;460:20;495:80;510:64;567:6;510:64;:::i;:::-;495:80;:::i;:::-;603:21;;;486:89;-1:-1;647:4;660:14;;;;635:17;;;749;;;740:27;;;;737:36;-1:-1;734:2;;;786:1;;776:12;734:2;811:1;796:206;821:6;818:1;815:13;796:206;;;85:6;72:20;97:33;124:5;97:33;:::i;:::-;889:50;;953:14;;;;981;;;;843:1;836:9;796:206;;;800:14;;;;;378:630;;;;:::o;2022:442::-;;2124:3;2117:4;2109:6;2105:17;2101:27;2091:2;;-1:-1;;2132:12;2091:2;2179:6;2166:20;19139:18;19131:6;19128:30;19125:2;;;-1:-1;;19161:12;19125:2;2201:65;19234:9;19215:17;;-1:-1;;19211:33;19302:4;19292:15;2201:65;:::i;:::-;2192:74;;2286:6;2279:5;2272:21;2390:3;19302:4;2381:6;2314;2372:16;;2369:25;2366:2;;;2407:1;;2397:12;2366:2;21289:6;19302:4;2314:6;2310:17;19302:4;2348:5;2344:16;21266:30;21345:1;21327:16;;;19302:4;21327:16;21320:27;2348:5;2084:380;-1:-1;;2084:380::o;2472:241::-;;2576:2;2564:9;2555:7;2551:23;2547:32;2544:2;;;-1:-1;;2582:12;2544:2;85:6;72:20;97:33;124:5;97:33;:::i;2720:263::-;;2835:2;2823:9;2814:7;2810:23;2806:32;2803:2;;;-1:-1;;2841:12;2803:2;226:6;220:13;238:33;265:5;238:33;:::i;2990:366::-;;;3111:2;3099:9;3090:7;3086:23;3082:32;3079:2;;;-1:-1;;3117:12;3079:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3169:63;-1:-1;3269:2;3308:22;;72:20;97:33;72:20;97:33;:::i;:::-;3277:63;;;;3073:283;;;;;:::o;3363:377::-;;3492:2;3480:9;3471:7;3467:23;3463:32;3460:2;;;-1:-1;;3498:12;3460:2;3556:17;3543:31;3594:18;3586:6;3583:30;3580:2;;;-1:-1;;3616:12;3580:2;3646:78;3716:7;3707:6;3696:9;3692:22;3646:78;:::i;:::-;3636:88;3454:286;-1:-1;;;;3454:286::o;3747:257::-;;3859:2;3847:9;3838:7;3834:23;3830:32;3827:2;;;-1:-1;;3865:12;3827:2;1830:6;1824:13;21948:5;20595:13;20588:21;21926:5;21923:32;21913:2;;-1:-1;;21959:12;4011:366;;;4132:2;4120:9;4111:7;4107:23;4103:32;4100:2;;;-1:-1;;4138:12;4100:2;-1:-1;;1951:20;;;4290:2;4329:22;;;1951:20;;-1:-1;4094:283::o;4384:347::-;;4498:2;4486:9;4477:7;4473:23;4469:32;4466:2;;;-1:-1;;4504:12;4466:2;4562:17;4549:31;4600:18;4592:6;4589:30;4586:2;;;-1:-1;;4622:12;4586:2;4652:63;4707:7;4698:6;4687:9;4683:22;4652:63;:::i;4738:472::-;;;4869:2;4857:9;4848:7;4844:23;4840:32;4837:2;;;-1:-1;;4875:12;4837:2;4933:17;4920:31;4971:18;4963:6;4960:30;4957:2;;;-1:-1;;4993:12;4957:2;5023:63;5078:7;5069:6;5058:9;5054:22;5023:63;:::i;:::-;5013:73;;;5123:2;5166:9;5162:22;72:20;97:33;124:5;97:33;:::i;5217:608::-;;;5373:2;5361:9;5352:7;5348:23;5344:32;5341:2;;;-1:-1;;5379:12;5341:2;5437:17;5424:31;5475:18;;5467:6;5464:30;5461:2;;;-1:-1;;5497:12;5461:2;5527:63;5582:7;5573:6;5562:9;5558:22;5527:63;:::i;:::-;5517:73;;5655:2;5644:9;5640:18;5627:32;5613:46;;5475:18;5671:6;5668:30;5665:2;;;-1:-1;;5701:12;5665:2;;5731:78;5801:7;5792:6;5781:9;5777:22;5731:78;:::i;:::-;5721:88;;;5335:490;;;;;:::o;5832:628::-;;;5998:2;5986:9;5977:7;5973:23;5969:32;5966:2;;;-1:-1;;6004:12;5966:2;6062:17;6049:31;6100:18;;6092:6;6089:30;6086:2;;;-1:-1;;6122:12;6086:2;6152:63;6207:7;6198:6;6187:9;6183:22;6152:63;:::i;:::-;6142:73;;6280:2;;;;6269:9;6265:18;6252:32;6100:18;6296:6;6293:30;6290:2;;;-1:-1;;6326:12;6290:2;6412:22;;;-1:-1;1153:4;1141:17;;1137:27;-1:-1;1127:2;;-1:-1;;1168:12;1127:2;1215:6;1202:20;1237:90;1252:74;1319:6;1252:74;:::i;1237:90::-;1355:21;;;1412:14;;;;1387:17;;;-1:-1;1492:243;1517:6;1514:1;1511:13;1492:243;;;1624:47;1667:3;6280:2;1600:3;1587:17;1391:6;1575:30;;1624:47;:::i;:::-;1612:60;;1686:14;;;;1714;;;;1539:1;1532:9;1492:243;;;-1:-1;5960:500;;6346:98;;-1:-1;5960:500;-1:-1;;;;;;;5960:500::o;6467:578::-;;;6608:2;6596:9;6587:7;6583:23;6579:32;6576:2;;;-1:-1;;6614:12;6576:2;6672:17;6659:31;6710:18;;6702:6;6699:30;6696:2;;;-1:-1;;6732:12;6696:2;6762:63;6817:7;6808:6;6797:9;6793:22;6762:63;:::i;:::-;6752:73;;6890:2;6879:9;6875:18;6862:32;6848:46;;6710:18;6906:6;6903:30;6900:2;;;-1:-1;;6936:12;6900:2;;6966:63;7021:7;7012:6;7001:9;6997:22;6966:63;:::i;8719:327::-;;8854:5;19605:12;20041:6;20036:3;20029:19;-1:-1;21434:101;21448:6;21445:1;21442:13;21434:101;;;20078:4;21515:11;;;;;21509:18;21496:11;;;;;21489:39;21463:10;21434:101;;;21550:6;21547:1;21544:13;21541:2;;;-1:-1;20078:4;21606:6;20073:3;21597:16;;21590:27;21541:2;-1:-1;19234:9;21706:14;-1:-1;;21702:28;9002:39;;;;20078:4;9002:39;;8801:245;-1:-1;;8801:245::o;12162:222::-;-1:-1;;;;;20762:54;;;;7474:37;;12289:2;12274:18;;12260:124::o;12636:349::-;-1:-1;;;;;20762:54;;;;7333:58;;12971:2;12956:18;;8670:37;12799:2;12784:18;;12770:215::o;13332:421::-;-1:-1;;;;;20762:54;;7474:37;;13507:2;13625;13610:18;;13603:48;;;13332:421;;13665:78;;13492:18;;13729:6;13665:78;:::i;13760:609::-;;14005:2;13994:9;13990:18;14005:2;14026:17;14019:47;14080:128;7775:5;19605:12;20041:6;20036:3;20029:19;20069:14;13994:9;20069:14;7787:103;;20078:4;;;20069:14;20078:4;7947:6;7943:17;13994:9;7934:27;;20078:4;8042:5;19449:14;-1:-1;8081:360;8106:6;8103:1;8100:13;8081:360;;;8158:20;;13994:9;8162:4;8158:20;;8153:3;8146:33;7174:66;7236:3;8213:6;8207:13;7174:66;:::i;:::-;8420:14;;;;8227:92;-1:-1;19874:14;;;;8128:1;8121:9;8081:360;;;8085:14;;14256:9;14250:4;14246:20;20078:4;14230:9;14226:18;14219:48;14281:78;14354:4;14345:6;14281:78;:::i;:::-;14273:86;13976:393;-1:-1;;;;;;;;13976:393::o;14376:210::-;20595:13;;20588:21;8553:34;;14497:2;14482:18;;14468:118::o;14593:222::-;8670:37;;;14720:2;14705:18;;14691:124::o;14822:310::-;;14969:2;14990:17;14983:47;15044:78;14969:2;14958:9;14954:18;15108:6;15044:78;:::i;15139:416::-;15339:2;15353:47;;;9632:2;15324:18;;;20029:19;9668:34;20069:14;;;9648:55;9737:26;9723:12;;;9716:48;9783:12;;;15310:245::o;15562:416::-;15762:2;15776:47;;;10034:2;15747:18;;;20029:19;10070:34;20069:14;;;10050:55;-1:-1;;;10125:12;;;10118:30;10167:12;;;15733:245::o;15985:416::-;16185:2;16199:47;;;10418:2;16170:18;;;20029:19;10454:34;20069:14;;;10434:55;-1:-1;;;10509:12;;;10502:43;10564:12;;;16156:245::o;16408:416::-;16608:2;16622:47;;;10815:2;16593:18;;;20029:19;10851:34;20069:14;;;10831:55;-1:-1;;;10906:12;;;10899:34;10952:12;;;16579:245::o;16831:416::-;17031:2;17045:47;;;17016:18;;;20029:19;11239:34;20069:14;;;11219:55;11293:12;;;17002:245::o;17254:416::-;17454:2;17468:47;;;11544:2;17439:18;;;20029:19;11580:34;20069:14;;;11560:55;-1:-1;;;11635:12;;;11628:33;11680:12;;;17425:245::o;17677:416::-;17877:2;17891:47;;;11931:2;17862:18;;;20029:19;11967:34;20069:14;;;11947:55;12036:34;12022:12;;;12015:56;-1:-1;;;12091:12;;;12084:33;12136:12;;;17848:245::o;18100:256::-;18162:2;18156:9;18188:17;;;18263:18;18248:34;;18284:22;;;18245:62;18242:2;;;18320:1;;18310:12;18242:2;18162;18329:22;18140:216;;-1:-1;18140:216::o;18363:304::-;;18522:18;18514:6;18511:30;18508:2;;;-1:-1;;18544:12;18508:2;-1:-1;18589:4;18577:17;;;18642:15;;18445:222::o;21743:117::-;-1:-1;;;;;20762:54;;21802:35;;21792:2;;21851:1;;21841:12;21792:2;21786:74;:::o

Swarm Source

ipfs://a76a39ff0738fe52adc3c2d3e0c55bd17b184e82dd36d69d9855c850b6c7d586

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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.