Latest 25 transactions from a total of 2792 transactions

TxHash Age From To Value [TxFee]
0xb7198c0c50fb37908b1628e5267d062410b707bd48f5f34263af248f8bfde6b430 days 22 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390523
0xd328d056a9d4fd3010573349a85778ae8a4b03473392ca964e7001f91efc066830 days 23 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000781174
0x26d7397719089d7ac0b579619813866abe39c8b5363886e32c18fe436b0e253b31 days 2 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x8f252641c5cc60f973c5ecfcccb5a5e9de3413f3d4843c972dd90dce1ceff52031 days 2 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x28ffbb1f1984e37adb7e675c5ee388eb2463658ae7f7064a92362bcbb277649631 days 3 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390523
0x92dd209a54186b8d2d521af6673c8b3e2a1f80518a2b492c1b417830b61ac31d31 days 5 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x6627ededdaffabe8036312e32211ae56859d18016a9774769e266759e67c6bf731 days 6 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x48e2cb5a10b0aaef19282d2d68b9252de884d1b72a1b989a441f88b68e93a1a331 days 7 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000781046
0xe41268232eb50b753c8bbef8e3e581e4bafe0512cb22798cbd7c59c288aa544431 days 9 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x60ffa9b3a395635340a2594fdf6b2e9b95f91660c841d9da7fc3847c2fd64cf431 days 9 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x9198386d8d37b4c96f158d7e556dc4e5473bb97e98e3a5120689a9f8d5a34c1331 days 10 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390459
0x745f096b5cd06b20ca8c5e2a5ea1d915c1f875fdaa5076627fac3ac8931e395e32 days 4 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.002733661
0xcf28a75019fd404aeab35c4fec1dfab71bc3489b3a574556c51ee70129410a0b32 days 5 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390523
0x1b609ea75b15456abf2db0a6c79212798b2d0415ce2b8138409d0739429f945232 days 5 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0xa419732c9a3b8ccc23a67add0d9da08390f90b6caf0731ce01a2fc465f447db532 days 7 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0xa40e87db6e9b5d33bace90a927a93f5cfd6ac9ba0381bd9c72c805800e53eade32 days 7 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390587
0x64a0c8a3e2503f3db94cbf819ae7b1fdd9bc3184a1276674904dda68554af93232 days 9 hrs ago0x92b5ae365272b50495a6c21cad35652071ff7497  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.0002724997
0xda3125ab1f5cd4a625d7a93a797356fd3e1efd6f8649ef4428047c31dc39c92233 days 5 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000390505
0xf8084e4fc03ce612752fcaba4efd0d6d4de0eee2fe64d09f11abf85424bc3fcb33 days 5 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000310273
0xf1d903641b4368fbf5e9d0dabdcc087bf2cb08282a3c2b4b22ea562a5a252bae33 days 6 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000246982
0xfd7ca9191074fcb421829b58983a98da3933fdcd238c9a5dd3f602a15af78c6833 days 6 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000246982
0x7ddc751022556a12deb2fa9379fe818031c2d06b3970e27e0291f7e36037c52a33 days 6 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000434202
0xdf08da5bc80daea80fa0f5f2831542fcdba8cc72f3df45835a4a5d52f3f0a0e333 days 22 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000389842
0x6690ac2c4b5ce678ef85ff334b142323175e8d94c4eee8ee3c7e3e26fc25ebd634 days 5 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.000389842
0x40716dc3f5a69f2663c135cdda99874c7bcb2122a95d1a2e7324b70d4982b61436 days 8 hrs ago0x11d56d0b2c676e3966fd7b8f0eba9d009bce4383  IN   0xe702a5629d7da74ef38594733b340afd37060dd70 Ether0.0004678104
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 25 Internal Txns, Click here To View More View All
ParentTxHash Block Age From To Value
0xb7198c0c50fb37908b1628e5267d062410b707bd48f5f34263af248f8bfde6b4354170230 days 22 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0xb7198c0c50fb37908b1628e5267d062410b707bd48f5f34263af248f8bfde6b4354170230 days 22 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0xb7198c0c50fb37908b1628e5267d062410b707bd48f5f34263af248f8bfde6b4354170230 days 22 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0xd328d056a9d4fd3010573349a85778ae8a4b03473392ca964e7001f91efc0668354130430 days 23 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0xd328d056a9d4fd3010573349a85778ae8a4b03473392ca964e7001f91efc0668354130430 days 23 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0xd328d056a9d4fd3010573349a85778ae8a4b03473392ca964e7001f91efc0668354130430 days 23 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x26d7397719089d7ac0b579619813866abe39c8b5363886e32c18fe436b0e253b354071331 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x26d7397719089d7ac0b579619813866abe39c8b5363886e32c18fe436b0e253b354071331 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x26d7397719089d7ac0b579619813866abe39c8b5363886e32c18fe436b0e253b354071331 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x8f252641c5cc60f973c5ecfcccb5a5e9de3413f3d4843c972dd90dce1ceff520354071031 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x8f252641c5cc60f973c5ecfcccb5a5e9de3413f3d4843c972dd90dce1ceff520354071031 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x8f252641c5cc60f973c5ecfcccb5a5e9de3413f3d4843c972dd90dce1ceff520354071031 days 2 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x28ffbb1f1984e37adb7e675c5ee388eb2463658ae7f7064a92362bcbb2776496354044031 days 3 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x28ffbb1f1984e37adb7e675c5ee388eb2463658ae7f7064a92362bcbb2776496354044031 days 3 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x28ffbb1f1984e37adb7e675c5ee388eb2463658ae7f7064a92362bcbb2776496354044031 days 3 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x92dd209a54186b8d2d521af6673c8b3e2a1f80518a2b492c1b417830b61ac31d353981231 days 5 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x92dd209a54186b8d2d521af6673c8b3e2a1f80518a2b492c1b417830b61ac31d353981231 days 5 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x92dd209a54186b8d2d521af6673c8b3e2a1f80518a2b492c1b417830b61ac31d353981231 days 5 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x6627ededdaffabe8036312e32211ae56859d18016a9774769e266759e67c6bf7353979831 days 6 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x6627ededdaffabe8036312e32211ae56859d18016a9774769e266759e67c6bf7353979831 days 6 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x6627ededdaffabe8036312e32211ae56859d18016a9774769e266759e67c6bf7353979831 days 6 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0x48e2cb5a10b0aaef19282d2d68b9252de884d1b72a1b989a441f88b68e93a1a3353944131 days 7 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x48e2cb5a10b0aaef19282d2d68b9252de884d1b72a1b989a441f88b68e93a1a3353944131 days 7 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
0x48e2cb5a10b0aaef19282d2d68b9252de884d1b72a1b989a441f88b68e93a1a3353944131 days 7 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x3807b7a05cf95574eecc38600d4ed9dc1c5f90250 Ether
0xe41268232eb50b753c8bbef8e3e581e4bafe0512cb22798cbd7c59c288aa5444353887631 days 9 hrs ago0xe702a5629d7da74ef38594733b340afd37060dd70x45810d7157385c30ac784612e3471229ee3206b10 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: HoQuPlatform
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;


/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}


/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipRenounced(owner);
        owner = address(0);
    }
}


contract HoQuConfig is Ownable {
    using SafeMath for uint256;

    address public commissionWallet;

    // HoQu platform commission in ether
    uint256 public commission = 0.005 ether;

    // a list of system owners' addresses
    mapping (uint16 => address) public owners;
    // a number of owners
    uint16 public ownersCount;

    event CommissionWalletChanged(address indexed changedBy, address commissionWallet);
    event CommissionChanged(address indexed changedBy, uint256 commission);
    event SystemOwnerAdded(address indexed newOwner);
    event SystemOwnerChanged(address indexed previousOwner, address newOwner);
    event SystemOwnerDeleted(address indexed deletedOwner);

    modifier onlyOwners() {
        require(msg.sender == owner || isAllowed(msg.sender));
        _;
    }

    constructor(
        address _commissionWallet
    ) public {
        commissionWallet = _commissionWallet;
    }

    function setCommissionWallet(address _commissionWallet) public onlyOwners {
        require(_commissionWallet != address(0));
        emit CommissionWalletChanged(msg.sender, _commissionWallet);
        commissionWallet = _commissionWallet;
    }

    function setCommission(uint256 _commission) public onlyOwners {
        require(_commission > 0);
        emit CommissionChanged(msg.sender, _commission);
        commission = _commission;
    }

    /**
    * Add new owner to the list of system owners
    *
    * @param _owner ethereum address of the owner
    */
    function addOwner(address _owner) public onlyOwners {
        owners[ownersCount] = _owner;
        ownersCount++;
        emit SystemOwnerAdded(_owner);
    }

    /**
    * Set the existing system owner's ethereum address
    *
    * @param i an index of existing system owner
    * @param _owner new ethereum address of the owner
    */
    function changeOwner(uint16 i, address _owner) public onlyOwners {
        require(owners[i] == address(0));
        emit SystemOwnerChanged(owners[i], _owner);
        owners[i] = _owner;
    }

    /**
    * Delete the existing system owner's ethereum address from the list of system owners
    *
    * @param i an index of existing system owner
    */
    function deleteOwner(uint16 i) public onlyOwners {
        require(owners[i] != address(0));
        emit SystemOwnerDeleted(owners[i]);
        owners[i] = address(0);
    }

    /**
    * Check that provided ethereum address is a system owner address
    *
    * @param _owner ethereum address
    */
    function isAllowed(address _owner) public returns (bool) {
        require(_owner != address(0));

        for (uint16 i = 0; i < ownersCount; i++) {
            address _ownerAddr = owners[i];
            if (_owner == _ownerAddr) {
                return true;
            }
        }

        if (_owner == owner) {
            return true;
        }

        return false;
    }
}


contract HoQuStorageSchema {
    enum Status {NotExists, Created, Pending, Active, Done, Declined}
    enum KycLevel {Undefined, Tier1, Tier2, Tier3, Tier4, Tier5}

    struct User {
        address ownerAddress;
        mapping (uint8 => address) addresses;
        uint8 numOfAddresses;
        string role;
        KycLevel kycLevel;
        string pubKey;
        uint createdAt;
        Status status;
    }

    struct Identification {
        bytes16 userId;
        bytes16 companyId;
        string idType;
        string name;
        mapping (uint16 => KycReport) kycReports;
        uint16 numOfKycReports;
        uint createdAt;
        Status status;
    }

    struct KycReport {
        string meta;
        KycLevel kycLevel;
        string dataUrl;
        uint createdAt;
    }

    struct Stats {
        uint256 rating;
        uint256 volume;
        uint256 members;
        uint256 alfa;
        uint256 beta;
        Status status;
    }

    struct Company {
        bytes16 ownerId;
        string name;
        string dataUrl;
        uint createdAt;
        Status status;
    }

    struct Network {
        bytes16 ownerId;
        string name;
        string dataUrl;
        uint createdAt;
        Status status;
    }

    struct Tracker {
        bytes16 ownerId;
        bytes16 networkId;
        string name;
        string dataUrl;
        uint createdAt;
        Status status;
    }

    struct Offer {
        bytes16 ownerId;
        bytes16 networkId;
        bytes16 merchantId;
        address payerAddress;
        string name;
        string dataUrl;
        uint256 cost;
        uint createdAt;
        Status status;
    }

    struct AdCampaign {
        bytes16 ownerId;
        bytes16 offerId;
        address contractAddress;
        uint createdAt;
        Status status;
    }
}


contract HoQuStorage is HoQuStorageSchema {
    using SafeMath for uint256;

    HoQuConfig public config;

    mapping (bytes16 => User) public users;
    mapping (bytes16 => Identification) public ids;
    mapping (bytes16 => Stats) public stats;
    mapping (bytes16 => Company) public companies;
    mapping (bytes16 => Network) public networks;
    mapping (bytes16 => Offer) public offers;
    mapping (bytes16 => Tracker) public trackers;
    mapping (bytes16 => AdCampaign) public adCampaigns;

    event UserRegistered(address indexed ownerAddress, bytes16 id, string role);
    event UserAddressAdded(address indexed ownerAddress, address additionalAddress, bytes16 id);
    event StatsChanged(address indexed ownerAddress, bytes16 id, uint256 rating);
    event IdentificationAdded(address indexed ownerAddress, bytes16 id, bytes16 userId, string name);
    event KycReportAdded(address indexed ownerAddress, KycLevel kycLevel);
    event CompanyRegistered(address indexed ownerAddress, bytes16 id, string name);
    event NetworkRegistered(address indexed ownerAddress, bytes16 id, string name);
    event TrackerRegistered(address indexed ownerAddress, bytes16 id, string name);
    event OfferAdded(address indexed ownerAddress, bytes16 id, string name);
    event AdCampaignAdded(address indexed ownerAddress, bytes16 id, address contractAddress);

    modifier onlyOwner() {
        require(config.isAllowed(msg.sender));
        _;
    }

    constructor(address configAddress) public {
        config = HoQuConfig(configAddress);
    }

    function setConfigAddress(address configAddress) public onlyOwner {
        config = HoQuConfig(configAddress);
    }

    function setUser(bytes16 id, string role, address ownerAddress, KycLevel kycLevel, string pubKey, Status status) public onlyOwner {
        if (users[id].status == Status.NotExists) {
            users[id] = User({
                ownerAddress: ownerAddress,
                createdAt : now,
                numOfAddresses : 1,
                role : role,
                kycLevel : KycLevel.Tier1,
                pubKey : pubKey,
                status : Status.Created
                });
            users[id].addresses[0] = ownerAddress;

            emit UserRegistered(ownerAddress, id, role);
        } else {
            if (bytes(role).length != 0) {
                users[id].role = role;
            }
            if (kycLevel != KycLevel.Undefined) {
                users[id].kycLevel = kycLevel;
            }
            if (bytes(pubKey).length != 0) {
                users[id].pubKey = pubKey;
            }
            if (status != Status.NotExists) {
                users[id].status = status;
            }
        }
    }

    function addUserAddress(bytes16 id, address ownerAddress) public onlyOwner {
        require(users[id].status != Status.NotExists);

        users[id].addresses[users[id].numOfAddresses] = ownerAddress;
        users[id].numOfAddresses++;

        emit UserAddressAdded(users[id].addresses[0], ownerAddress, id);
    }

    function getUserAddress(bytes16 id, uint8 num) public constant returns (address) {
        require(users[id].status != Status.NotExists);

        return users[id].addresses[num];
    }

    function setIdentification(bytes16 id, bytes16 userId, string idType, string name, bytes16 companyId, Status status) public onlyOwner {
        if (ids[id].status == Status.NotExists) {
            address ownerAddress = getUserAddress(userId, 0);

            ids[id] = Identification({
                createdAt : now,
                userId : userId,
                idType : idType,
                name: name,
                companyId : companyId,
                numOfKycReports : 0,
                status : Status.Created
                });

            emit IdentificationAdded(ownerAddress, id, userId, name);
        } else {
            if (bytes(idType).length != 0) {
                ids[id].idType = idType;
            }
            if (companyId.length != 0) {
                ids[id].companyId = companyId;
            }
            if (status != Status.NotExists) {
                ids[id].status = status;
            }
        }
    }

    function setStats(bytes16 id, bytes16 userId, uint256 rating, uint256 volume, uint256 members, uint256 alfa, uint256 beta, Status status) public onlyOwner {
        if (stats[id].status == Status.NotExists) {
            address ownerAddress = userId.length > 0 ? getUserAddress(userId, 0) : address(0);

            stats[id] = Stats({
                rating : rating,
                volume : volume,
                members : members,
                alfa : alfa,
                beta : beta,
                status : Status.Created
                });
            if (userId.length > 0) {
                stats[userId] = stats[id];
            }

            emit StatsChanged(ownerAddress, id, rating);
        } else {
            if (rating != 0) {
                stats[id].rating = rating;
                if (userId.length > 0) {
                    stats[userId].rating = rating;
                }
            }
            if (volume != 0) {
                stats[id].volume = volume;
                if (userId.length > 0) {
                    stats[userId].volume = volume;
                }
            }
            if (members != 0) {
                stats[id].members = members;
                if (userId.length > 0) {
                    stats[userId].members = members;
                }
            }
            if (alfa != 0) {
                stats[id].alfa = alfa;
                if (userId.length > 0) {
                    stats[userId].alfa = alfa;
                }
            }
            if (beta != 0) {
                stats[id].beta = beta;
                if (userId.length > 0) {
                    stats[userId].beta = beta;
                }
            }
            if (status != Status.NotExists) {
                stats[id].status = status;
            }
        }
    }

    function addKycReport(bytes16 id, string meta, KycLevel kycLevel, string dataUrl) public onlyOwner {
        require(ids[id].status != Status.NotExists);

        ids[id].kycReports[ids[id].numOfKycReports] = KycReport({
            createdAt : now,
            meta : meta,
            kycLevel : kycLevel,
            dataUrl : dataUrl
            });
        ids[id].numOfKycReports++;

        emit KycReportAdded(users[ids[id].userId].addresses[0], kycLevel);
    }

    function getKycReport(bytes16 id, uint16 num) public constant returns (uint, string, KycLevel, string) {
        require(ids[id].status != Status.NotExists);

        return (
        ids[id].kycReports[num].createdAt,
        ids[id].kycReports[num].meta,
        ids[id].kycReports[num].kycLevel,
        ids[id].kycReports[num].dataUrl
        );
    }

    function setCompany(bytes16 id, bytes16 ownerId, string name, string dataUrl, Status status) public onlyOwner {
        if (companies[id].status == Status.NotExists) {
            require(users[ownerId].status != Status.NotExists);
            require(users[ownerId].addresses[0] != address(0));

            companies[id] = Company({
                createdAt : now,
                ownerId : ownerId,
                name : name,
                dataUrl : dataUrl,
                status : Status.Created
                });

            emit CompanyRegistered(users[ownerId].addresses[0], id, name);
        } else {
            if (bytes(name).length != 0) {
                companies[id].name = name;
            }
            if (bytes(dataUrl).length != 0) {
                companies[id].dataUrl = dataUrl;
            }
            if (status != Status.NotExists) {
                companies[id].status = status;
            }
        }
    }

    function setNetwork(bytes16 id, bytes16 ownerId, string name, string dataUrl, Status status) public onlyOwner {
        if (networks[id].status == Status.NotExists) {
            require(users[ownerId].status != Status.NotExists);
            require(users[ownerId].addresses[0] != address(0));

            networks[id] = Network({
                createdAt : now,
                ownerId : ownerId,
                name : name,
                dataUrl : dataUrl,
                status : Status.Created
                });

            emit NetworkRegistered(users[ownerId].addresses[0], id, name);
        } else {
            if (bytes(name).length != 0) {
                networks[id].name = name;
            }
            if (bytes(dataUrl).length != 0) {
                networks[id].dataUrl = dataUrl;
            }
            if (status != Status.NotExists) {
                networks[id].status = status;
            }
        }
    }

    function setTracker(bytes16 id, bytes16 ownerId, bytes16 networkId, string name, string dataUrl, Status status) public onlyOwner {
        if (networkId.length != 0) {
            require(networks[networkId].status != Status.NotExists);
        }

        if (trackers[id].status == Status.NotExists) {
            require(users[ownerId].status != Status.NotExists);
            require(users[ownerId].addresses[0] != address(0));

            trackers[id] = Tracker({
                createdAt : now,
                ownerId : ownerId,
                networkId : networkId,
                name : name,
                dataUrl : dataUrl,
                status : Status.Created
                });

            emit TrackerRegistered(users[ownerId].addresses[0], id, name);
        } else {
            if (networkId.length != 0) {
                trackers[id].networkId = networkId;
            }
            if (bytes(name).length != 0) {
                trackers[id].name = name;
            }
            if (bytes(dataUrl).length != 0) {
                trackers[id].dataUrl = dataUrl;
            }
            if (status != Status.NotExists) {
                trackers[id].status = status;
            }
        }
    }

    function setOffer(bytes16 id, bytes16 ownerId, bytes16 networkId, bytes16 merchantId, address payerAddress, string name, string dataUrl, uint256 cost, Status status) public onlyOwner {
        if (networkId.length != 0) {
            require(networks[networkId].status != Status.NotExists);
        }
        if (merchantId.length != 0) {
            require(users[merchantId].status != Status.NotExists);
        }

        if (trackers[id].status == Status.NotExists) {
            require(users[ownerId].status != Status.NotExists);
            require(users[ownerId].addresses[0] != address(0));

            offers[id] = Offer({
                createdAt : now,
                networkId : networkId,
                merchantId: merchantId,
                ownerId : ownerId,
                payerAddress : payerAddress,
                name : name,
                dataUrl : dataUrl,
                cost : cost,
                status : Status.Created
                });

            emit OfferAdded(payerAddress, id, name);
        } else {
            if (networkId.length != 0) {
                offers[id].networkId = networkId;
            }
            if (merchantId.length != 0) {
                offers[id].merchantId = merchantId;
            }
            if (payerAddress != address(0)) {
                offers[id].payerAddress = payerAddress;
            }
            if (bytes(name).length != 0) {
                offers[id].name = name;
            }
            if (bytes(dataUrl).length != 0) {
                offers[id].dataUrl = dataUrl;
            }
            if (cost != 0) {
                offers[id].cost = cost;
            }
            if (status != Status.NotExists) {
                offers[id].status = status;
            }
        }
    }

    function setAdCampaign(bytes16 id, bytes16 ownerId, bytes16 offerId, address contractAddress, Status status) public onlyOwner {
        if (trackers[id].status == Status.NotExists) {
            require(users[ownerId].status != Status.NotExists);
            require(users[ownerId].addresses[0] != address(0));
            require(offers[offerId].status != Status.NotExists);

            address ownerAddress = getUserAddress(ownerId, 0);

            adCampaigns[id] = AdCampaign({
                createdAt : now,
                offerId : offerId,
                ownerId : ownerId,
                contractAddress : contractAddress,
                status : Status.Created
                });

            emit AdCampaignAdded(ownerAddress, id, contractAddress);
        } else {
            if (contractAddress != address(0)) {
                adCampaigns[id].contractAddress = contractAddress;
            }
            if (status != Status.NotExists) {
                adCampaigns[id].status = status;
            }
        }
    }
}


contract HoQuAdCampaignI {
    function addLead(bytes16 id, bytes16 trackerId, string meta, string dataUrl, uint256 price) public;
    function addLeadIntermediary(bytes16 id, address intermediaryAddress, uint32 percent) public;
    function transactLead(bytes16 id) public;
    function setLeadStatus(bytes16 id, HoQuStorageSchema.Status status) public;
}


contract HoQuStorageAccessor {
    using SafeMath for uint256;

    HoQuConfig public config;
    HoQuStorage public store;

    modifier onlyOwner() {
        require(config.isAllowed(msg.sender));
        _;
    }

    constructor(
        address configAddress,
        address storageAddress
    ) public {
        config = HoQuConfig(configAddress);
        store = HoQuStorage(storageAddress);
    }

    function setConfigAddress(address configAddress) public onlyOwner {
        config = HoQuConfig(configAddress);
    }

    function setStorageAddress(address storageAddress) public onlyOwner {
        store = HoQuStorage(storageAddress);
    }

    function getUser(bytes16 id) internal returns (HoQuStorageSchema.User) {
        HoQuStorageSchema.User memory user;
        (user.ownerAddress, user.numOfAddresses, user.role, user.kycLevel, user.pubKey, user.createdAt, user.status) = store.users(id);

        return user;
    }

    function setUser(bytes16 id, HoQuStorageSchema.User user) internal {
        return store.setUser(id, user.role, user.ownerAddress, user.kycLevel, user.pubKey, user.status);
    }

    function getIdentification(bytes16 id) internal returns (HoQuStorageSchema.Identification) {
        HoQuStorageSchema.Identification memory identification;
        (identification.userId, identification.companyId, identification.idType, identification.name, identification.numOfKycReports, identification.createdAt, identification.status) = store.ids(id);

        return identification;
    }

    function setIdentification(bytes16 id, HoQuStorageSchema.Identification identification) internal {
        return store.setIdentification(id, identification.userId, identification.idType, identification.name, identification.companyId, identification.status);
    }

    function getKyc(bytes16 id, uint16 num) internal returns (HoQuStorageSchema.KycReport) {
        HoQuStorageSchema.KycReport memory kycReport;
        (kycReport.createdAt, kycReport.meta, kycReport.kycLevel, kycReport.dataUrl) = store.getKycReport(id, num);

        return kycReport;
    }

    function addKyc(bytes16 id, HoQuStorageSchema.KycReport kycReport) internal {
        return store.addKycReport(id, kycReport.meta, kycReport.kycLevel, kycReport.dataUrl);
    }

    function getStats(bytes16 id) internal returns (HoQuStorageSchema.Stats) {
        HoQuStorageSchema.Stats memory stats;
        (stats.rating, stats.volume, stats.members, stats.alfa, stats.beta, stats.status) = store.stats(id);

        return stats;
    }

    function setStats(bytes16 id, bytes16 userId, HoQuStorageSchema.Stats stats) internal {
        return store.setStats(id, userId, stats.rating, stats.volume, stats.members, stats.alfa, stats.beta, stats.status);
    }

    function getCompany(bytes16 id) internal returns (HoQuStorageSchema.Company) {
        HoQuStorageSchema.Company memory company;
        (company.ownerId, company.name, company.dataUrl, company.createdAt, company.status) = store.companies(id);

        return company;
    }

    function setCompany(bytes16 id, HoQuStorageSchema.Company company) internal {
        return store.setCompany(id, company.ownerId, company.name, company.dataUrl, company.status);
    }

    function getNetwork(bytes16 id) internal returns (HoQuStorageSchema.Network) {
        HoQuStorageSchema.Network memory network;
        (network.ownerId, network.name, network.dataUrl, network.createdAt, network.status) = store.networks(id);

        return network;
    }

    function setNetwork(bytes16 id, HoQuStorageSchema.Network network) internal {
        return store.setNetwork(id, network.ownerId, network.name, network.dataUrl, network.status);
    }

    function getTracker(bytes16 id) internal returns (HoQuStorageSchema.Tracker) {
        HoQuStorageSchema.Tracker memory tracker;
        (tracker.ownerId, tracker.networkId, tracker.name, tracker.dataUrl, tracker.createdAt, tracker.status) = store.trackers(id);

        return tracker;
    }

    function setTracker(bytes16 id, HoQuStorageSchema.Tracker tracker) internal {
        return store.setTracker(id, tracker.ownerId, tracker.networkId, tracker.name, tracker.dataUrl, tracker.status);
    }

    function getOffer(bytes16 id) internal returns (HoQuStorageSchema.Offer) {
        HoQuStorageSchema.Offer memory offer;
        (offer.ownerId, offer.networkId, offer.merchantId, offer.payerAddress, offer.name, offer.dataUrl, offer.cost,) = store.offers(id);
        (, offer.createdAt, offer.status) = store.offers(id);

        return offer;
    }

    function setOffer(bytes16 id, HoQuStorageSchema.Offer offer) internal {
        return store.setOffer(id, offer.ownerId, offer.networkId, offer.merchantId, offer.payerAddress, offer.name, offer.dataUrl, offer.cost, offer.status);
    }

    function getAdCampaign(bytes16 id) internal returns (HoQuStorageSchema.AdCampaign) {
        HoQuStorageSchema.AdCampaign memory adCampaign;
        (adCampaign.ownerId, adCampaign.offerId, adCampaign.contractAddress, adCampaign.createdAt, adCampaign.status) = store.adCampaigns(id);

        return adCampaign;
    }

    function setAdCampaign(bytes16 id, HoQuStorageSchema.AdCampaign adCampaign) internal {
        return store.setAdCampaign(id, adCampaign.ownerId, adCampaign.offerId, adCampaign.contractAddress, adCampaign.status);
    }
}


contract HoQuPlatform is HoQuStorageAccessor {
    using SafeMath for uint256;

    event UserRegistered(address indexed ownerAddress, bytes16 id, string role);
    event UserAddressAdded(address indexed ownerAddress, address additionalAddress, bytes16 id);
    event UserPubKeyUpdated(address indexed ownerAddress, bytes16 id);
    event UserStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event IdentificationAdded(address indexed ownerAddress, bytes16 id, bytes16 userId, string name);
    event KycReportAdded(address indexed ownerAddress, HoQuStorageSchema.KycLevel kycLevel, bytes16 id, bytes16 userId);
    event CompanyRegistered(address indexed ownerAddress, bytes16 id, string name);
    event CompanyStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event NetworkRegistered(address indexed ownerAddress, bytes16 id, string name);
    event NetworkStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event TrackerRegistered(address indexed ownerAddress, bytes16 id, string name);
    event TrackerStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event OfferAdded(address indexed ownerAddress, bytes16 id, string name);
    event OfferStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event AdCampaignAdded(address indexed ownerAddress, bytes16 id, address contractAddress);
    event AdCampaignStatusChanged(address indexed ownerAddress, bytes16 id, HoQuStorageSchema.Status status);
    event LeadAdded(address indexed contractAddress, bytes16 adCampaignId, bytes16 id);
    event LeadTransacted(address indexed contractAddress, bytes16 adCampaignId, bytes16 id);

    constructor(
        address configAddress,
        address storageAddress
    ) HoQuStorageAccessor(
        configAddress,
        storageAddress
    ) public {}

    function registerUser(bytes16 id, string role, address ownerAddress, string pubKey) public onlyOwner {
        HoQuStorageSchema.User memory user = getUser(id);
        require(user.status == HoQuStorageSchema.Status.NotExists);

        user.ownerAddress = ownerAddress;
        user.role = role;
        user.pubKey = pubKey;
        setUser(id, user);

        emit UserRegistered(ownerAddress, id, role);
    }

    function addUserAddress(bytes16 id, address ownerAddress) public onlyOwner {
        store.addUserAddress(id, ownerAddress);

        address primaryAddress = getUserAddress(id, 0);
        emit UserAddressAdded(primaryAddress, ownerAddress, id);
    }

    function updateUserPubKey(bytes16 id, string pubKey) public onlyOwner {
        address primaryAddress = getUserAddress(id, 0);

        HoQuStorageSchema.User memory user = getUser(id);
        user.pubKey = pubKey;
        setUser(id, user);

        emit UserPubKeyUpdated(primaryAddress, id);
    }

    function setUserStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        address primaryAddress = getUserAddress(id, 0);

        HoQuStorageSchema.User memory user = getUser(id);
        user.status = status;

        setUser(id, user);

        emit UserStatusChanged(primaryAddress, id, status);
    }

    function getUserAddress(bytes16 id, uint8 num) public constant returns (address) {
        return store.getUserAddress(id, num);
    }

    function addIdentification(bytes16 id, bytes16 userId, string idType, string name, bytes16 companyId) public onlyOwner {
        HoQuStorageSchema.Identification memory identification = getIdentification(id);
        require(identification.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(userId, 0);

        identification.userId = userId;
        identification.idType =idType;
        identification.name = name;
        identification.companyId = companyId;

        setIdentification(id, identification);

        emit IdentificationAdded(primaryAddress, id, userId, name);
    }

    function addKycReport(bytes16 id, string meta, HoQuStorageSchema.KycLevel kycLevel, string dataUrl) public onlyOwner {
        HoQuStorageSchema.Identification memory identification = getIdentification(id);
        address primaryAddress = getUserAddress(identification.userId, 0);

        HoQuStorageSchema.KycReport memory kyc;
        kyc.meta = meta;
        kyc.kycLevel = kycLevel;
        kyc.dataUrl = dataUrl;

        addKyc(id, kyc);

        HoQuStorageSchema.User memory user = getUser(id);
        user.kycLevel = kycLevel;
        setUser(identification.userId, user);

        emit KycReportAdded(primaryAddress, kycLevel, id, identification.userId);
    }

    function getKycReport(bytes16 id, uint16 num) public constant returns (uint, string, HoQuStorageSchema.KycLevel, string) {
        return store.getKycReport(id, num);
    }

    function registerCompany(bytes16 id, bytes16 ownerId, string name, string dataUrl) public onlyOwner {
        HoQuStorageSchema.Company memory company = getCompany(id);
        require(company.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(ownerId, 0);

        company.ownerId = ownerId;
        company.name = name;
        company.dataUrl = dataUrl;

        setCompany(id, company);

        emit CompanyRegistered(primaryAddress, id, name);
    }

    function setCompanyStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        HoQuStorageSchema.Company memory company = getCompany(id);
        require(company.status != HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(company.ownerId, 0);

        company.status = status;
        setCompany(id, company);

        emit CompanyStatusChanged(primaryAddress, id, status);
    }

    function registerNetwork(bytes16 id, bytes16 ownerId, string name, string dataUrl) public onlyOwner {
        HoQuStorageSchema.Network memory network = getNetwork(id);
        require(network.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(ownerId, 0);

        network.ownerId = ownerId;
        network.name = name;
        network.dataUrl = dataUrl;

        setNetwork(id, network);

        emit NetworkRegistered(primaryAddress, id, name);
    }

    function setNetworkStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        HoQuStorageSchema.Network memory network = getNetwork(id);
        require(network.status != HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(network.ownerId, 0);

        network.status = status;
        setNetwork(id, network);

        emit NetworkStatusChanged(primaryAddress, id, status);
    }

    function registerTracker(bytes16 id, bytes16 ownerId, bytes16 networkId, string name, string dataUrl) public onlyOwner {
        HoQuStorageSchema.Tracker memory tracker = getTracker(id);
        require(tracker.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(ownerId, 0);

        tracker.ownerId = ownerId;
        tracker.networkId = networkId;
        tracker.name = name;
        tracker.dataUrl = dataUrl;

        setTracker(id, tracker);

        emit TrackerRegistered(primaryAddress, id, name);
    }

    function setTrackerStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        HoQuStorageSchema.Tracker memory tracker = getTracker(id);
        require(tracker.status != HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(tracker.ownerId, 0);

        tracker.status = status;
        setTracker(id, tracker);

        emit TrackerStatusChanged(primaryAddress, id, status);
    }

    function addOffer(bytes16 id, bytes16 ownerId, bytes16 networkId, bytes16 merchantId, address payerAddress, string name, string dataUrl, uint256 cost) public onlyOwner {
        HoQuStorageSchema.Offer memory offer = getOffer(id);
        require(offer.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(ownerId, 0);

        offer.ownerId = ownerId;
        offer.networkId = networkId;
        offer.merchantId = merchantId;
        offer.payerAddress = payerAddress;
        offer.name = name;
        offer.dataUrl = dataUrl;
        offer.cost = cost;

        setOffer(id, offer);

        emit OfferAdded(primaryAddress, id, name);
    }

    function setOfferStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        HoQuStorageSchema.Offer memory offer = getOffer(id);
        require(offer.status != HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(offer.ownerId, 0);

        offer.status = status;
        setOffer(id, offer);

        emit OfferStatusChanged(primaryAddress, id, status);
    }

    function addAdCampaign(bytes16 id, bytes16 ownerId, bytes16 offerId, address contractAddress) public onlyOwner {
        HoQuStorageSchema.AdCampaign memory adCampaign = getAdCampaign(id);
        require(adCampaign.status == HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(ownerId, 0);

        adCampaign.ownerId = ownerId;
        adCampaign.offerId = offerId;
        adCampaign.contractAddress = contractAddress;

        setAdCampaign(id, adCampaign);

        emit AdCampaignAdded(primaryAddress, id, contractAddress);
    }

    function setAdCampaignStatus(bytes16 id, HoQuStorageSchema.Status status) public onlyOwner {
        HoQuStorageSchema.AdCampaign memory adCampaign = getAdCampaign(id);
        require(adCampaign.status != HoQuStorageSchema.Status.NotExists);

        address primaryAddress = getUserAddress(adCampaign.ownerId, 0);

        adCampaign.status = status;
        setAdCampaign(id, adCampaign);

        emit AdCampaignStatusChanged(primaryAddress, id, status);
    }

    function addLead(bytes16 id, bytes16 adCampaignId, bytes16 trackerId, string meta, string dataUrl, uint256 price) public onlyOwner {
        HoQuAdCampaignI adContract = adCampaignContract(adCampaignId);
        adContract.addLead(id, trackerId, meta, dataUrl, price);

        emit LeadAdded(address(adContract), adCampaignId, id);
    }

    function addLeadIntermediary(bytes16 id, bytes16 adCampaignId, address intermediaryAddress, uint32 percent) public onlyOwner {
        HoQuAdCampaignI adContract = adCampaignContract(adCampaignId);
        adContract.addLeadIntermediary(id, intermediaryAddress, percent);
    }

    function transactLead(bytes16 id, bytes16 adCampaignId) public onlyOwner {
        HoQuAdCampaignI adContract = adCampaignContract(adCampaignId);
        adContract.transactLead(id);

        emit LeadTransacted(address(adContract), adCampaignId, id);
    }

    function setLeadStatus(bytes16 id, bytes16 adCampaignId, HoQuStorageSchema.Status _status) public onlyOwner {
        HoQuAdCampaignI adContract = adCampaignContract(adCampaignId);
        adContract.setLeadStatus(id, _status);
    }

    function adCampaignContract(bytes16 adCampaignId) internal returns (HoQuAdCampaignI) {
        HoQuStorageSchema.AdCampaign memory adCampaign = getAdCampaign(adCampaignId);
        require(adCampaign.status != HoQuStorageSchema.Status.NotExists);

        return HoQuAdCampaignI(adCampaign.contractAddress);
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setNetworkStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerAddress","type":"address"}],"name":"addUserAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"adCampaignId","type":"bytes16"}],"name":"transactLead","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"userId","type":"bytes16"},{"name":"idType","type":"string"},{"name":"name","type":"string"},{"name":"companyId","type":"bytes16"}],"name":"addIdentification","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"meta","type":"string"},{"name":"kycLevel","type":"uint8"},{"name":"dataUrl","type":"string"}],"name":"addKycReport","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerId","type":"bytes16"},{"name":"networkId","type":"bytes16"},{"name":"merchantId","type":"bytes16"},{"name":"payerAddress","type":"address"},{"name":"name","type":"string"},{"name":"dataUrl","type":"string"},{"name":"cost","type":"uint256"}],"name":"addOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setOfferStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerId","type":"bytes16"},{"name":"offerId","type":"bytes16"},{"name":"contractAddress","type":"address"}],"name":"addAdCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerId","type":"bytes16"},{"name":"networkId","type":"bytes16"},{"name":"name","type":"string"},{"name":"dataUrl","type":"string"}],"name":"registerTracker","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"storageAddress","type":"address"}],"name":"setStorageAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"adCampaignId","type":"bytes16"},{"name":"_status","type":"uint8"}],"name":"setLeadStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerId","type":"bytes16"},{"name":"name","type":"string"},{"name":"dataUrl","type":"string"}],"name":"registerNetwork","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"config","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"configAddress","type":"address"}],"name":"setConfigAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"pubKey","type":"string"}],"name":"updateUserPubKey","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"adCampaignId","type":"bytes16"},{"name":"trackerId","type":"bytes16"},{"name":"meta","type":"string"},{"name":"dataUrl","type":"string"},{"name":"price","type":"uint256"}],"name":"addLead","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"store","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"ownerId","type":"bytes16"},{"name":"name","type":"string"},{"name":"dataUrl","type":"string"}],"name":"registerCompany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"adCampaignId","type":"bytes16"},{"name":"intermediaryAddress","type":"address"},{"name":"percent","type":"uint32"}],"name":"addLeadIntermediary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setCompanyStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"bytes16"},{"name":"num","type":"uint8"}],"name":"getUserAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"id","type":"bytes16"},{"name":"num","type":"uint16"}],"name":"getKycReport","outputs":[{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"uint8"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setAdCampaignStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setUserStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"status","type":"uint8"}],"name":"setTrackerStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes16"},{"name":"role","type":"string"},{"name":"ownerAddress","type":"address"},{"name":"pubKey","type":"string"}],"name":"registerUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"configAddress","type":"address"},{"name":"storageAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"role","type":"string"}],"name":"UserRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"additionalAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"}],"name":"UserAddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"}],"name":"UserPubKeyUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"UserStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"userId","type":"bytes16"},{"indexed":false,"name":"name","type":"string"}],"name":"IdentificationAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"kycLevel","type":"uint8"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"userId","type":"bytes16"}],"name":"KycReportAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"name","type":"string"}],"name":"CompanyRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"CompanyStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"name","type":"string"}],"name":"NetworkRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"NetworkStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"name","type":"string"}],"name":"TrackerRegistered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"TrackerStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"name","type":"string"}],"name":"OfferAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"OfferStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"contractAddress","type":"address"}],"name":"AdCampaignAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"ownerAddress","type":"address"},{"indexed":false,"name":"id","type":"bytes16"},{"indexed":false,"name":"status","type":"uint8"}],"name":"AdCampaignStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"},{"indexed":false,"name":"adCampaignId","type":"bytes16"},{"indexed":false,"name":"id","type":"bytes16"}],"name":"LeadAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"contractAddress","type":"address"},{"indexed":false,"name":"adCampaignId","type":"bytes16"},{"indexed":false,"name":"id","type":"bytes16"}],"name":"LeadTransacted","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405234801561001057600080fd5b5060405160408061442a83398101604052805160209091015160008054600160a060020a03938416600160a060020a031991821617909155600180549390921692169190911790556143c3806100676000396000f3006080604052600436106101525763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416627c9b518114610157578063038060281461018157806305b8c83e146101af5780630c2ec385146101d757806318c8f3051461029157806329fc1ec91461034057806336d7523f1461040957806351a4d8a6146104315780635392a3f21461046b57806359b910d61461051c578063689708541461053d5780637618c8101461056b57806379502c551461061957806383a12de91461064a5780638a5463bd1461066b5780638f2e960d146106d3578063975057e7146107865780639f5dec061461079b578063a779dcac14610849578063a8800f0914610886578063c49e2fb1146108ae578063cc3436b9146108d6578063d7915dfb146109f9578063e03d8b6414610a21578063e7e5aad814610a49578063fd3fc08f14610a71575b600080fd5b34801561016357600080fd5b5061017f6001608060020a03196004351660ff60243516610b26565b005b34801561018d57600080fd5b5061017f6001608060020a031960043516600160a060020a0360243516610c87565b3480156101bb57600080fd5b5061017f6001608060020a031960043581169060243516610e01565b3480156101e357600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261017f9482356001608060020a03199081169560248035909216953695946064949293019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750505092356001608060020a0319169350610f6d92505050565b34801561029d57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261017f9583356001608060020a03191695369560449491939091019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b60ff8b35169b909a9099940197509195509182019350915081908401838280828437509497506111419650505050505050565b34801561034c57600080fd5b50604080516020600460a43581810135601f810184900484028501840190955284845261017f9482356001608060020a0319908116956024803583169660443584169660643590941695608435600160a060020a03169536959460c4949093920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050933594506112e69350505050565b34801561041557600080fd5b5061017f6001608060020a03196004351660ff602435166114c0565b34801561043d57600080fd5b5061017f6001608060020a031960043581169060243581169060443516600160a060020a0360643516611609565b34801561047757600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261017f946001608060020a0319813581169560248035831696604435909316953695608494920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506117519650505050505050565b34801561052857600080fd5b5061017f600160a060020a0360043516611909565b34801561054957600080fd5b5061017f6001608060020a03196004358116906024351660ff604435166119c0565b34801561057757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261017f9482356001608060020a03199081169560248035909216953695946064949293019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611af39650505050505050565b34801561062557600080fd5b5061062e611ca2565b60408051600160a060020a039092168252519081900360200190f35b34801561065657600080fd5b5061017f600160a060020a0360043516611cb1565b34801561067757600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261017f9583356001608060020a031916953695604494919390910191908190840183828082843750949750611d689650505050505050565b3480156106df57600080fd5b50604080516020601f60643560048181013592830184900484028501840190955281845261017f946001608060020a0319813581169560248035831696604435909316953695608494920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497505093359450611e729350505050565b34801561079257600080fd5b5061062e6120cb565b3480156107a757600080fd5b50604080516020600460443581810135601f810184900484028501840190955284845261017f9482356001608060020a03199081169560248035909216953695946064949293019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506120da9650505050505050565b34801561085557600080fd5b5061017f6001608060020a031960043581169060243516600160a060020a036044351663ffffffff60643516612245565b34801561089257600080fd5b5061017f6001608060020a03196004351660ff60243516612377565b3480156108ba57600080fd5b5061062e6001608060020a03196004351660ff602435166124be565b3480156108e257600080fd5b506108ff6001608060020a03196004351661ffff60243516612569565b604051808581526020018060200184600581111561091957fe5b60ff16815260200180602001838103835286818151815260200191508051906020019080838360005b8381101561095a578181015183820152602001610942565b50505050905090810190601f1680156109875780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156109ba5781810151838201526020016109a2565b50505050905090810190601f1680156109e75780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b348015610a0557600080fd5b5061017f6001608060020a03196004351660ff602435166126dc565b348015610a2d57600080fd5b5061017f6001608060020a03196004351660ff60243516612823565b348015610a5557600080fd5b5061017f6001608060020a03196004351660ff6024351661294e565b348015610a7d57600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261017f9583356001608060020a03191695369560449491939091019190819084018382808284375050604080516020601f818a01358b0180359182018390048302840183018552818452989b600160a060020a038b35169b909a909994019750919550918201935091508190840183828082843750949750612a959650505050505050565b610b2e61420d565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015610b7e57600080fd5b505af1158015610b92573d6000803e3d6000fd5b505050506040513d6020811015610ba857600080fd5b50511515610bb557600080fd5b610bbe84612c36565b9150600082608001516005811115610bd257fe5b1415610bdd57600080fd5b8151610bea9060006124be565b905060808201836005811115610bfc57fe5b90816005811115610c0957fe5b905250610c168483612de7565b80600160a060020a03167fce8cdf87291e737b80351c93570f8555ca6a0cc77c3fb29176e56af69dccdd84858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b60ff1681526020019250505060405180910390a250505050565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015610cd757600080fd5b505af1158015610ceb573d6000803e3d6000fd5b505050506040513d6020811015610d0157600080fd5b50511515610d0e57600080fd5b600154604080517f038060280000000000000000000000000000000000000000000000000000000081526001608060020a031986166004820152600160a060020a03858116602483015291519190921691630380602891604480830192600092919082900301818387803b158015610d8557600080fd5b505af1158015610d99573d6000803e3d6000fd5b50505050610da88360006124be565b60408051600160a060020a0385811682526001608060020a03198716602083015282519394508416927fb38b406c043d4a3feaa0192d2e1b02f317fa73c284eb3e70b9a1fde8612af1b3929181900390910190a2505050565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015610e5157600080fd5b505af1158015610e65573d6000803e3d6000fd5b505050506040513d6020811015610e7b57600080fd5b50511515610e8857600080fd5b610e9182612f7b565b604080517f835aef400000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051919250600160a060020a0383169163835aef409160248082019260009290919082900301818387803b158015610eff57600080fd5b505af1158015610f13573d6000803e3d6000fd5b5050604080516001608060020a03198087168252871660208201528151600160a060020a03861694507f3d86ba643ff86fc12dc0ce1d161b9407a79cb7131f80001f21c054658de5e1e893509081900390910190a2505050565b610f7561423d565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015610fc557600080fd5b505af1158015610fd9573d6000803e3d6000fd5b505050506040513d6020811015610fef57600080fd5b50511515610ffc57600080fd5b61100587612fb7565b915060008260c00151600581111561101957fe5b1461102357600080fd5b61102e8660006124be565b6001608060020a03198088168452604084018790526060840186905284166020840152905061105d8783613189565b80600160a060020a03167f8c03773782e9ed7fe9111421165a6cf12ce5855a4181cd1a8166d47d719ac07888888760405180846001608060020a0319166001608060020a0319168152602001836001608060020a0319166001608060020a031916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156110fc5781810151838201526020016110e4565b50505050905090810190601f1680156111295780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b61114961423d565b600061115361427b565b61115b6142a4565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b1580156111ac57600080fd5b505af11580156111c0573d6000803e3d6000fd5b505050506040513d60208110156111d657600080fd5b505115156111e357600080fd5b6111ec88612fb7565b93506111fd846000015160006124be565b87835292506020820186600581111561121257fe5b9081600581111561121f57fe5b90525060408201859052611233888361330f565b61123c88613476565b90506060810186600581111561124e57fe5b9081600581111561125b57fe5b905250835161126a908261365f565b82600160a060020a03167f09d7204a29a3e39bb12fb2c813212dd90eb69edaf26f867689c3e3a2eb6eb7b9878a8760000151604051808460058111156112ac57fe5b60ff1681526001608060020a0319938416602082015291909216604080830191909152519081900360600192509050a25050505050505050565b6112ee6142e7565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561133e57600080fd5b505af1158015611352573d6000803e3d6000fd5b505050506040513d602081101561136857600080fd5b5051151561137557600080fd5b61137e8a61379b565b91506000826101000151600581111561139357fe5b1461139d57600080fd5b6113a88960006124be565b6001608060020a0319808b168452898116602085015288166040840152600160a060020a03871660608401526080830186905260a0830185905260c0830184905290506113f58a83613adf565b80600160a060020a03167f5c9100ad970db426d43d47b3a9639dc42d9732871d99213dcb4984f7e71509d08b8760405180836001608060020a0319166001608060020a031916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611479578181015183820152602001611461565b50505050905090810190601f1680156114a65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050505050505050565b6114c86142e7565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561151857600080fd5b505af115801561152c573d6000803e3d6000fd5b505050506040513d602081101561154257600080fd5b5051151561154f57600080fd5b6115588461379b565b91506000826101000151600581111561156d57fe5b141561157857600080fd5b81516115859060006124be565b9050610100820183600581111561159857fe5b908160058111156115a557fe5b9052506115b28483613adf565b80600160a060020a03167ff9ae5f2bc88e6348608d627c5226159efd8467eb4ac3c635cdb648266e02cb12858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b611611614332565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561166157600080fd5b505af1158015611675573d6000803e3d6000fd5b505050506040513d602081101561168b57600080fd5b5051151561169857600080fd5b6116a186613c94565b91506000826080015160058111156116b557fe5b146116bf57600080fd5b6116ca8560006124be565b6001608060020a0319808716845285166020840152600160a060020a038416604084015290506116fa8683613db9565b604080516001608060020a031988168152600160a060020a0385811660208301528251908416927f62a609593cded926aabb6aef1e5b884804ad29d1bd1116ac4ce32085690d5ab2928290030190a2505050505050565b611759614360565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b1580156117a957600080fd5b505af11580156117bd573d6000803e3d6000fd5b505050506040513d60208110156117d357600080fd5b505115156117e057600080fd5b6117e987613e72565b915060008260a0015160058111156117fd57fe5b1461180757600080fd5b6118128660006124be565b6001608060020a0319808816845286166020840152604083018590526060830184905290506118418783614030565b80600160a060020a03167fb2f67f32df451ce918abd944fd5c8a29589848693057913c5060a8e0f293b388888660405180836001608060020a0319166001608060020a031916815260200180602001828103825283818151815260200191508051906020019080838360005b838110156118c55781810151838201526020016118ad565b50505050905090810190601f1680156118f25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a250505050505050565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b505050506040513d602081101561198457600080fd5b5051151561199157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015611a1057600080fd5b505af1158015611a24573d6000803e3d6000fd5b505050506040513d6020811015611a3a57600080fd5b50511515611a4757600080fd5b611a5083612f7b565b6040517f81e85aa30000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201908152919250600160a060020a038316916381e85aa39187918691602401826005811115611aaf57fe5b60ff16815260200192505050600060405180830381600087803b158015611ad557600080fd5b505af1158015611ae9573d6000803e3d6000fd5b5050505050505050565b611afb61420d565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015611b4b57600080fd5b505af1158015611b5f573d6000803e3d6000fd5b505050506040513d6020811015611b7557600080fd5b50511515611b8257600080fd5b611b8b86612c36565b9150600082608001516005811115611b9f57fe5b14611ba957600080fd5b611bb48560006124be565b6001608060020a03198616835260208301859052604083018490529050611bdb8683612de7565b80600160a060020a03167f592e83ede8c846dffd6e4edcbe77983b153bec820ac697aa34a236147b1341e0878660405180836001608060020a0319166001608060020a031916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611c5f578181015183820152602001611c47565b50505050905090810190601f168015611c8c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2505050505050565b600054600160a060020a031681565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b158015611d0257600080fd5b505af1158015611d16573d6000803e3d6000fd5b505050506040513d6020811015611d2c57600080fd5b50511515611d3957600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000611d726142a4565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b158015611dc357600080fd5b505af1158015611dd7573d6000803e3d6000fd5b505050506040513d6020811015611ded57600080fd5b50511515611dfa57600080fd5b611e058460006124be565b9150611e1084613476565b608081018490529050611e23848261365f565b604080516001608060020a0319861681529051600160a060020a038416917f85e1546b8c89c1a56c4237d2608010366813f87b475163aadf4074e5bc29339b919081900360200190a250505050565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b158015611ec257600080fd5b505af1158015611ed6573d6000803e3d6000fd5b505050506040513d6020811015611eec57600080fd5b50511515611ef957600080fd5b611f0286612f7b565b6040517f7a8187cf0000000000000000000000000000000000000000000000000000000081526001608060020a0319808a166004830190815290881660248301526084820185905260a060448301908152875160a48401528751939450600160a060020a03851693637a8187cf938c938b938b938b938b939291606482019160c40190602088019080838360005b83811015611fa8578181015183820152602001611f90565b50505050905090810190601f168015611fd55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015612008578181015183820152602001611ff0565b50505050905090810190601f1680156120355780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b15801561205957600080fd5b505af115801561206d573d6000803e3d6000fd5b5050604080516001608060020a0319808b1682528b1660208201528151600160a060020a03861694507f4d5402ce2635084c7def60402936ba18370a5a5d055ecdddc10721afa736ce4293509081900390910190a250505050505050565b600154600160a060020a031681565b6120e261420d565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561213257600080fd5b505af1158015612146573d6000803e3d6000fd5b505050506040513d602081101561215c57600080fd5b5051151561216957600080fd5b61217286614104565b915060008260800151600581111561218657fe5b1461219057600080fd5b61219b8560006124be565b6001608060020a031986168352602083018590526040830184905290506121c28683614183565b80600160a060020a03167f0eb23d662c57754d23afdc1cffa6246fbae3bbe843eec5c42a5a5223c21414ed878660405180836001608060020a0319166001608060020a0319168152602001806020018281038252838181518152602001915080519060200190808383600083811015611c5f578181015183820152602001611c47565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561229557600080fd5b505af11580156122a9573d6000803e3d6000fd5b505050506040513d60208110156122bf57600080fd5b505115156122cc57600080fd5b6122d584612f7b565b604080517f366170450000000000000000000000000000000000000000000000000000000081526001608060020a031988166004820152600160a060020a03868116602483015263ffffffff8616604483015291519293509083169163366170459160648082019260009290919082900301818387803b15801561235857600080fd5b505af115801561236c573d6000803e3d6000fd5b505050505050505050565b61237f61420d565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b1580156123cf57600080fd5b505af11580156123e3573d6000803e3d6000fd5b505050506040513d60208110156123f957600080fd5b5051151561240657600080fd5b61240f84614104565b915060008260800151600581111561242357fe5b141561242e57600080fd5b815161243b9060006124be565b90506080820183600581111561244d57fe5b9081600581111561245a57fe5b9052506124678483614183565b80600160a060020a03167f14404ec3e30e0b13c4ef42e76c8fd3afe300c9bf51761965c78d348ff45cf2f0858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b600154604080517fc49e2fb10000000000000000000000000000000000000000000000000000000081526001608060020a03198516600482015260ff841660248201529051600092600160a060020a03169163c49e2fb191604480830192602092919082900301818787803b15801561253657600080fd5b505af115801561254a573d6000803e3d6000fd5b505050506040513d602081101561256057600080fd5b50519392505050565b600154604080517fcc3436b90000000000000000000000000000000000000000000000000000000081526001608060020a03198516600482015261ffff84166024820152905160009260609284928492600160a060020a03169163cc3436b9916044808301928792919082900301818387803b1580156125e857600080fd5b505af11580156125fc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052608081101561262557600080fd5b81516020830180519193928301929164010000000081111561264657600080fd5b8201602081018481111561265957600080fd5b815164010000000081118282018710171561267357600080fd5b5050602082015160409092018051919492939164010000000081111561269857600080fd5b820160208101848111156126ab57600080fd5b81516401000000008111828201871017156126c557600080fd5b50969d959c50939a50929850929650505050505050565b6126e4614332565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b505050506040513d602081101561275e57600080fd5b5051151561276b57600080fd5b61277484613c94565b915060008260800151600581111561278857fe5b141561279357600080fd5b81516127a09060006124be565b9050608082018360058111156127b257fe5b908160058111156127bf57fe5b9052506127cc8483613db9565b80600160a060020a03167fa25922380013ceba1e6f7c02184e30818a465ac4d7107ac4357b5883887b5af4858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b600061282d6142a4565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b15801561287e57600080fd5b505af1158015612892573d6000803e3d6000fd5b505050506040513d60208110156128a857600080fd5b505115156128b557600080fd5b6128c08460006124be565b91506128cb84613476565b905060c081018360058111156128dd57fe5b908160058111156128ea57fe5b9052506128f7848261365f565b81600160a060020a03167f183408f9d1ce45bacc33cd1a5ef30bf3caccbae9e28fcc8916b62185fdd5ac4d858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b612956614360565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169163babcc5399160248082019260209290919082900301818787803b1580156129a657600080fd5b505af11580156129ba573d6000803e3d6000fd5b505050506040513d60208110156129d057600080fd5b505115156129dd57600080fd5b6129e684613e72565b915060008260a0015160058111156129fa57fe5b1415612a0557600080fd5b8151612a129060006124be565b905060a08201836005811115612a2457fe5b90816005811115612a3157fe5b905250612a3e8483614030565b80600160a060020a03167f77a747805fe662172d50df0565e43aabadea2efb1198dc3ff8e60fcd57eb7489858560405180836001608060020a0319166001608060020a0319168152602001826005811115610c6d57fe5b612a9d6142a4565b600080546040805160e060020a63babcc5390281523360048201529051600160a060020a039092169263babcc539926024808401936020939083900390910190829087803b158015612aee57600080fd5b505af1158015612b02573d6000803e3d6000fd5b505050506040513d6020811015612b1857600080fd5b50511515612b2557600080fd5b612b2e85613476565b905060008160c001516005811115612b4257fe5b14612b4c57600080fd5b600160a060020a03831681526040810184905260808101829052612b70858261365f565b82600160a060020a03167ff661ee1472892faaf2bb68cc6874f2759c9148b4234cac6b88f6ca362652f275868660405180836001608060020a0319166001608060020a031916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612bf4578181015183820152602001612bdc565b50505050905090810190601f168015612c215780820380516001836020036101000a031916815260200191505b50935050505060405180910390a25050505050565b612c3e61420d565b612c4661420d565b600154604080517f72c130e40000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a03909216916372c130e49160248082019260009290919082900301818387803b158015612cb557600080fd5b505af1158015612cc9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260a0811015612cf257600080fd5b815160208301805191939283019291640100000000811115612d1357600080fd5b82016020810184811115612d2657600080fd5b8151640100000000811182820187101715612d4057600080fd5b50509291906020018051640100000000811115612d5c57600080fd5b82016020810184811115612d6f57600080fd5b8151640100000000811182820187101715612d8957600080fd5b505060208083015160409384015192955093509091879182019082016060830160808401856005811115612db957fe5b6005811115612dc457fe5b90529490945293909252509190526001608060020a031990911690529050919050565b60015481516020830151604080850151608086015191517f028849800000000000000000000000000000000000000000000000000000000081526001608060020a0319808916600483019081529086166024830152600160a060020a03909616956302884980958995909490939290919060448101906064810190608401846005811115612e7157fe5b60ff168152602001838103835286818151815260200191508051906020019080838360005b83811015612eae578181015183820152602001612e96565b50505050905090810190601f168015612edb5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015612f0e578181015183820152602001612ef6565b50505050905090810190601f168015612f3b5780820380516001836020036101000a031916815260200191505b50975050505050505050600060405180830381600087803b158015612f5f57600080fd5b505af1158015612f73573d6000803e3d6000fd5b505050505050565b6000612f85614332565b612f8e83613c94565b9050600081608001516005811115612fa257fe5b1415612fad57600080fd5b6040015192915050565b612fbf61423d565b612fc761423d565b600154604080517f289e74700000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a039092169163289e74709160248082019260009290919082900301818387803b15801561303657600080fd5b505af115801561304a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561307357600080fd5b815160208301516040840180519294919382019264010000000081111561309957600080fd5b820160208101848111156130ac57600080fd5b81516401000000008111828201871017156130c657600080fd5b505092919060200180516401000000008111156130e257600080fd5b820160208101848111156130f557600080fd5b815164010000000081118282018710171561310f57600080fd5b505060208083015160408085015160609586015194975091955090938a9283019183019083016080840160a0850160c0860187600581111561314d57fe5b600581111561315857fe5b90529690965261ffff9096169094529490935250929092526001608060020a03199283169052911690529050919050565b60015481516040808401516060850151602086015160c087015193517facc02cce0000000000000000000000000000000000000000000000000000000081526001608060020a0319808a166004830190815281881660248401529083166084830152600160a060020a039097169663acc02cce968a9690959493929091906044810190606481019060a40184600581111561322057fe5b60ff168152602001838103835287818151815260200191508051906020019080838360005b8381101561325d578181015183820152602001613245565b50505050905090810190601f16801561328a5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b838110156132bd5781810151838201526020016132a5565b50505050905090810190601f1680156132ea5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b158015612f5f57600080fd5b6001548151602083015160408085015190517f18c8f3050000000000000000000000000000000000000000000000000000000081526001608060020a0319871660048201908152600160a060020a03909516946318c8f30594889490939092909190602481019060440184600581111561338557fe5b60ff16815260200180602001838103835286818151815260200191508051906020019080838360005b838110156133c65781810151838201526020016133ae565b50505050905090810190601f1680156133f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561342657818101518382015260200161340e565b50505050905090810190601f1680156134535780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b158015612f5f57600080fd5b61347e6142a4565b6134866142a4565b600154604080517f7520dd140000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a0390921691637520dd149160248082019260009290919082900301818387803b1580156134f557600080fd5b505af1158015613509573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561353257600080fd5b815160208301516040840180519294919382019264010000000081111561355857600080fd5b8201602081018481111561356b57600080fd5b815164010000000081118282018710171561358557600080fd5b505060208201516040909201805191949293916401000000008111156135aa57600080fd5b820160208101848111156135bd57600080fd5b81516401000000008111828201871017156135d757600080fd5b50506020808301516040938401519295509350909189918201908201606083016080840160a0850160c0860187600581111561360f57fe5b600581111561361a57fe5b905287905287905287600581111561362e57fe5b600581111561363957fe5b90529690965260ff909616909452505050600160a060020a039092169052509050919050565b60015460408083015183516060850151608086015160c087015194517f253a9b9e0000000000000000000000000000000000000000000000000000000081526001608060020a0319891660048201908152600160a060020a0385811660448401529097169663253a9b9e968a969594939290919060248101906064018560058111156136e757fe5b60ff168152602001806020018460058111156136ff57fe5b60ff168152602001838103835288818151815260200191508051906020019080838360005b8381101561373c578181015183820152602001613724565b50505050905090810190601f1680156137695780820380516001836020036101000a031916815260200191505b5083810382528551815285516020918201918701908083836000838110156132bd5781810151838201526020016132a5565b6137a36142e7565b6137ab6142e7565b600154604080517fc32d869b0000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a039092169163c32d869b9160248082019260009290919082900301818387803b15801561381a57600080fd5b505af115801561382e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261012081101561385857600080fd5b81516020830151604084015160608501516080860180519496939592949193928301929164010000000081111561388e57600080fd5b820160208101848111156138a157600080fd5b81516401000000008111828201871017156138bb57600080fd5b505092919060200180516401000000008111156138d757600080fd5b820160208101848111156138ea57600080fd5b815164010000000081118282018710171561390457600080fd5b505060209182015160c08b015260a08a015260808901939093525050600160a060020a0391821660608701526001608060020a031992831660408781019190915293831690860152928116845260015482517fc32d869b00000000000000000000000000000000000000000000000000000000815291871660048301529151919092169163c32d869b91602480830192600092919082900301818387803b1580156139ae57600080fd5b505af11580156139c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101208110156139ec57600080fd5b815160208301516040840151606085015160808601805194969395929491939283019291640100000000811115613a2257600080fd5b82016020810184811115613a3557600080fd5b8151640100000000811182820187101715613a4f57600080fd5b50509291906020018051640100000000811115613a6b57600080fd5b82016020810184811115613a7e57600080fd5b8151640100000000811182820187101715613a9857600080fd5b50505060408101516060909101519097509550505060e0860192505061010085019050826005811115613ac757fe5b6005811115613ad257fe5b9052919091525092915050565b600154815160208301516040808501516060860151608087015160a088015160c08901516101008a015195517ff3b412f10000000000000000000000000000000000000000000000000000000081526001608060020a0319808d1660048301908152818b166024840152818a1660448401529087166064830152600160a060020a03868116608484015260e48301849052909a169963f3b412f1998d9990989097969594939290919060a481019060c481019061010401846005811115613ba257fe5b60ff168152602001838103835287818151815260200191508051906020019080838360005b83811015613bdf578181015183820152602001613bc7565b50505050905090810190601f168015613c0c5780820380516001836020036101000a031916815260200191505b50838103825286518152865160209182019188019080838360005b83811015613c3f578181015183820152602001613c27565b50505050905090810190601f168015613c6c5780820380516001836020036101000a031916815260200191505b509b505050505050505050505050600060405180830381600087803b158015612f5f57600080fd5b613c9c614332565b613ca4614332565b600154604080517f890755570000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a039092169163890755579160248082019260a0929091908290030181600087803b158015613d1457600080fd5b505af1158015613d28573d6000803e3d6000fd5b505050506040513d60a0811015613d3e57600080fd5b5080516020808301516040808501516060808701516080978801519697949692959094929389939184019290840191908401908401856005811115613d7f57fe5b6005811115613d8a57fe5b905294909452600160a060020a03909416909252506001608060020a0319928316909152911690529050919050565b60015481516020830151604080850151608086015191517fa0191d200000000000000000000000000000000000000000000000000000000081526001608060020a03198089166004830190815281871660248401529085166044830152600160a060020a0383811660648401529096169563a0191d209589959094909392909190608401826005811115613e4957fe5b60ff16815260200195505050505050600060405180830381600087803b158015612f5f57600080fd5b613e7a614360565b613e82614360565b600154604080517fea2fdd8c0000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a039092169163ea2fdd8c9160248082019260009290919082900301818387803b158015613ef157600080fd5b505af1158015613f05573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260c0811015613f2e57600080fd5b8151602083015160408401805192949193820192640100000000811115613f5457600080fd5b82016020810184811115613f6757600080fd5b8151640100000000811182820187101715613f8157600080fd5b50509291906020018051640100000000811115613f9d57600080fd5b82016020810184811115613fb057600080fd5b8151640100000000811182820187101715613fca57600080fd5b50506020808301516040938401519295509350909188918201908201606083016080840160a08501866005811115613ffe57fe5b600581111561400957fe5b90529590955294909352939092526001608060020a03199384169052509116905292915050565b60015481516020830151604080850151606086015160a087015192517fc4d4d8870000000000000000000000000000000000000000000000000000000081526001608060020a0319808a166004830190815281881660248401529086166044830152600160a060020a039097169663c4d4d887968a969095909493929091906064810190608481019060a4018460058111156140c857fe5b60ff168152602001838103835286818151815260200191508051906020019080838360008381101561373c578181015183820152602001613724565b61410c61420d565b61411461420d565b600154604080517f4df2d8470000000000000000000000000000000000000000000000000000000081526001608060020a0319861660048201529051600160a060020a0390921691634df2d8479160248082019260009290919082900301818387803b158015612cb557600080fd5b60015481516020830151604080850151608086015191517f768d80a80000000000000000000000000000000000000000000000000000000081526001608060020a0319808916600483019081529086166024830152600160a060020a039096169563768d80a8958995909490939290919060448101906064810190608401846005811115612e7157fe5b6040805160a08101825260008082526060602083018190529282018390529181018290529060808201905b905290565b6040805160e0810182526000808252602082018190526060928201839052828201929092526080810182905260a081018290529060c0820190614238565b604080516080810190915260608152602081016000815260200160608152602001600081525090565b6040805160e08101825260008082526020820181905260609282018390529091820190815260200160608152602001600081526020016000600581111561423857fe5b604080516101208101825260008082526020820181905291810182905260608082018390526080820181905260a082015260c0810182905260e0810182905290610100820190614238565b6040805160a08101825260008082526020820181905291810182905260608101829052906080820190614238565b6040805160c081018252600080825260208201819052606092820183905282820192909252608081018290529060a08201906142385600a165627a7a7230582070cc9730d0c41f3b984a32078306772ca1bc5552a1814176373dd49572efcc7800290000000000000000000000003807b7a05cf95574eecc38600d4ed9dc1c5f902500000000000000000000000045810d7157385c30ac784612e3471229ee3206b1

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

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003807b7a05cf95574eecc38600d4ed9dc1c5f9025
Arg [1] : 00000000000000000000000045810d7157385c30ac784612e3471229ee3206b1


   Swarm Source:
bzzr://70cc9730d0c41f3b984a32078306772ca1bc5552a1814176373dd49572efcc78

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward