ETH Price: $2,777.56 (+1.47%)

Contract

0x84397B2da219d83EBf575B8a61d05A8D8D3BAAfd
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Update Organizat...182952042023-10-07 1:02:59504 days ago1696640579IN
0x84397B2d...D8D3BAAfd
0 ETH0.000610436
Del Organization...167356862023-03-01 18:56:11723 days ago1677696971IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356852023-03-01 18:55:59723 days ago1677696959IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356852023-03-01 18:55:59723 days ago1677696959IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356852023-03-01 18:55:59723 days ago1677696959IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356842023-03-01 18:55:47723 days ago1677696947IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356842023-03-01 18:55:47723 days ago1677696947IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356842023-03-01 18:55:47723 days ago1677696947IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356832023-03-01 18:55:35723 days ago1677696935IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356832023-03-01 18:55:35723 days ago1677696935IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356832023-03-01 18:55:35723 days ago1677696935IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Del Organization...167356822023-03-01 18:55:23723 days ago1677696923IN
0x84397B2d...D8D3BAAfd
0 ETH0.0013348442
Set Organization...167337212023-03-01 12:18:11724 days ago1677673091IN
0x84397B2d...D8D3BAAfd
0 ETH0.0189198621
Set Organization...167337182023-03-01 12:17:35724 days ago1677673055IN
0x84397B2d...D8D3BAAfd
0 ETH0.0207217523
Update Organizat...167331262023-03-01 10:17:35724 days ago1677665855IN
0x84397B2d...D8D3BAAfd
0 ETH0.0009893225
Update Organizat...167327762023-03-01 9:06:47724 days ago1677661607IN
0x84397B2d...D8D3BAAfd
0 ETH0.0014414433
Set Organization...167321432023-03-01 6:59:11724 days ago1677653951IN
0x84397B2d...D8D3BAAfd
0 ETH0.0162170218
Set Organization...167271432023-02-28 14:06:35725 days ago1677593195IN
0x84397B2d...D8D3BAAfd
0 ETH0.0270283830
Set Organization...167268382023-02-28 13:04:59725 days ago1677589499IN
0x84397B2d...D8D3BAAfd
0 ETH0.0275413830
Del Individual C...159729912022-11-15 4:17:11830 days ago1668485831IN
0x84397B2d...D8D3BAAfd
0 ETH0.0006123618
Set Individual C...158241842022-10-25 9:24:59851 days ago1666689899IN
0x84397B2d...D8D3BAAfd
0 ETH0.0003566411
Set Individual C...158019702022-10-22 6:52:11854 days ago1666421531IN
0x84397B2d...D8D3BAAfd
0 ETH0.0005835918
Set Individual C...158019702022-10-22 6:52:11854 days ago1666421531IN
0x84397B2d...D8D3BAAfd
0 ETH0.0005187516
Set Individual C...157978112022-10-21 16:55:59855 days ago1666371359IN
0x84397B2d...D8D3BAAfd
0 ETH0.0011023434
Set Individual C...157822232022-10-19 12:42:35857 days ago1666183355IN
0x84397B2d...D8D3BAAfd
0 ETH0.0008429726
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
167337212023-03-01 12:18:11724 days ago1677673091
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
167337182023-03-01 12:17:35724 days ago1677673055
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
167321432023-03-01 6:59:11724 days ago1677653951
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
167271432023-02-28 14:06:35725 days ago1677593195
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
167268382023-02-28 13:04:59725 days ago1677589499
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
157808972022-10-19 8:15:35857 days ago1666167335
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
131964442021-09-10 6:36:281261 days ago1631255788
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
131964432021-09-10 6:36:211261 days ago1631255781
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
131964432021-09-10 6:36:211261 days ago1631255781
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
131964422021-09-10 6:36:131261 days ago1631255773
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
123457562021-05-01 3:01:361393 days ago1619838096
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
123457562021-05-01 3:01:361393 days ago1619838096
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
119510702021-03-01 7:47:121454 days ago1614584832
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755452020-12-18 6:28:451527 days ago1608272925
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755432020-12-18 6:27:411527 days ago1608272861
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755432020-12-18 6:27:411527 days ago1608272861
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755432020-12-18 6:27:411527 days ago1608272861
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
114755432020-12-18 6:27:411527 days ago1608272861
0x84397B2d...D8D3BAAfd
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CertificationRegistry

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-08-21
*/

pragma solidity ^0.5.8;

// File: contracts/IndividualCertification.sol

/**
  * @title   Individual Certification Contract
  * @author  Rosen GmbH
  *
  * This contract represents the individual certificate.
  */
contract IndividualCertification {
    address public registryAddress;
    bytes32 public b0;
    bytes32 public b1;

    constructor(bytes32 _b0, bytes32 _b1)
      public
    {
        registryAddress = msg.sender;
        b0 = _b0;
        b1 = _b1;
    }
    
    function updateHashValue(bytes32 _b0, bytes32 _b1)
      public
      onlyRegistry
    {
        b0 = _b0;
        b1 = _b1;
    }

    function changeRegistry(address newRegistryAddress)
      public
      onlyRegistry
    {
        registryAddress = newRegistryAddress;
    }

    function hashValue()
      public
      view
    returns (bytes32, bytes32)
    {
        return (b0, b1);
    }
    modifier onlyRegistry() {
        require(msg.sender == registryAddress, "Call invoked from incorrect address");
        _;
    }
    /**
  * Extinguish this certificate.
  *
  * This can be done by the same certifier contract which has created
  * the certificate in the first place only.
  */
    function deleteCertificate() public onlyRegistry {
        selfdestruct(msg.sender);
    }
}

// File: contracts/OrganizationalCertification.sol

/**
  * @title   Certificate Contract
  * @author  Rosen HCMC Lab
  *
  * Each instance of this contract represents a single certificate.
  */
contract OrganizationalCertification  {

    /**
      * Address of CertificatioRegistry contract this certificate belongs to.
      */
    address public registryAddress;

    string public CompanyName;
    string public Standard;
    string public CertificateId;
    string public IssueDate;
    string public ExpireDate;
    string public Scope;
    string public CertificationBodyName;

    /**
      * Constructor.
      *
      * @param _CompanyName Name of company name the certificate is IssueDate to.
      * @param _Standard The Standard.
      * @param _CertificateId Unique identifier of the certificate.
      * @param _IssueDate Timestamp (Unix epoch) when the certificate was IssueDate.
      * @param _ExpireDate Timestamp (Unix epoch) when the certificate will expire.
      * @param _Scope The scope of the certificate.
      * @param _CertificationBodyName The issuer of the certificate.
      */
    constructor(
        string memory _CompanyName,
        string memory _Standard,
        string memory _CertificateId,
        string memory _IssueDate,
        string memory _ExpireDate,
        string memory _Scope,
        string memory _CertificationBodyName)
        public
    {
        registryAddress = msg.sender;
        CompanyName = _CompanyName;
        Standard = _Standard;
        CertificateId = _CertificateId;
        IssueDate = _IssueDate;
        ExpireDate = _ExpireDate;
        Scope = _Scope;
        CertificationBodyName = _CertificationBodyName;
    }

    function updateCertificate(
        string memory _CompanyName,
        string memory _Standard,
        string memory _IssueDate,
        string memory _ExpireDate,
        string memory _Scope)
        public
        onlyRegistry
    {
        CompanyName = _CompanyName;
        Standard = _Standard;
        IssueDate = _IssueDate;
        ExpireDate = _ExpireDate;
        Scope = _Scope;
    }

    function changeRegistry(address newRegistryAddress)
        public
        onlyRegistry
    {
        registryAddress = newRegistryAddress;
    }

    modifier onlyRegistry() {
        require(msg.sender == registryAddress, "Call invoked from incorrect address");
        _;
    }
    /**
      * Extinguish this certificate.
      *
      * This can be done the same certifier contract which has created
      * the certificate in the first place only.
      */
    function deleteCertificate() public onlyRegistry {
        selfdestruct(msg.sender);
    }

}

// File: contracts\CertificationRegistry.sol

/**
  * @title   Certification Contract
  * @author  Rosen HCMC Lab
  * This contract represents the singleton certificate registry.
  */

contract CertificationRegistry {

    /** @dev Dictionary of all Certificate Contracts issued by the Organization.
             Stores the Organization ID and which Certificates they issued.
             Stores the Certification key derived from the keccak256(CertificateOriginalId) and stores the
             address where the corresponding Certificate is stored.
             Mapping(keccak256(CertificateOriginalId, organizationID) => certAddress))
             */
    mapping (bytes32 => address) public CertificateAddresses;
    mapping (bytes32 => address) public RosenCertificateAddresses;

    /** @dev Dictionary that stores which addresses are owntrated by Certification administrators and
             which Organization those Certification adminisors belong to
             keccak256 (adminAddress, organizationID) => bool
     */
    mapping (bytes32  => bool) public CertAdmins;

    /** @dev Dictionary that stores which addresses are owned by ROSEN Certification administrators
             Mapping(adminAddress => bool)
    */
    mapping (address => bool) public RosenCertAdmins;

    /** @dev stores the address of the Global Administrator */
    address public GlobalAdmin;


    event OrganizationCertificationSet(address indexed contractAddress);
    event OrganizationCertificationUpdated(address indexed contractAddress);
    event IndividualCertificationSet(address indexed contractAddress);
    event IndividualCertificationUpdated(address indexed contractAddress);
    event CertificationDeleted(address indexed contractAddress);
    event CertAdminAdded(address indexed account);
    event CertAdminDeleted(address account);
    event GlobalAdminChanged(address indexed account);
    event Migration(address indexed newRegistryAddress);
    /**
      * Constructor.
      *
      * The creator of this contract becomes the global administrator.
      */
    constructor() public {
        GlobalAdmin = msg.sender;
    }

    // Functions

    /**
      * Create a new certificate contract.
      * This can be done by an certificate administrator only.
      *
      * @param _OriginalCertificateId  Globally uniqueID composed by BEC service.
      * @param _CompanyName Name of company name the certificate is issued to.
      * @param _Standard The norm.
      * @param _CertificateId Certificate physical ID
      * @param _IssueDate Timestamp (Unix epoch) when the certificate was issued.
      * @param _ExpireDate Timestamp (Unix epoch) when the certificate will expire.
      * @param _Scope The scope of the certificate.
      * @param _CertificationBodyName The issuer of the certificate.
      */
    function setOrganizationCertificate(
        string memory _OriginalCertificateId,
        string memory _CompanyName,
        string memory _Standard,
        string memory _CertificateId,
        string memory _IssueDate,
        string memory _ExpireDate,
        string memory _Scope,
        string memory _CertificationBodyName
    )
    public
    onlyRosenCertAdmin
    {
        bytes32 certKey = keccak256(abi.encodePacked(_OriginalCertificateId));

        OrganizationalCertification orgCert = new OrganizationalCertification(
            _CompanyName,
            _Standard,
            _CertificateId,
            _IssueDate,
            _ExpireDate,
            _Scope,
            _CertificationBodyName);

        RosenCertificateAddresses[certKey] = address(orgCert);
        emit OrganizationCertificationSet(address(orgCert));
    }

     /**
      * Update an organization certificate contract.
      * This can be done by an certificate administrator only.
      *
      * @param _OriginalCertificateId  Globally uniqueID composed by BEC service.
      * @param _CompanyName Name of company name the certificate is issued to.
      * @param _Standard The norm.
      * @param _IssueDate Timestamp (Unix epoch) when the certificate was issued.
      * @param _ExpireDate Timestamp (Unix epoch) when the certificate will expire.
      * @param _Scope The scope of the certificate.
      */
    function updateOrganizationCertificate(
        string memory _OriginalCertificateId,
        string memory _CompanyName,
        string memory _Standard,
        string memory _IssueDate,
        string memory _ExpireDate,
        string memory _Scope)
        public
    onlyRosenCertAdmin
    {
        bytes32 certKey = keccak256(abi.encodePacked(_OriginalCertificateId));
        address certAddress = RosenCertificateAddresses[certKey];
        OrganizationalCertification(certAddress).updateCertificate(
            _CompanyName,
            _Standard,
            _IssueDate,
            _ExpireDate,
            _Scope);

        emit OrganizationCertificationUpdated(certAddress);
    }
    function setIndividualCertificate(
        bytes32 b0,
        bytes32 b1,
        string memory _OriginalCertificateId,
        string memory _organizationID)
        public
        onlyPrivilegedCertAdmin(_organizationID)
        entryMustNotExist(_OriginalCertificateId, _organizationID)
    {

        IndividualCertification individualCert = new IndividualCertification(b0, b1);
        CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)] = address(individualCert);
        emit IndividualCertificationSet(address(individualCert));
    }

    function updateIndividualCertificate(bytes32 b0, bytes32 b1, string memory _OriginalCertificateId, string memory _organizationID)
        public
        onlyPrivilegedCertAdmin(_organizationID)
        duplicatedHashGuard(b0, b1, _OriginalCertificateId, _organizationID)
    {
		address certAddr = CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)];
        IndividualCertification(certAddr).updateHashValue(b0, b1);
        emit IndividualCertificationUpdated(certAddr);
    }

    /**
      * Delete an existing certificate.
      *
      * This can be done by an certificate administrator only.
      *
      * @param _OriginalCertificateId Unique identifier of the certificate to delete.
      */
    function delOrganizationCertificate(string memory _OriginalCertificateId)
        public
        onlyRosenCertAdmin
    {
		bytes32 certKey = keccak256(abi.encodePacked(_OriginalCertificateId));
        OrganizationalCertification(RosenCertificateAddresses[certKey]).deleteCertificate();

        emit CertificationDeleted(RosenCertificateAddresses[certKey]);
        delete RosenCertificateAddresses[certKey];
    }
    /**
      * Delete an exisiting certificate.
      *
      * This can be done by an certificate administrator only.
      *
      * @param _OriginalCertificateId Unique identifier of the certificate to delete.
      * @param _organizationID UUID of organization tenantID.
      */
    function delIndividualCertificate(
        string memory _OriginalCertificateId,
        string memory _organizationID)
        public
        onlyPrivilegedCertAdmin(_organizationID)
    {
		bytes32 certKey = toCertificateKey(_OriginalCertificateId,_organizationID);
        IndividualCertification(CertificateAddresses[certKey]).deleteCertificate();
        emit CertificationDeleted(CertificateAddresses[certKey]);
        delete CertificateAddresses[certKey];

    }
    /**
      * Register a certificate administrator.
      *
      * This can be done by the global administrator only.
      *
      * @param _CertAdmin Address of certificate administrator to be added.
      * @param _organizationID UUID of organization tenantID.
      */
    function addCertAdmin(address _CertAdmin, string memory _organizationID)
        public
        onlyGlobalAdmin
    {
        CertAdmins[toCertAdminKey(_CertAdmin, _organizationID)] = true;
        emit CertAdminAdded(_CertAdmin);
    }

    /**
      * Delete a certificate administrator.
      *
      * This can be done by the global administrator only.
      *
      * @param _CertAdmin Address of certificate administrator to be removed.
      * @param _organizationID UUID of organization tenantID.
      */
    function delCertAdmin(address _CertAdmin, string memory _organizationID)
    public
    onlyGlobalAdmin
    {
        delete CertAdmins[toCertAdminKey(_CertAdmin, _organizationID)];
        emit CertAdminDeleted(_CertAdmin);
    }

    /**
    * Register a ROSEN certificate administrator.
    *
    * This can be done by the global administrator only.
    *
    * @param _CertAdmin Address of certificate administrator to be added.
    */
    function addRosenCertAdmin(address _CertAdmin) public onlyGlobalAdmin {
        RosenCertAdmins[_CertAdmin] = true;
        emit CertAdminAdded(_CertAdmin);
    }

    /**
      * Delete a ROSEN certificate administrator.
      *
      * This can be done by the global administrator only.
      *
      * @param _CertAdmin Address of certificate administrator to be removed.
      */
    function delRosenCertAdmin(address _CertAdmin) public onlyGlobalAdmin {
        delete RosenCertAdmins[_CertAdmin];
        emit CertAdminDeleted(_CertAdmin);
    }

    /**
      * Change the address of the global administrator.
      *
      * This can be done by the global administrator only.
      *
      * @param _GlobalAdmin Address of new global administrator to be set.
      */
    function changeGlobalAdmin(address _GlobalAdmin) public onlyGlobalAdmin {
        GlobalAdmin=_GlobalAdmin;
        emit GlobalAdminChanged(_GlobalAdmin);

    }

    // Constant Functions

    /**
      * Determines the address of a certificate contract.
      *
      * @param _organizationID UUID of organization tenantID.
      * @param _OriginalCertificateId Unique certificate identifier.
      * @return Address of certification contract.
      */
    function getCertAddressByID(string memory _organizationID, string memory _OriginalCertificateId)
        public
        view
        returns (address)
    {
        return CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)];
    }

    /**
      * Determines the address of a certificate contract.
      *
      * @param _OriginalCertificateId Unique certificate identifier.
      * @return Address of certification contract.
      */
    function getOrganizationalCertAddressByID(string memory _OriginalCertificateId)
        public
        view
        returns (address)
    {
        return RosenCertificateAddresses[keccak256(abi.encodePacked(_OriginalCertificateId))];
    }


    function getCertAdminByOrganizationID(address _certAdmin, string memory _organizationID)
        public
        view
        returns (bool)
    {
        return CertAdmins[toCertAdminKey(_certAdmin, _organizationID)];
    }

    /**
      * Derives an unique key from a certificate identifier to be used in the
      * global mapping CertificateAddresses.
      *
      * This is necessary due to certificate identifiers are of type string
      * which cannot be used as dictionary keys.
      *
      * @param _OriginalCertificateId The unique certificate identifier.
      * @param _organizationID UUID of organization tenantID.
      * @return The key derived from certificate identifier.
      */
    function toCertificateKey(string memory _OriginalCertificateId, string memory _organizationID)
        public
        pure
        returns (bytes32)
    {
        return keccak256(abi.encodePacked(_OriginalCertificateId, _organizationID));
    }


    function toCertAdminKey(address _certAdmin, string memory _organizationID)
        public
        pure
        returns (bytes32)
    {
        return keccak256(abi.encodePacked(_certAdmin, _organizationID));
    }

    /**
     * Use conjunction with updateIndividualCertMapping to migrate IndividualCertication contract to new CertificationRegistry
     */
    function migrateIndividualCertificate(address _newRegistryAddress, string memory _OriginalCertificateId, string memory _organizationID)
        public
        onlyGlobalAdmin
    {
        bytes32 certKey = toCertificateKey(_OriginalCertificateId, _organizationID);
        address certAddress = CertificateAddresses[certKey];
        IndividualCertification(certAddress).changeRegistry(_newRegistryAddress);
        emit Migration(_newRegistryAddress);
    }

    /**
     * Use conjunction with updateOrganizationCertMapping to migrate OrganizationalCertification contract to new CertificationRegistry
     */
    function migrateOrganizationCertificate(address _newRegistryAddress, string memory _OriginalCertificateId)
        public
        onlyGlobalAdmin
    {
        bytes32 certKey = keccak256(abi.encodePacked(_OriginalCertificateId));
        address certAddress = RosenCertificateAddresses[certKey];
        IndividualCertification(certAddress).changeRegistry(_newRegistryAddress);
        emit Migration(_newRegistryAddress);
    }

    function updateOrganizationCertMapping(address certAddress, string memory _OriginalCertificateId)
        public
        onlyRosenCertAdmin
    {
        RosenCertificateAddresses[keccak256(abi.encodePacked(_OriginalCertificateId))] = certAddress;
    }

    function updateIndividualCertMapping(address certAddress, string memory _OriginalCertificateId, string memory _organizationID)
        public
        onlyPrivilegedCertAdmin(_organizationID)
    {
        CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)] = certAddress;
    }

    // Modifiers

    /**
      * Ensure that only the global administrator is able to perform.
      */
    modifier onlyGlobalAdmin() {
        require(msg.sender == GlobalAdmin, "Access denied, require global admin account");
        _;
    }

    /**
      * Ensure that only a privileged certificate administrator is able to perform.
      */
    modifier onlyPrivilegedCertAdmin(string memory organizationID) {
        require(CertAdmins[toCertAdminKey(msg.sender, organizationID)] || RosenCertAdmins[msg.sender], 
        "Access denied, Please use function with certificate admin privileges");
        _;
    }

    modifier onlyRosenCertAdmin() {
        require(RosenCertAdmins[msg.sender], "Access denied, Please use function with certificate admin privileges");
        _;
    }
    /**
     * Ensure individual entry should not exist, prevent re-entrancy
     */
    modifier entryMustNotExist(string memory _OriginalCertificateId, string memory _organizationID) {
        require(CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)] == address(0), "Entry existed exception!");
        _;
    }
    modifier duplicatedHashGuard(
      bytes32 _b0,
      bytes32 _b1,
      string memory _OriginalCertificateId,
      string memory _organizationID) {

        IndividualCertification individualCert = IndividualCertification(CertificateAddresses[toCertificateKey(_OriginalCertificateId, _organizationID)]);
        require(keccak256(abi.encodePacked(_b0, _b1)) != keccak256(abi.encodePacked(individualCert.b0(), individualCert.b1())),
        "Duplicated hash-value exception!");
        _;
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_GlobalAdmin","type":"address"}],"name":"changeGlobalAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_certAdmin","type":"address"},{"name":"_organizationID","type":"string"}],"name":"getCertAdminByOrganizationID","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_OriginalCertificateId","type":"string"}],"name":"delOrganizationCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"toCertificateKey","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"certAddress","type":"address"},{"name":"_OriginalCertificateId","type":"string"}],"name":"updateOrganizationCertMapping","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"CertAdmins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_CertAdmin","type":"address"}],"name":"delRosenCertAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_CertAdmin","type":"address"}],"name":"addRosenCertAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newRegistryAddress","type":"address"},{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"migrateIndividualCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_organizationID","type":"string"},{"name":"_OriginalCertificateId","type":"string"}],"name":"getCertAddressByID","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_CertAdmin","type":"address"},{"name":"_organizationID","type":"string"}],"name":"addCertAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"delIndividualCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"GlobalAdmin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_certAdmin","type":"address"},{"name":"_organizationID","type":"string"}],"name":"toCertAdminKey","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"RosenCertificateAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_CertAdmin","type":"address"},{"name":"_organizationID","type":"string"}],"name":"delCertAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_OriginalCertificateId","type":"string"}],"name":"getOrganizationalCertAddressByID","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRegistryAddress","type":"address"},{"name":"_OriginalCertificateId","type":"string"}],"name":"migrateOrganizationCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"RosenCertAdmins","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"b0","type":"bytes32"},{"name":"b1","type":"bytes32"},{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"setIndividualCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"certAddress","type":"address"},{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"updateIndividualCertMapping","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"CertificateAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"b0","type":"bytes32"},{"name":"b1","type":"bytes32"},{"name":"_OriginalCertificateId","type":"string"},{"name":"_organizationID","type":"string"}],"name":"updateIndividualCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_OriginalCertificateId","type":"string"},{"name":"_CompanyName","type":"string"},{"name":"_Standard","type":"string"},{"name":"_CertificateId","type":"string"},{"name":"_IssueDate","type":"string"},{"name":"_ExpireDate","type":"string"},{"name":"_Scope","type":"string"},{"name":"_CertificationBodyName","type":"string"}],"name":"setOrganizationCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_OriginalCertificateId","type":"string"},{"name":"_CompanyName","type":"string"},{"name":"_Standard","type":"string"},{"name":"_IssueDate","type":"string"},{"name":"_ExpireDate","type":"string"},{"name":"_Scope","type":"string"}],"name":"updateOrganizationCertificate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"OrganizationCertificationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"OrganizationCertificationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"IndividualCertificationSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"IndividualCertificationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"}],"name":"CertificationDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"CertAdminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"account","type":"address"}],"name":"CertAdminDeleted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"address"}],"name":"GlobalAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"newRegistryAddress","type":"address"}],"name":"Migration","type":"event"}]

608060405234801561001057600080fd5b50600480546001600160a01b0319163317905561437e806100326000396000f3fe60806040523480156200001157600080fd5b5060043610620001965760003560e01c8063a614d54e11620000f3578063c9a6811a11620000a5578063cfe6f220116200007b578063cfe6f2201462000fd5578063d2879f001462000ff5578063ea3045861462001133578063f8cae2e614620015965762000196565b8063c9a6811a1462000d2c578063cad3f18f1462000d55578063ccb07cf81462000e935762000196565b8063a614d54e1462000a2a578063ad9065611462000a34578063b56245261462000aee578063bb0bac7f1462000b0e578063be048d041462000bc8578063c16ab1f41462000c725762000196565b806323483e45116200014d57806323483e45146200055c5780632af7ecc714620005855780635e73a67914620005ae57806391dfee0014620006f05780639279fa09146200083e57806398ffab8c14620008f85762000196565b80630226ed48146200019b578063080ab54814620001c65780630ba9287814620002945780631c2672de146200033e578063211fddce146200048257806321446960146200053c575b600080fd5b620001c460048036036020811015620001b357600080fd5b50356001600160a01b0316620018e8565b005b6200028060048036036040811015620001de57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200020957600080fd5b8201836020820111156200021c57600080fd5b803590602001918460018302840111600160201b831117156200023e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001980945050505050565b604080519115158252519081900360200190f35b620001c460048036036020811015620002ac57600080fd5b810190602081018135600160201b811115620002c757600080fd5b820183602082011115620002da57600080fd5b803590602001918460018302840111600160201b83111715620002fc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620019ad945050505050565b62000470600480360360408110156200035657600080fd5b810190602081018135600160201b8111156200037157600080fd5b8201836020820111156200038457600080fd5b803590602001918460018302840111600160201b83111715620003a657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620003f957600080fd5b8201836020820111156200040c57600080fd5b803590602001918460018302840111600160201b831117156200042e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001b3d945050505050565b60408051918252519081900360200190f35b620001c4600480360360408110156200049a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115620004c557600080fd5b820183602082011115620004d857600080fd5b803590602001918460018302840111600160201b83111715620004fa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001c03945050505050565b62000280600480360360208110156200055457600080fd5b503562001d01565b620001c4600480360360208110156200057457600080fd5b50356001600160a01b031662001d16565b620001c4600480360360208110156200059d57600080fd5b50356001600160a01b031662001dbc565b620001c460048036036060811015620005c657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115620005f157600080fd5b8201836020820111156200060457600080fd5b803590602001918460018302840111600160201b831117156200062657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200067957600080fd5b8201836020820111156200068c57600080fd5b803590602001918460018302840111600160201b83111715620006ae57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001e56945050505050565b62000822600480360360408110156200070857600080fd5b810190602081018135600160201b8111156200072357600080fd5b8201836020820111156200073657600080fd5b803590602001918460018302840111600160201b831117156200075857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620007ab57600080fd5b820183602082011115620007be57600080fd5b803590602001918460018302840111600160201b83111715620007e057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001f62945050505050565b604080516001600160a01b039092168252519081900360200190f35b620001c4600480360360408110156200085657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200088157600080fd5b8201836020820111156200089457600080fd5b803590602001918460018302840111600160201b83111715620008b657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001f94945050505050565b620001c4600480360360408110156200091057600080fd5b810190602081018135600160201b8111156200092b57600080fd5b8201836020820111156200093e57600080fd5b803590602001918460018302840111600160201b831117156200096057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620009b357600080fd5b820183602082011115620009c657600080fd5b803590602001918460018302840111600160201b83111715620009e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200204b945050505050565b62000822620021a8565b620004706004803603604081101562000a4c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000a7757600080fd5b82018360208201111562000a8a57600080fd5b803590602001918460018302840111600160201b8311171562000aac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620021b7945050505050565b620008226004803603602081101562000b0657600080fd5b503562002209565b620001c46004803603604081101562000b2657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000b5157600080fd5b82018360208201111562000b6457600080fd5b803590602001918460018302840111600160201b8311171562000b8657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002224945050505050565b620008226004803603602081101562000be057600080fd5b810190602081018135600160201b81111562000bfb57600080fd5b82018360208201111562000c0e57600080fd5b803590602001918460018302840111600160201b8311171562000c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620022dc945050505050565b620001c46004803603604081101562000c8a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000cb557600080fd5b82018360208201111562000cc857600080fd5b803590602001918460018302840111600160201b8311171562000cea57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200236f945050505050565b620002806004803603602081101562000d4457600080fd5b50356001600160a01b0316620024df565b620001c46004803603608081101562000d6d57600080fd5b813591602081013591810190606081016040820135600160201b81111562000d9457600080fd5b82018360208201111562000da757600080fd5b803590602001918460018302840111600160201b8311171562000dc957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111562000e1c57600080fd5b82018360208201111562000e2f57600080fd5b803590602001918460018302840111600160201b8311171562000e5157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620024f4945050505050565b620001c46004803603606081101562000eab57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000ed657600080fd5b82018360208201111562000ee957600080fd5b803590602001918460018302840111600160201b8311171562000f0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111562000f5e57600080fd5b82018360208201111562000f7157600080fd5b803590602001918460018302840111600160201b8311171562000f9357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620026a5945050505050565b620008226004803603602081101562000fed57600080fd5b50356200276d565b620001c4600480360360808110156200100d57600080fd5b813591602081013591810190606081016040820135600160201b8111156200103457600080fd5b8201836020820111156200104757600080fd5b803590602001918460018302840111600160201b831117156200106957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620010bc57600080fd5b820183602082011115620010cf57600080fd5b803590602001918460018302840111600160201b83111715620010f157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002788945050505050565b620001c460048036036101008110156200114c57600080fd5b810190602081018135600160201b8111156200116757600080fd5b8201836020820111156200117a57600080fd5b803590602001918460018302840111600160201b831117156200119c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620011ef57600080fd5b8201836020820111156200120257600080fd5b803590602001918460018302840111600160201b831117156200122457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200127757600080fd5b8201836020820111156200128a57600080fd5b803590602001918460018302840111600160201b83111715620012ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620012ff57600080fd5b8201836020820111156200131257600080fd5b803590602001918460018302840111600160201b831117156200133457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200138757600080fd5b8201836020820111156200139a57600080fd5b803590602001918460018302840111600160201b83111715620013bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200140f57600080fd5b8201836020820111156200142257600080fd5b803590602001918460018302840111600160201b831117156200144457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200149757600080fd5b820183602082011115620014aa57600080fd5b803590602001918460018302840111600160201b83111715620014cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200151f57600080fd5b8201836020820111156200153257600080fd5b803590602001918460018302840111600160201b831117156200155457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002a95945050505050565b620001c4600480360360c0811015620015ae57600080fd5b810190602081018135600160201b811115620015c957600080fd5b820183602082011115620015dc57600080fd5b803590602001918460018302840111600160201b83111715620015fe57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200165157600080fd5b8201836020820111156200166457600080fd5b803590602001918460018302840111600160201b831117156200168657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620016d957600080fd5b820183602082011115620016ec57600080fd5b803590602001918460018302840111600160201b831117156200170e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200176157600080fd5b8201836020820111156200177457600080fd5b803590602001918460018302840111600160201b831117156200179657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620017e957600080fd5b820183602082011115620017fc57600080fd5b803590602001918460018302840111600160201b831117156200181e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200187157600080fd5b8201836020820111156200188457600080fd5b803590602001918460018302840111600160201b83111715620018a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002eda945050505050565b6004546001600160a01b031633146200193657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517f01998ad4b0cc08b3e190adcb94d72b69479b3f817ea6a2b1fd960ce176610fd990600090a250565b600060026000620019928585620021b7565b815260208101919091526040016000205460ff169392505050565b3360009081526003602052604090205460ff1662001a0057604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000816040516020018082805190602001908083835b6020831062001a375780518252601f19909201916020918201910162001a16565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092206000818152600190925284822054600160e31b6315f526d702845294519097506001600160a01b03909416955063afa936b89450600480830194919350909182900301818387803b15801562001ac357600080fd5b505af115801562001ad8573d6000803e3d6000fd5b5050506000828152600160205260408082205490516001600160a01b0390911692507fd32fa8c4fe717dc0bf7abf756afbd22f6c56c9a985d5862571f2e73576cae2389190a2600090815260016020526040902080546001600160a01b031916905550565b600082826040516020018083805190602001908083835b6020831062001b755780518252601f19909201916020918201910162001b54565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831062001bbf5780518252601f19909201916020918201910162001b9e565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905092915050565b3360009081526003602052604090205460ff1662001c5657604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8160016000836040516020018082805190602001908083835b6020831062001c905780518252601f19909201916020918201910162001c6f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b60026020526000908152604090205460ff1681565b6004546001600160a01b0316331462001d6457604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff19169055815192835290517fd5c7aece2cb58986279bb01fed2a4436ffe2a84c3c057995bf317f9030a7dac39281900390910190a150565b6004546001600160a01b0316331462001e0a57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517fa4a1a78d5a7a475cc16cdf30cd440485cce5817d6c693dfd725dee060070f89a9190a250565b6004546001600160a01b0316331462001ea457604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b600062001eb2838362001b3d565b600081815260208190526040808220548151600160e01b6315554c550281526001600160a01b038981166004830152925194955091169283926315554c55926024808201939182900301818387803b15801562001f0e57600080fd5b505af115801562001f23573d6000803e3d6000fd5b50506040516001600160a01b03881692507f0caca70b66aed56b0630989a049110023c5a3f37e0ea4b6ce96fc747663f3ebc9150600090a25050505050565b600080600062001f73848662001b3d565b81526020810191909152604001600020546001600160a01b03169392505050565b6004546001600160a01b0316331462001fe257604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b60016002600062001ff48585620021b7565b8152602081019190915260409081016000908120805460ff191693151593909317909255516001600160a01b038416917fa4a1a78d5a7a475cc16cdf30cd440485cce5817d6c693dfd725dee060070f89a91a25050565b80600260006200205c3384620021b7565b815260208101919091526040016000205460ff16806200208b57503360009081526003602052604090205460ff165b620020cb57604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000620020d9848462001b3d565b600081815260208190526040808220548151600160e31b6315f526d702815291519394506001600160a01b03169263afa936b89260048084019391929182900301818387803b1580156200212c57600080fd5b505af115801562002141573d6000803e3d6000fd5b5050506000828152602081905260408082205490516001600160a01b0390911692507fd32fa8c4fe717dc0bf7abf756afbd22f6c56c9a985d5862571f2e73576cae2389190a2600090815260208190526040902080546001600160a01b0319169055505050565b6004546001600160a01b031681565b6000828260405160200180836001600160a01b03166001600160a01b031660601b815260140182805190602001908083836020831062001bbf5780518252601f19909201916020918201910162001b9e565b6001602052600090815260409020546001600160a01b031681565b6004546001600160a01b031633146200227257604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b60026000620022828484620021b7565b81526020808201929092526040908101600020805460ff1916905580516001600160a01b038516815290517fd5c7aece2cb58986279bb01fed2a4436ffe2a84c3c057995bf317f9030a7dac3929181900390910190a15050565b600060016000836040516020018082805190602001908083835b60208310620023175780518252601f199092019160209182019101620022f6565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120865285019590955292909201600020546001600160a01b031695945050505050565b6004546001600160a01b03163314620023bd57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6000816040516020018082805190602001908083835b60208310620023f45780518252601f199092019160209182019101620023d3565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092206000818152600190925284822054600160e01b6315554c550284526001600160a01b038b8116600486015295519198509490941695508594506315554c559360248084019450919290919082900301818387803b1580156200248c57600080fd5b505af1158015620024a1573d6000803e3d6000fd5b50506040516001600160a01b03871692507f0caca70b66aed56b0630989a049110023c5a3f37e0ea4b6ce96fc747663f3ebc9150600090a250505050565b60036020526000908152604090205460ff1681565b8060026000620025053384620021b7565b815260208101919091526040016000205460ff16806200253457503360009081526003602052604090205460ff165b6200257457604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b82826000808062002586858562001b3d565b81526020810191909152604001600020546001600160a01b031614620025f65760408051600160e51b62461bcd02815260206004820152601860248201527f456e747279206578697374656420657863657074696f6e210000000000000000604482015290519081900360640190fd5b60008787604051620026089062003264565b9182526020820152604080519182900301906000f08015801562002630573d6000803e3d6000fd5b5090508060008062002643898962001b3d565b815260208101919091526040908101600090812080546001600160a01b0319166001600160a01b039485161790559051918316917ff8fd1e75d55c05f454a137f970ada2117aacbb976bcc934c84f3382616654dd69190a25050505050505050565b8060026000620026b63384620021b7565b815260208101919091526040016000205460ff1680620026e557503360009081526003602052604090205460ff165b6200272557604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8360008062002735868662001b3d565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6000602081905290815260409020546001600160a01b031681565b8060026000620027993384620021b7565b815260208101919091526040016000205460ff1680620027c857503360009081526003602052604090205460ff165b6200280857604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8484848460008060006200281d858562001b3d565b815260200190815260200160002060009054906101000a90046001600160a01b03169050806001600160a01b0316633602175c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200287b57600080fd5b505afa15801562002890573d6000803e3d6000fd5b505050506040513d6020811015620028a757600080fd5b505160408051600160e11b637724a80102815290516001600160a01b0384169163ee495002916004808301926020929190829003018186803b158015620028ed57600080fd5b505afa15801562002902573d6000803e3d6000fd5b505050506040513d60208110156200291957600080fd5b505160408051602081810194909452808201929092528051808303820181526060830182528051908401206080830189905260a08084018990528251808503909101815260c0909301909152815191909201201415620029c35760408051600160e51b62461bcd02815260206004820181905260248201527f4475706c69636174656420686173682d76616c756520657863657074696f6e21604482015290519081900360640190fd5b6000806000620029d48b8b62001b3d565b8152602081019190915260409081016000908120548251600160e01b635f722859028152600481018f9052602481018e905292516001600160a01b0390911693508392635f72285992604480830193919282900301818387803b15801562002a3b57600080fd5b505af115801562002a50573d6000803e3d6000fd5b50506040516001600160a01b03841692507fdb4c1022fb756dd9bef34eb42bad50f2105fdce2c025bb80432433fcdb8745919150600090a25050505050505050505050565b3360009081526003602052604090205460ff1662002ae857604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000886040516020018082805190602001908083835b6020831062002b1f5780518252601f19909201916020918201910162002afe565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060008888888888888860405162002b739062003272565b808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019080838360005b8381101562002bc757818101518382015260200162002bad565b50505050905090810190601f16801562002bf55780820380516001836020036101000a031916815260200191505b5088810387528e818151815260200191508051906020019080838360005b8381101562002c2d57818101518382015260200162002c13565b50505050905090810190601f16801562002c5b5780820380516001836020036101000a031916815260200191505b5088810386528d5181528d516020918201918f019080838360005b8381101562002c9057818101518382015260200162002c76565b50505050905090810190601f16801562002cbe5780820380516001836020036101000a031916815260200191505b5088810385528c5181528c516020918201918e019080838360005b8381101562002cf357818101518382015260200162002cd9565b50505050905090810190601f16801562002d215780820380516001836020036101000a031916815260200191505b5088810384528b5181528b516020918201918d019080838360005b8381101562002d5657818101518382015260200162002d3c565b50505050905090810190601f16801562002d845780820380516001836020036101000a031916815260200191505b5088810383528a5181528a516020918201918c019080838360005b8381101562002db957818101518382015260200162002d9f565b50505050905090810190601f16801562002de75780820380516001836020036101000a031916815260200191505b5088810382528951815289516020918201918b019080838360005b8381101562002e1c57818101518382015260200162002e02565b50505050905090810190601f16801562002e4a5780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050604051809103906000f08015801562002e78573d6000803e3d6000fd5b5060008381526001602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051929350917fbd14f8612bb7f813a3ad4d59dbbacbd5f0e8538edef56acf18e273d1146b38649190a250505050505050505050565b3360009081526003602052604090205460ff1662002f2d57604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000866040516020018082805190602001908083835b6020831062002f645780518252601f19909201916020918201910162002f43565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922060008181526001835294852054600160e11b630a611fd502845260a0600485019081528e5160a48601528e519299506001600160a01b0390911697508796506314c23faa958e95508d948d948d948d94938493602481019360448201936064830193608484019360c401928e0191908190849084905b838110156200302b57818101518382015260200162003011565b50505050905090810190601f168015620030595780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b838110156200308e57818101518382015260200162003074565b50505050905090810190601f168015620030bc5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015620030f1578181015183820152602001620030d7565b50505050905090810190601f1680156200311f5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015620031545781810151838201526020016200313a565b50505050905090810190601f168015620031825780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015620031b75781810151838201526020016200319d565b50505050905090810190601f168015620031e55780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156200320d57600080fd5b505af115801562003222573d6000803e3d6000fd5b50506040516001600160a01b03841692507f7f9054a40eb84d2fc9b4dce7e1f7da05c1299c7087579ac781f3b402632ec4309150600090a25050505050505050565b610327806200328183390190565b610d3c80620035a88339019056fe608060405234801561001057600080fd5b506040516040806103278339810180604052604081101561003057600080fd5b508051602090910151600080546001600160a01b031916331790556001919091556002556102c4806100636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635f7228591161005b5780635f722859146100e5578063afa936b814610108578063ed9aab5114610110578063ee495002146101345761007d565b806315554c55146100825780632b92b8e5146100aa5780633602175c146100cb575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661013c565b005b6100b26101aa565b6040805192835260208301919091528051918290030190f35b6100d36101b4565b60408051918252519081900360200190f35b6100a8600480360360408110156100fb57600080fd5b50803590602001356101ba565b6100a8610211565b610118610260565b604080516001600160a01b039092168252519081900360200190f35b6100d361026f565b6000546001600160a01b0316331461018857604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002549091565b60015481565b6000546001600160a01b0316331461020657604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b600191909155600255565b6000546001600160a01b0316331461025d57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b33ff5b6000546001600160a01b031681565b6002548156fe43616c6c20696e766f6b65642066726f6d20696e636f72726563742061646472657373a165627a7a72305820416db0a608aeb6d6761051fe86713b45a1bbe21bf823ba35841c78bfb077409d002960806040523480156200001157600080fd5b5060405162000d3c38038062000d3c833981018060405260e08110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291906020018051640100000000811115620000e857600080fd5b82016020810184811115620000fc57600080fd5b81516401000000008111828201871017156200011757600080fd5b505092919060200180516401000000008111156200013457600080fd5b820160208101848111156200014857600080fd5b81516401000000008111828201871017156200016357600080fd5b505092919060200180516401000000008111156200018057600080fd5b820160208101848111156200019457600080fd5b8151640100000000811182820187101715620001af57600080fd5b50509291906020018051640100000000811115620001cc57600080fd5b82016020810184811115620001e057600080fd5b8151640100000000811182820187101715620001fb57600080fd5b505092919060200180516401000000008111156200021857600080fd5b820160208101848111156200022c57600080fd5b81516401000000008111828201871017156200024757600080fd5b5050600080546001600160a01b0319163317905589519093506200027592506001915060208a019062000307565b5085516200028b90600290602089019062000307565b508451620002a190600390602088019062000307565b508351620002b790600490602087019062000307565b508251620002cd90600590602086019062000307565b508151620002e390600690602085019062000307565b508051620002f990600790602084019062000307565b5050505050505050620003ac565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200034a57805160ff19168380011785556200037a565b828001600101855582156200037a579182015b828111156200037a5782518255916020019190600101906200035d565b50620003889291506200038c565b5090565b620003a991905b8082111562000388576000815560010162000393565b90565b61098080620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633204ab14116100715780633204ab141461041b578063735b3f8e14610423578063a2240eb01461042b578063afa936b814610433578063e973fc7e1461043b578063ed9aab5114610443576100a9565b806314c23faa146100ae57806315554c5514610368578063218fd1c41461038e5780632d05fcb01461040b5780632e29a09214610413575b600080fd5b610366600480360360a08110156100c457600080fd5b810190602081018135600160201b8111156100de57600080fd5b8201836020820111156100f057600080fd5b803590602001918460018302840111600160201b8311171561011157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561016357600080fd5b82018360208201111561017557600080fd5b803590602001918460018302840111600160201b8311171561019657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460018302840111600160201b831117156102a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102f257600080fd5b82018360208201111561030457600080fd5b803590602001918460018302840111600160201b8311171561032557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610467945050505050565b005b6103666004803603602081101561037e57600080fd5b50356001600160a01b031661051e565b61039661058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d05781810151838201526020016103b8565b50505050905090810190601f1680156103fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610396610619565b610396610674565b6103966106cc565b610396610727565b610396610782565b6103666107dd565b61039661082c565b61044b610887565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b031633146104b357604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b84516104c6906001906020880190610896565b5083516104da906002906020870190610896565b5082516104ee906004906020860190610896565b508151610502906005906020850190610896565b508051610516906006906020840190610896565b505050505050565b6000546001600160a01b0316331461056a57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b505050505081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6000546001600160a01b0316331461082957604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b33ff5b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6000546001600160a01b031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106108d757805160ff1916838001178555610904565b82800160010185558215610904579182015b828111156109045782518255916020019190600101906108e9565b50610910929150610914565b5090565b61092e91905b80821115610910576000815560010161091a565b9056fe43616c6c20696e766f6b65642066726f6d20696e636f72726563742061646472657373a165627a7a723058200e8de48cbe7ca7a8d349ac31c2b4b8898d1498ab407cc84ac86a4968452c782400294163636573732064656e6965642c207265717569726520676c6f62616c2061646d696e206163636f756e744163636573732064656e6965642c20506c65617365207573652066756e6374696f6e20776974682063657274696669636174652061646d696e2070726976696c65676573a165627a7a72305820639640f3117e053f16288259faddc1c89c79562b6dad921c2ac40cae705116a30029

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620001965760003560e01c8063a614d54e11620000f3578063c9a6811a11620000a5578063cfe6f220116200007b578063cfe6f2201462000fd5578063d2879f001462000ff5578063ea3045861462001133578063f8cae2e614620015965762000196565b8063c9a6811a1462000d2c578063cad3f18f1462000d55578063ccb07cf81462000e935762000196565b8063a614d54e1462000a2a578063ad9065611462000a34578063b56245261462000aee578063bb0bac7f1462000b0e578063be048d041462000bc8578063c16ab1f41462000c725762000196565b806323483e45116200014d57806323483e45146200055c5780632af7ecc714620005855780635e73a67914620005ae57806391dfee0014620006f05780639279fa09146200083e57806398ffab8c14620008f85762000196565b80630226ed48146200019b578063080ab54814620001c65780630ba9287814620002945780631c2672de146200033e578063211fddce146200048257806321446960146200053c575b600080fd5b620001c460048036036020811015620001b357600080fd5b50356001600160a01b0316620018e8565b005b6200028060048036036040811015620001de57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200020957600080fd5b8201836020820111156200021c57600080fd5b803590602001918460018302840111600160201b831117156200023e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001980945050505050565b604080519115158252519081900360200190f35b620001c460048036036020811015620002ac57600080fd5b810190602081018135600160201b811115620002c757600080fd5b820183602082011115620002da57600080fd5b803590602001918460018302840111600160201b83111715620002fc57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620019ad945050505050565b62000470600480360360408110156200035657600080fd5b810190602081018135600160201b8111156200037157600080fd5b8201836020820111156200038457600080fd5b803590602001918460018302840111600160201b83111715620003a657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620003f957600080fd5b8201836020820111156200040c57600080fd5b803590602001918460018302840111600160201b831117156200042e57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001b3d945050505050565b60408051918252519081900360200190f35b620001c4600480360360408110156200049a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115620004c557600080fd5b820183602082011115620004d857600080fd5b803590602001918460018302840111600160201b83111715620004fa57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001c03945050505050565b62000280600480360360208110156200055457600080fd5b503562001d01565b620001c4600480360360208110156200057457600080fd5b50356001600160a01b031662001d16565b620001c4600480360360208110156200059d57600080fd5b50356001600160a01b031662001dbc565b620001c460048036036060811015620005c657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115620005f157600080fd5b8201836020820111156200060457600080fd5b803590602001918460018302840111600160201b831117156200062657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200067957600080fd5b8201836020820111156200068c57600080fd5b803590602001918460018302840111600160201b83111715620006ae57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001e56945050505050565b62000822600480360360408110156200070857600080fd5b810190602081018135600160201b8111156200072357600080fd5b8201836020820111156200073657600080fd5b803590602001918460018302840111600160201b831117156200075857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620007ab57600080fd5b820183602082011115620007be57600080fd5b803590602001918460018302840111600160201b83111715620007e057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001f62945050505050565b604080516001600160a01b039092168252519081900360200190f35b620001c4600480360360408110156200085657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156200088157600080fd5b8201836020820111156200089457600080fd5b803590602001918460018302840111600160201b83111715620008b657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062001f94945050505050565b620001c4600480360360408110156200091057600080fd5b810190602081018135600160201b8111156200092b57600080fd5b8201836020820111156200093e57600080fd5b803590602001918460018302840111600160201b831117156200096057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620009b357600080fd5b820183602082011115620009c657600080fd5b803590602001918460018302840111600160201b83111715620009e857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200204b945050505050565b62000822620021a8565b620004706004803603604081101562000a4c57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000a7757600080fd5b82018360208201111562000a8a57600080fd5b803590602001918460018302840111600160201b8311171562000aac57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620021b7945050505050565b620008226004803603602081101562000b0657600080fd5b503562002209565b620001c46004803603604081101562000b2657600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000b5157600080fd5b82018360208201111562000b6457600080fd5b803590602001918460018302840111600160201b8311171562000b8657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002224945050505050565b620008226004803603602081101562000be057600080fd5b810190602081018135600160201b81111562000bfb57600080fd5b82018360208201111562000c0e57600080fd5b803590602001918460018302840111600160201b8311171562000c3057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620022dc945050505050565b620001c46004803603604081101562000c8a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000cb557600080fd5b82018360208201111562000cc857600080fd5b803590602001918460018302840111600160201b8311171562000cea57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506200236f945050505050565b620002806004803603602081101562000d4457600080fd5b50356001600160a01b0316620024df565b620001c46004803603608081101562000d6d57600080fd5b813591602081013591810190606081016040820135600160201b81111562000d9457600080fd5b82018360208201111562000da757600080fd5b803590602001918460018302840111600160201b8311171562000dc957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111562000e1c57600080fd5b82018360208201111562000e2f57600080fd5b803590602001918460018302840111600160201b8311171562000e5157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620024f4945050505050565b620001c46004803603606081101562000eab57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111562000ed657600080fd5b82018360208201111562000ee957600080fd5b803590602001918460018302840111600160201b8311171562000f0b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111562000f5e57600080fd5b82018360208201111562000f7157600080fd5b803590602001918460018302840111600160201b8311171562000f9357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550620026a5945050505050565b620008226004803603602081101562000fed57600080fd5b50356200276d565b620001c4600480360360808110156200100d57600080fd5b813591602081013591810190606081016040820135600160201b8111156200103457600080fd5b8201836020820111156200104757600080fd5b803590602001918460018302840111600160201b831117156200106957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620010bc57600080fd5b820183602082011115620010cf57600080fd5b803590602001918460018302840111600160201b83111715620010f157600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002788945050505050565b620001c460048036036101008110156200114c57600080fd5b810190602081018135600160201b8111156200116757600080fd5b8201836020820111156200117a57600080fd5b803590602001918460018302840111600160201b831117156200119c57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620011ef57600080fd5b8201836020820111156200120257600080fd5b803590602001918460018302840111600160201b831117156200122457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200127757600080fd5b8201836020820111156200128a57600080fd5b803590602001918460018302840111600160201b83111715620012ac57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620012ff57600080fd5b8201836020820111156200131257600080fd5b803590602001918460018302840111600160201b831117156200133457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200138757600080fd5b8201836020820111156200139a57600080fd5b803590602001918460018302840111600160201b83111715620013bc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200140f57600080fd5b8201836020820111156200142257600080fd5b803590602001918460018302840111600160201b831117156200144457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200149757600080fd5b820183602082011115620014aa57600080fd5b803590602001918460018302840111600160201b83111715620014cc57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200151f57600080fd5b8201836020820111156200153257600080fd5b803590602001918460018302840111600160201b831117156200155457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002a95945050505050565b620001c4600480360360c0811015620015ae57600080fd5b810190602081018135600160201b811115620015c957600080fd5b820183602082011115620015dc57600080fd5b803590602001918460018302840111600160201b83111715620015fe57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200165157600080fd5b8201836020820111156200166457600080fd5b803590602001918460018302840111600160201b831117156200168657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620016d957600080fd5b820183602082011115620016ec57600080fd5b803590602001918460018302840111600160201b831117156200170e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200176157600080fd5b8201836020820111156200177457600080fd5b803590602001918460018302840111600160201b831117156200179657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115620017e957600080fd5b820183602082011115620017fc57600080fd5b803590602001918460018302840111600160201b831117156200181e57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156200187157600080fd5b8201836020820111156200188457600080fd5b803590602001918460018302840111600160201b83111715620018a657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062002eda945050505050565b6004546001600160a01b031633146200193657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b600480546001600160a01b0319166001600160a01b0383169081179091556040517f01998ad4b0cc08b3e190adcb94d72b69479b3f817ea6a2b1fd960ce176610fd990600090a250565b600060026000620019928585620021b7565b815260208101919091526040016000205460ff169392505050565b3360009081526003602052604090205460ff1662001a0057604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000816040516020018082805190602001908083835b6020831062001a375780518252601f19909201916020918201910162001a16565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092206000818152600190925284822054600160e31b6315f526d702845294519097506001600160a01b03909416955063afa936b89450600480830194919350909182900301818387803b15801562001ac357600080fd5b505af115801562001ad8573d6000803e3d6000fd5b5050506000828152600160205260408082205490516001600160a01b0390911692507fd32fa8c4fe717dc0bf7abf756afbd22f6c56c9a985d5862571f2e73576cae2389190a2600090815260016020526040902080546001600160a01b031916905550565b600082826040516020018083805190602001908083835b6020831062001b755780518252601f19909201916020918201910162001b54565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831062001bbf5780518252601f19909201916020918201910162001b9e565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905092915050565b3360009081526003602052604090205460ff1662001c5657604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8160016000836040516020018082805190602001908083835b6020831062001c905780518252601f19909201916020918201910162001c6f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b60026020526000908152604090205460ff1681565b6004546001600160a01b0316331462001d6457604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff19169055815192835290517fd5c7aece2cb58986279bb01fed2a4436ffe2a84c3c057995bf317f9030a7dac39281900390910190a150565b6004546001600160a01b0316331462001e0a57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6001600160a01b038116600081815260036020526040808220805460ff19166001179055517fa4a1a78d5a7a475cc16cdf30cd440485cce5817d6c693dfd725dee060070f89a9190a250565b6004546001600160a01b0316331462001ea457604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b600062001eb2838362001b3d565b600081815260208190526040808220548151600160e01b6315554c550281526001600160a01b038981166004830152925194955091169283926315554c55926024808201939182900301818387803b15801562001f0e57600080fd5b505af115801562001f23573d6000803e3d6000fd5b50506040516001600160a01b03881692507f0caca70b66aed56b0630989a049110023c5a3f37e0ea4b6ce96fc747663f3ebc9150600090a25050505050565b600080600062001f73848662001b3d565b81526020810191909152604001600020546001600160a01b03169392505050565b6004546001600160a01b0316331462001fe257604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b60016002600062001ff48585620021b7565b8152602081019190915260409081016000908120805460ff191693151593909317909255516001600160a01b038416917fa4a1a78d5a7a475cc16cdf30cd440485cce5817d6c693dfd725dee060070f89a91a25050565b80600260006200205c3384620021b7565b815260208101919091526040016000205460ff16806200208b57503360009081526003602052604090205460ff165b620020cb57604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000620020d9848462001b3d565b600081815260208190526040808220548151600160e31b6315f526d702815291519394506001600160a01b03169263afa936b89260048084019391929182900301818387803b1580156200212c57600080fd5b505af115801562002141573d6000803e3d6000fd5b5050506000828152602081905260408082205490516001600160a01b0390911692507fd32fa8c4fe717dc0bf7abf756afbd22f6c56c9a985d5862571f2e73576cae2389190a2600090815260208190526040902080546001600160a01b0319169055505050565b6004546001600160a01b031681565b6000828260405160200180836001600160a01b03166001600160a01b031660601b815260140182805190602001908083836020831062001bbf5780518252601f19909201916020918201910162001b9e565b6001602052600090815260409020546001600160a01b031681565b6004546001600160a01b031633146200227257604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b60026000620022828484620021b7565b81526020808201929092526040908101600020805460ff1916905580516001600160a01b038516815290517fd5c7aece2cb58986279bb01fed2a4436ffe2a84c3c057995bf317f9030a7dac3929181900390910190a15050565b600060016000836040516020018082805190602001908083835b60208310620023175780518252601f199092019160209182019101620022f6565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528452815191810191909120865285019590955292909201600020546001600160a01b031695945050505050565b6004546001600160a01b03163314620023bd57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180620042e4602b913960400191505060405180910390fd5b6000816040516020018082805190602001908083835b60208310620023f45780518252601f199092019160209182019101620023d3565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f190183528085528251928201929092206000818152600190925284822054600160e01b6315554c550284526001600160a01b038b8116600486015295519198509490941695508594506315554c559360248084019450919290919082900301818387803b1580156200248c57600080fd5b505af1158015620024a1573d6000803e3d6000fd5b50506040516001600160a01b03871692507f0caca70b66aed56b0630989a049110023c5a3f37e0ea4b6ce96fc747663f3ebc9150600090a250505050565b60036020526000908152604090205460ff1681565b8060026000620025053384620021b7565b815260208101919091526040016000205460ff16806200253457503360009081526003602052604090205460ff165b6200257457604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b82826000808062002586858562001b3d565b81526020810191909152604001600020546001600160a01b031614620025f65760408051600160e51b62461bcd02815260206004820152601860248201527f456e747279206578697374656420657863657074696f6e210000000000000000604482015290519081900360640190fd5b60008787604051620026089062003264565b9182526020820152604080519182900301906000f08015801562002630573d6000803e3d6000fd5b5090508060008062002643898962001b3d565b815260208101919091526040908101600090812080546001600160a01b0319166001600160a01b039485161790559051918316917ff8fd1e75d55c05f454a137f970ada2117aacbb976bcc934c84f3382616654dd69190a25050505050505050565b8060026000620026b63384620021b7565b815260208101919091526040016000205460ff1680620026e557503360009081526003602052604090205460ff165b6200272557604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8360008062002735868662001b3d565b815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050505050565b6000602081905290815260409020546001600160a01b031681565b8060026000620027993384620021b7565b815260208101919091526040016000205460ff1680620027c857503360009081526003602052604090205460ff165b6200280857604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b8484848460008060006200281d858562001b3d565b815260200190815260200160002060009054906101000a90046001600160a01b03169050806001600160a01b0316633602175c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200287b57600080fd5b505afa15801562002890573d6000803e3d6000fd5b505050506040513d6020811015620028a757600080fd5b505160408051600160e11b637724a80102815290516001600160a01b0384169163ee495002916004808301926020929190829003018186803b158015620028ed57600080fd5b505afa15801562002902573d6000803e3d6000fd5b505050506040513d60208110156200291957600080fd5b505160408051602081810194909452808201929092528051808303820181526060830182528051908401206080830189905260a08084018990528251808503909101815260c0909301909152815191909201201415620029c35760408051600160e51b62461bcd02815260206004820181905260248201527f4475706c69636174656420686173682d76616c756520657863657074696f6e21604482015290519081900360640190fd5b6000806000620029d48b8b62001b3d565b8152602081019190915260409081016000908120548251600160e01b635f722859028152600481018f9052602481018e905292516001600160a01b0390911693508392635f72285992604480830193919282900301818387803b15801562002a3b57600080fd5b505af115801562002a50573d6000803e3d6000fd5b50506040516001600160a01b03841692507fdb4c1022fb756dd9bef34eb42bad50f2105fdce2c025bb80432433fcdb8745919150600090a25050505050505050505050565b3360009081526003602052604090205460ff1662002ae857604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000886040516020018082805190602001908083835b6020831062002b1f5780518252601f19909201916020918201910162002afe565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405280519060200120905060008888888888888860405162002b739062003272565b808060200180602001806020018060200180602001806020018060200188810388528f818151815260200191508051906020019080838360005b8381101562002bc757818101518382015260200162002bad565b50505050905090810190601f16801562002bf55780820380516001836020036101000a031916815260200191505b5088810387528e818151815260200191508051906020019080838360005b8381101562002c2d57818101518382015260200162002c13565b50505050905090810190601f16801562002c5b5780820380516001836020036101000a031916815260200191505b5088810386528d5181528d516020918201918f019080838360005b8381101562002c9057818101518382015260200162002c76565b50505050905090810190601f16801562002cbe5780820380516001836020036101000a031916815260200191505b5088810385528c5181528c516020918201918e019080838360005b8381101562002cf357818101518382015260200162002cd9565b50505050905090810190601f16801562002d215780820380516001836020036101000a031916815260200191505b5088810384528b5181528b516020918201918d019080838360005b8381101562002d5657818101518382015260200162002d3c565b50505050905090810190601f16801562002d845780820380516001836020036101000a031916815260200191505b5088810383528a5181528a516020918201918c019080838360005b8381101562002db957818101518382015260200162002d9f565b50505050905090810190601f16801562002de75780820380516001836020036101000a031916815260200191505b5088810382528951815289516020918201918b019080838360005b8381101562002e1c57818101518382015260200162002e02565b50505050905090810190601f16801562002e4a5780820380516001836020036101000a031916815260200191505b509e505050505050505050505050505050604051809103906000f08015801562002e78573d6000803e3d6000fd5b5060008381526001602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051929350917fbd14f8612bb7f813a3ad4d59dbbacbd5f0e8538edef56acf18e273d1146b38649190a250505050505050505050565b3360009081526003602052604090205460ff1662002f2d57604051600160e51b62461bcd0281526004018080602001828103825260448152602001806200430f6044913960600191505060405180910390fd5b6000866040516020018082805190602001908083835b6020831062002f645780518252601f19909201916020918201910162002f43565b51815160209384036101000a60001901801990921691161790526040805192909401828103601f1901835280855282519282019290922060008181526001835294852054600160e11b630a611fd502845260a0600485019081528e5160a48601528e519299506001600160a01b0390911697508796506314c23faa958e95508d948d948d948d94938493602481019360448201936064830193608484019360c401928e0191908190849084905b838110156200302b57818101518382015260200162003011565b50505050905090810190601f168015620030595780820380516001836020036101000a031916815260200191505b5086810385528a5181528a516020918201918c019080838360005b838110156200308e57818101518382015260200162003074565b50505050905090810190601f168015620030bc5780820380516001836020036101000a031916815260200191505b5086810384528951815289516020918201918b019080838360005b83811015620030f1578181015183820152602001620030d7565b50505050905090810190601f1680156200311f5780820380516001836020036101000a031916815260200191505b5086810383528851815288516020918201918a019080838360005b83811015620031545781810151838201526020016200313a565b50505050905090810190601f168015620031825780820380516001836020036101000a031916815260200191505b50868103825287518152875160209182019189019080838360005b83811015620031b75781810151838201526020016200319d565b50505050905090810190601f168015620031e55780820380516001836020036101000a031916815260200191505b509a5050505050505050505050600060405180830381600087803b1580156200320d57600080fd5b505af115801562003222573d6000803e3d6000fd5b50506040516001600160a01b03841692507f7f9054a40eb84d2fc9b4dce7e1f7da05c1299c7087579ac781f3b402632ec4309150600090a25050505050505050565b610327806200328183390190565b610d3c80620035a88339019056fe608060405234801561001057600080fd5b506040516040806103278339810180604052604081101561003057600080fd5b508051602090910151600080546001600160a01b031916331790556001919091556002556102c4806100636000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80635f7228591161005b5780635f722859146100e5578063afa936b814610108578063ed9aab5114610110578063ee495002146101345761007d565b806315554c55146100825780632b92b8e5146100aa5780633602175c146100cb575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b031661013c565b005b6100b26101aa565b6040805192835260208301919091528051918290030190f35b6100d36101b4565b60408051918252519081900360200190f35b6100a8600480360360408110156100fb57600080fd5b50803590602001356101ba565b6100a8610211565b610118610260565b604080516001600160a01b039092168252519081900360200190f35b6100d361026f565b6000546001600160a01b0316331461018857604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001546002549091565b60015481565b6000546001600160a01b0316331461020657604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b600191909155600255565b6000546001600160a01b0316331461025d57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806102766023913960400191505060405180910390fd5b33ff5b6000546001600160a01b031681565b6002548156fe43616c6c20696e766f6b65642066726f6d20696e636f72726563742061646472657373a165627a7a72305820416db0a608aeb6d6761051fe86713b45a1bbe21bf823ba35841c78bfb077409d002960806040523480156200001157600080fd5b5060405162000d3c38038062000d3c833981018060405260e08110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291906020018051640100000000811115620000e857600080fd5b82016020810184811115620000fc57600080fd5b81516401000000008111828201871017156200011757600080fd5b505092919060200180516401000000008111156200013457600080fd5b820160208101848111156200014857600080fd5b81516401000000008111828201871017156200016357600080fd5b505092919060200180516401000000008111156200018057600080fd5b820160208101848111156200019457600080fd5b8151640100000000811182820187101715620001af57600080fd5b50509291906020018051640100000000811115620001cc57600080fd5b82016020810184811115620001e057600080fd5b8151640100000000811182820187101715620001fb57600080fd5b505092919060200180516401000000008111156200021857600080fd5b820160208101848111156200022c57600080fd5b81516401000000008111828201871017156200024757600080fd5b5050600080546001600160a01b0319163317905589519093506200027592506001915060208a019062000307565b5085516200028b90600290602089019062000307565b508451620002a190600390602088019062000307565b508351620002b790600490602087019062000307565b508251620002cd90600590602086019062000307565b508151620002e390600690602085019062000307565b508051620002f990600790602084019062000307565b5050505050505050620003ac565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200034a57805160ff19168380011785556200037a565b828001600101855582156200037a579182015b828111156200037a5782518255916020019190600101906200035d565b50620003889291506200038c565b5090565b620003a991905b8082111562000388576000815560010162000393565b90565b61098080620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633204ab14116100715780633204ab141461041b578063735b3f8e14610423578063a2240eb01461042b578063afa936b814610433578063e973fc7e1461043b578063ed9aab5114610443576100a9565b806314c23faa146100ae57806315554c5514610368578063218fd1c41461038e5780632d05fcb01461040b5780632e29a09214610413575b600080fd5b610366600480360360a08110156100c457600080fd5b810190602081018135600160201b8111156100de57600080fd5b8201836020820111156100f057600080fd5b803590602001918460018302840111600160201b8311171561011157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561016357600080fd5b82018360208201111561017557600080fd5b803590602001918460018302840111600160201b8311171561019657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156101e857600080fd5b8201836020820111156101fa57600080fd5b803590602001918460018302840111600160201b8311171561021b57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460018302840111600160201b831117156102a057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b8111156102f257600080fd5b82018360208201111561030457600080fd5b803590602001918460018302840111600160201b8311171561032557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610467945050505050565b005b6103666004803603602081101561037e57600080fd5b50356001600160a01b031661051e565b61039661058c565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103d05781810151838201526020016103b8565b50505050905090810190601f1680156103fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610396610619565b610396610674565b6103966106cc565b610396610727565b610396610782565b6103666107dd565b61039661082c565b61044b610887565b604080516001600160a01b039092168252519081900360200190f35b6000546001600160a01b031633146104b357604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b84516104c6906001906020880190610896565b5083516104da906002906020870190610896565b5082516104ee906004906020860190610896565b508151610502906005906020850190610896565b508051610516906006906020840190610896565b505050505050565b6000546001600160a01b0316331461056a57604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b820191906000526020600020905b8154815290600101906020018083116105f457829003601f168201915b505050505081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6000546001600160a01b0316331461082957604051600160e51b62461bcd0281526004018080602001828103825260238152602001806109326023913960400191505060405180910390fd5b33ff5b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106115780601f106105e657610100808354040283529160200191610611565b6000546001600160a01b031681565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106108d757805160ff1916838001178555610904565b82800160010185558215610904579182015b828111156109045782518255916020019190600101906108e9565b50610910929150610914565b5090565b61092e91905b80821115610910576000815560010161091a565b9056fe43616c6c20696e766f6b65642066726f6d20696e636f72726563742061646472657373a165627a7a723058200e8de48cbe7ca7a8d349ac31c2b4b8898d1498ab407cc84ac86a4968452c782400294163636573732064656e6965642c207265717569726520676c6f62616c2061646d696e206163636f756e744163636573732064656e6965642c20506c65617365207573652066756e6374696f6e20776974682063657274696669636174652061646d696e2070726976696c65676573a165627a7a72305820639640f3117e053f16288259faddc1c89c79562b6dad921c2ac40cae705116a30029

Deployed Bytecode Sourcemap

4290:15412:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4290:15412:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13800:165;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13800:165:0;-1:-1:-1;;;;;13800:165:0;;:::i;:::-;;15011:229;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;15011:229:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15011:229:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15011:229:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15011:229:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15011:229:0;;-1:-1:-1;15011:229:0;;-1:-1:-1;;;;;15011:229:0:i;:::-;;;;;;;;;;;;;;;;;;10507:425;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10507:425:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10507:425:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10507:425:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;10507:425:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10507:425:0;;-1:-1:-1;10507:425:0;;-1:-1:-1;;;;;10507:425:0:i;15736:251::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15736:251:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15736:251:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15736:251:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15736:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15736:251:0;;;;;;;;-1:-1:-1;15736:251:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;15736:251:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15736:251:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15736:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15736:251:0;;-1:-1:-1;15736:251:0;;-1:-1:-1;;;;;15736:251:0:i;:::-;;;;;;;;;;;;;;;;17444:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;17444:258:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17444:258:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17444:258:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17444:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17444:258:0;;-1:-1:-1;17444:258:0;;-1:-1:-1;;;;;17444:258:0:i;5153:44::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5153:44:0;;:::i;13395:167::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13395:167:0;-1:-1:-1;;;;;13395:167:0;;:::i;12995:165::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12995:165:0;-1:-1:-1;;;;;12995:165:0;;:::i;16370:467::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;16370:467:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16370:467:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16370:467:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16370:467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16370:467:0;;;;;;;;-1:-1:-1;16370:467:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;16370:467:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16370:467:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16370:467:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16370:467:0;;-1:-1:-1;16370:467:0;;-1:-1:-1;;;;;16370:467:0:i;14274:264::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14274:264:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14274:264:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14274:264:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14274:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14274:264:0;;;;;;;;-1:-1:-1;14274:264:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;14274:264:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14274:264:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14274:264:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14274:264:0;;-1:-1:-1;14274:264:0;;-1:-1:-1;;;;;14274:264:0:i;:::-;;;;-1:-1:-1;;;;;14274:264:0;;;;;;;;;;;;;;12002:242;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;12002:242:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12002:242:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12002:242:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12002:242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12002:242:0;;-1:-1:-1;12002:242:0;;-1:-1:-1;;;;;12002:242:0:i;11231:481::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11231:481:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11231:481:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11231:481:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11231:481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11231:481:0;;;;;;;;-1:-1:-1;11231:481:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;11231:481:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11231:481:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;11231:481:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11231:481:0;;-1:-1:-1;11231:481:0;;-1:-1:-1;;;;;11231:481:0:i;5480:26::-;;;:::i;15997:219::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;15997:219:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;15997:219:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15997:219:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15997:219:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15997:219:0;;-1:-1:-1;15997:219:0;;-1:-1:-1;;;;;15997:219:0:i;4834:61::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4834:61:0;;:::i;12536:236::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;12536:236:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;12536:236:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;12536:236:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;12536:236:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;12536:236:0;;-1:-1:-1;12536:236:0;;-1:-1:-1;;;;;12536:236:0:i;14755:246::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14755:246:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;14755:246:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;14755:246:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;14755:246:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;14755:246:0;;-1:-1:-1;14755:246:0;;-1:-1:-1;;;;;14755:246:0:i;16999:437::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;16999:437:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;16999:437:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;16999:437:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;16999:437:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;16999:437:0;;-1:-1:-1;16999:437:0;;-1:-1:-1;;;;;16999:437:0:i;5359:48::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5359:48:0;-1:-1:-1;;;;;5359:48:0;;:::i;9165:583::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9165:583:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9165:583:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9165:583:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9165:583:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9165:583:0;;;;;;;;-1:-1:-1;9165:583:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;9165:583:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9165:583:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9165:583:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9165:583:0;;-1:-1:-1;9165:583:0;;-1:-1:-1;;;;;9165:583:0:i;17710:310::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;17710:310:0;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;17710:310:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17710:310:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17710:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17710:310:0;;;;;;;;-1:-1:-1;17710:310:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;17710:310:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;17710:310:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;17710:310:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;17710:310:0;;-1:-1:-1;17710:310:0;;-1:-1:-1;;;;;17710:310:0:i;4771:56::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4771:56:0;;:::i;9756:514::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;9756:514:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9756:514:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9756:514:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9756:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9756:514:0;;;;;;;;-1:-1:-1;9756:514:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;9756:514:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9756:514:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;9756:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9756:514:0;;-1:-1:-1;9756:514:0;;-1:-1:-1;;;;;9756:514:0:i;6990:878::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6990:878:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;;;;;;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;6990:878:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6990:878:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;6990:878:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;6990:878:0;;-1:-1:-1;6990:878:0;;-1:-1:-1;;;;;6990:878:0:i;8443:716::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;8443:716:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;;;;;;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;;;;;;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;;;;;;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;;;;;;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;;;;;;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;8443:716:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8443:716:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;8443:716:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;8443:716:0;;-1:-1:-1;8443:716:0;;-1:-1:-1;;;;;8443:716:0:i;13800:165::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13883:11;:24;;-1:-1:-1;;;;;;13883:24:0;-1:-1:-1;;;;;13883:24:0;;;;;;;;13923:32;;;;-1:-1:-1;;13923:32:0;13800:165;:::o;15011:229::-;15148:4;15177:10;:55;15188:43;15203:10;15215:15;15188:14;:43::i;:::-;15177:55;;;;;;;;;;;-1:-1:-1;15177:55:0;;;;;15011:229;-1:-1:-1;;;15011:229:0:o;10507:425::-;18732:10;18716:27;;;;:15;:27;;;;;;;;18708:108;;;;-1:-1:-1;;;;;18708:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10635:15;10680:22;10663:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;10663:40:0;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;10663:40:0;;;10653:51;;;;;;;;;-1:-1:-1;10743:34:0;;;274:1:-1;10743:34:0;;;;;;;-1:-1:-1;;;;;10715:83:0;;;;10653:51;;-1:-1:-1;;;;;;10743:34:0;;;;-1:-1:-1;10715:81:0;;-1:-1:-1;10715:83:0;;;;;-1:-1:-1;;;10715:83:0;;;;;;;-1:-1:-1;10743:34:0;10715:83;;;5:2:-1;;;;30:1;27;20:12;5:2;10715:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;10837:34:0;;;;:25;:34;;;;;;;10816:56;;-1:-1:-1;;;;;10837:34:0;;;;-1:-1:-1;10816:56:0;;10837:34;10816:56;10890:34;;;;:25;:34;;;;;10883:41;;-1:-1:-1;;;;;;10883:41:0;;;-1:-1:-1;10507:425:0:o;15736:251::-;15879:7;15938:22;15962:15;15921:57;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;15921:57:0;;;;;;;;;;-1:-1:-1;15921:57:0;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15921:57:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15921:57:0;;;15911:68;;;;;;15904:75;;15736:251;;;;:::o;17444:258::-;18732:10;18716:27;;;;:15;:27;;;;;;;;18708:108;;;;-1:-1:-1;;;;;18708:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17683:11;17602:25;:78;17655:22;17638:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;17638:40:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;17638:40:0;;;17628:51;;;;;;17602:78;;;;;;;;;;;;:92;;;;;-1:-1:-1;;;;;17602:92:0;;;;;-1:-1:-1;;;;;17602:92:0;;;;;;17444:258;;:::o;5153:44::-;;;;;;;;;;;;;;;:::o;13395:167::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13483:27:0;;;;;;:15;:27;;;;;;;;;13476:34;;-1:-1:-1;;13476:34:0;;;13526:28;;;;;;;;;;;;;;;;;13395:167;:::o;12995:165::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13076:27:0;;;;;;:15;:27;;;;;;:34;;-1:-1:-1;;13076:34:0;13106:4;13076:34;;;13126:26;;;13076:27;13126:26;12995:165;:::o;16370:467::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16563:15;16581:57;16598:22;16622:15;16581:16;:57::i;:::-;16649:19;16671:29;;;;;;;;;;;;16711:72;;-1:-1:-1;;;;;16711:72:0;;-1:-1:-1;;;;;16711:72:0;;;;;;;;;16563:75;;-1:-1:-1;16671:29:0;;;;;16711:51;;:72;;;;;;;;;;;16649:19;16671:29;16711:72;;;5:2:-1;;;;30:1;27;20:12;5:2;16711:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;16799:30:0;;-1:-1:-1;;;;;16799:30:0;;;-1:-1:-1;16799:30:0;;-1:-1:-1;16799:30:0;;;18268:1;;16370:467;;;:::o;14274:264::-;14419:7;14451:20;:79;14472:57;14489:22;14513:15;14472:16;:57::i;:::-;14451:79;;;;;;;;;;;-1:-1:-1;14451:79:0;;-1:-1:-1;;;;;14451:79:0;;14274:264;-1:-1:-1;;;14274:264:0:o;12002:242::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12190:4;12132:10;:55;12143:43;12158:10;12170:15;12143:14;:43::i;:::-;12132:55;;;;;;;;;;;;;-1:-1:-1;12132:55:0;;;:62;;-1:-1:-1;;12132:62:0;;;;;;;;;;;12210:26;-1:-1:-1;;;;;12210:26:0;;;;;;12002:242;;:::o;11231:481::-;11402:15;18471:10;:54;18482:42;18497:10;18509:14;18482;:42::i;:::-;18471:54;;;;;;;;;;;-1:-1:-1;18471:54:0;;;;;:85;;-1:-1:-1;18545:10:0;18529:27;;;;:15;:27;;;;;;;;18471:85;18463:176;;;;-1:-1:-1;;;;;18463:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11429:15;11447:56;11464:22;11487:15;11447:16;:56::i;:::-;11538:20;:29;;;;;;;;;;;;11514:74;;-1:-1:-1;;;;;11514:74:0;;;;11429;;-1:-1:-1;;;;;;11538:29:0;;11514:72;;:74;;;;;11538:20;;11514:74;;;;;;11538:20;:29;11514:74;;;5:2:-1;;;;30:1;27;20:12;5:2;11514:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;11625:20:0;:29;;;;;;;;;;;;11604:51;;-1:-1:-1;;;;;11625:29:0;;;;-1:-1:-1;11604:51:0;;11625:20;11604:51;11673:20;:29;;;;;;;;;;11666:36;;-1:-1:-1;;;;;;11666:36:0;;;-1:-1:-1;;;11231:481:0:o;5480:26::-;;;-1:-1:-1;;;;;5480:26:0;;:::o;15997:219::-;16120:7;16179:10;16191:15;16162:45;;;;;;-1:-1:-1;;;;;16162:45:0;-1:-1:-1;;;;;16162:45:0;;;;;;;;;;;;;;;;;66:2:-1;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;4834:61:0;;;;;;;;;;;;-1:-1:-1;;;;;4834:61:0;;:::o;12536:236::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12665:10;:55;12676:43;12691:10;12703:15;12676:14;:43::i;:::-;12665:55;;;;;;;;;;;;;;-1:-1:-1;12665:55:0;12658:62;;-1:-1:-1;;12658:62:0;;;12736:28;;-1:-1:-1;;;;;12736:28:0;;;;;;;;;;;;;;;;;12536:236;;:::o;14755:246::-;14883:7;14915:25;:78;14968:22;14951:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14951:40:0;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;14951:40:0;;14941:51;;;;;;;;;14915:78;;;;;;;;;;;;-1:-1:-1;14915:78:0;;-1:-1:-1;;;;;14915:78:0;;;-1:-1:-1;;;;;14755:246:0:o;16999:437::-;18198:11;;-1:-1:-1;;;;;18198:11:0;18184:10;:25;18176:81;;;;-1:-1:-1;;;;;18176:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17163:15;17208:22;17191:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;17191:40:0;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;17191:40:0;;;17181:51;;;;;;;;;-1:-1:-1;17265:34:0;;;274:1:-1;17265:34:0;;;;;;;-1:-1:-1;;;;;17310:72:0;;-1:-1:-1;;;;;17310:72:0;;;;;;;;;17181:51;;-1:-1:-1;17265:34:0;;;;;-1:-1:-1;17265:34:0;;-1:-1:-1;17310:51:0;;:72;;;;;-1:-1:-1;;;17310:72:0;;;;;;;;-1:-1:-1;17265:34:0;17310:72;;;5:2:-1;;;;30:1;27;20:12;5:2;17310:72:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;17398:30:0;;-1:-1:-1;;;;;17398:30:0;;;-1:-1:-1;17398:30:0;;-1:-1:-1;17398:30:0;;;18268:1;;16999:437;;:::o;5359:48::-;;;;;;;;;;;;;;;:::o;9165:583::-;9378:15;18471:10;:54;18482:42;18497:10;18509:14;18482;:42::i;:::-;18471:54;;;;;;;;;;;-1:-1:-1;18471:54:0;;;;;:85;;-1:-1:-1;18545:10:0;18529:27;;;;:15;:27;;;;;;;;18471:85;18463:176;;;;-1:-1:-1;;;;;18463:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9422:22;9446:15;19136:1;;;19066:57;9422:22;9446:15;19066:16;:57::i;:::-;19045:79;;;;;;;;;;;-1:-1:-1;19045:79:0;;-1:-1:-1;;;;;19045:79:0;:93;19037:130;;;;;-1:-1:-1;;;;;19037:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9481:38;9550:2;9554;9522:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;9522:35:0;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9522:35:0;9481:76;;9658:14;9568:20;:79;9589:57;9606:22;9630:15;9589:16;:57::i;:::-;9568:79;;;;;;;;;;;;;-1:-1:-1;9568:79:0;;;:105;;-1:-1:-1;;;;;;9568:105:0;-1:-1:-1;;;;;9568:105:0;;;;;;9689:51;;;;;;;;-1:-1:-1;9689:51:0;19178:1;18650;;9165:583;;;;;:::o;17710:310::-;17886:15;18471:10;:54;18482:42;18497:10;18509:14;18482;:42::i;:::-;18471:54;;;;;;;;;;;-1:-1:-1;18471:54:0;;;;;:85;;-1:-1:-1;18545:10:0;18529:27;;;;:15;:27;;;;;;;;18471:85;18463:176;;;;-1:-1:-1;;;;;18463:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18001:11;17919:20;:79;17940:57;17957:22;17981:15;17940:16;:57::i;:::-;17919:79;;;;;;;;;;;;:93;;;;;-1:-1:-1;;;;;17919:93:0;;;;;-1:-1:-1;;;;;17919:93:0;;;;;;17710:310;;;;:::o;4771:56::-;;;;;;;;;;;;;-1:-1:-1;;;;;4771:56:0;;:::o;9756:514::-;9935:15;18471:10;:54;18482:42;18497:10;18509:14;18482;:42::i;:::-;18471:54;;;;;;;;;;;-1:-1:-1;18471:54:0;;;;;:85;;-1:-1:-1;18545:10:0;18529:27;;;;:15;:27;;;;;;;;18471:85;18463:176;;;;-1:-1:-1;;;;;18463:176:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9981:2;9985;9989:22;10013:15;19359:38;19424:20;:79;19445:57;19462:22;19486:15;19445:16;:57::i;:::-;19424:79;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19424:79:0;19359:145;;19591:14;-1:-1:-1;;;;;19591:17:0;;:19;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19591:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19591:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19591:19:0;19612;;;-1:-1:-1;;;;;19612:19:0;;;;-1:-1:-1;;;;;19612:17:0;;;;;:19;;;;;19591;;19612;;;;;;;:17;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;19612:19:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19612:19:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19612:19:0;19574:58;;;19612:19;19574:58;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;19574:58:0;;;;;19564:69;;;;;;19533:26;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19533:26:0;;;;;;;19523:37;;;;;;;:110;;19515:164;;;;;-1:-1:-1;;;;;19515:164:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10040:16;10059:20;:79;10080:57;10097:22;10121:15;10080:16;:57::i;:::-;10059:79;;;;;;;;;;;;;-1:-1:-1;10059:79:0;;;;10149:57;;-1:-1:-1;;;;;10149:57:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10059:79:0;;;;-1:-1:-1;10059:79:0;;10149:49;;:57;;;;;-1:-1:-1;;10149:57:0;;;;;-1:-1:-1;10059:79:0;10149:57;;;5:2:-1;;;;30:1;27;20:12;5:2;10149:57:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;10222:40:0;;-1:-1:-1;;;;;10222:40:0;;;-1:-1:-1;10222:40:0;;-1:-1:-1;10222:40:0;;;19690:1;18650;;;;;9756:514;;;;;:::o;6990:878::-;18732:10;18716:27;;;;:15;:27;;;;;;;;18708:108;;;;-1:-1:-1;;;;;18708:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7391:15;7436:22;7419:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7419:40:0;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7419:40:0;;;7409:51;;;;;;7391:69;;7473:35;7557:12;7584:9;7608:14;7637:10;7662:11;7688:6;7709:22;7511:221;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7511:221:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7511:221:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7511:221:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7511:221:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7511:221:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7511:221:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;7745:34:0;;;;:25;:34;;;;;;:53;;-1:-1:-1;;;;;;7745:53:0;-1:-1:-1;;;;;7745:53:0;;;;;;;;7814:46;;7745:53;;-1:-1:-1;7745:53:0;7814:46;;7745:34;7814:46;18827:1;;6990:878;;;;;;;;:::o;8443:716::-;18732:10;18716:27;;;;:15;:27;;;;;;;;18708:108;;;;-1:-1:-1;;;;;18708:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8759:15;8804:22;8787:40;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;8787:40:0;;;;;;;26:21:-1;;;-1:-1;;22:32;6:49;;8787:40:0;;;8777:51;;;;;;;;;-1:-1:-1;8861:34:0;;;274:1:-1;8861:34:0;;;;;;-1:-1:-1;;;;;8906:182:0;;;;;;;;;;;;;;;;;8777:51;;-1:-1:-1;;;;;;8861:34:0;;;;-1:-1:-1;8861:34:0;;-1:-1:-1;8906:58:0;;:182;;-1:-1:-1;9006:9:0;;9030:10;;9055:11;;9081:6;;8906:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8906:182:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8906:182:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8906:182:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8906:182:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8906:182:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8906:182:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;9106:45:0;;-1:-1:-1;;;;;9106:45:0;;;-1:-1:-1;9106:45:0;;-1:-1:-1;9106:45:0;;;18827:1;;8443:716;;;;;;:::o;4290:15412::-;;;;;;;;:::o;:::-;;;;;;;;:::o

Swarm Source

bzzr://639640f3117e053f16288259faddc1c89c79562b6dad921c2ac40cae705116a3

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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