ETH Price: $2,457.88 (+1.57%)

Contract

0xcd806502ad2f9aeb32e23F8D647341d4B568201d
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Refund69397762018-12-23 18:13:072114 days ago1545588787IN
0xcd806502...4B568201d
0 ETH0.0007679934
Refund66859412018-11-11 17:43:012156 days ago1541958181IN
0xcd806502...4B568201d
0 ETH0.0015585769
Refund66043322018-10-29 8:42:362170 days ago1540802556IN
0xcd806502...4B568201d
0 ETH0.00008184
Transfer65512802018-10-20 16:31:092178 days ago1540053069IN
0xcd806502...4B568201d
0 ETH0.0008872441
Refund63854922018-09-23 15:52:062205 days ago1537717926IN
0xcd806502...4B568201d
0 ETH0.000112945
Refund57982372018-06-16 9:23:282305 days ago1529141008IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund57873882018-06-14 12:29:402306 days ago1528979380IN
0xcd806502...4B568201d
0 ETH0.000061353
Refund57301802018-06-04 10:07:592316 days ago1528106879IN
0xcd806502...4B568201d
0 ETH0.000204510
Refund57232182018-06-03 4:17:452318 days ago1527999465IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund57231702018-06-03 4:06:012318 days ago1527998761IN
0xcd806502...4B568201d
0 ETH0.0002484611
Refund57231392018-06-03 3:56:262318 days ago1527998186IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund57228262018-06-03 2:41:522318 days ago1527993712IN
0xcd806502...4B568201d
0 ETH0.000135526
Refund57035452018-05-30 16:30:442321 days ago1527697844IN
0xcd806502...4B568201d
0 ETH0.0008384541
Refund56954802018-05-29 6:03:192323 days ago1527573799IN
0xcd806502...4B568201d
0 ETH0.001022550
Refund56864122018-05-27 15:54:382324 days ago1527436478IN
0xcd806502...4B568201d
0 ETH0.000143157
Refund55831192018-05-09 10:44:582342 days ago1525862698IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund55795472018-05-08 19:33:402343 days ago1525808020IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund55784852018-05-08 15:10:232343 days ago1525792223IN
0xcd806502...4B568201d
0 ETH0.000926141
Refund55507882018-05-03 19:29:462348 days ago1525375786IN
0xcd806502...4B568201d
0 ETH0.0004294521
Refund55491712018-05-03 12:43:012348 days ago1525351381IN
0xcd806502...4B568201d
0 ETH0.00040920
Refund55388892018-05-01 17:16:272350 days ago1525194987IN
0xcd806502...4B568201d
0 ETH0.0008384541
Refund55347912018-04-30 23:39:142351 days ago1525131554IN
0xcd806502...4B568201d
0 ETH0.0008384541
Refund55220662018-04-28 18:57:322353 days ago1524941852IN
0xcd806502...4B568201d
0 ETH0.001022550
Refund55107392018-04-26 19:22:552355 days ago1524770575IN
0xcd806502...4B568201d
0 ETH0.0008384541
Refund55046892018-04-25 18:28:412356 days ago1524680921IN
0xcd806502...4B568201d
0 ETH0.000204510
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
66043322018-10-29 8:42:362170 days ago1540802556
0xcd806502...4B568201d
0.11 ETH
57873882018-06-14 12:29:402306 days ago1528979380
0xcd806502...4B568201d
0.5 ETH
57301802018-06-04 10:07:592316 days ago1528106879
0xcd806502...4B568201d
0.1 ETH
57035452018-05-30 16:30:442321 days ago1527697844
0xcd806502...4B568201d
1.2868 ETH
56954802018-05-29 6:03:192323 days ago1527573799
0xcd806502...4B568201d
0.5 ETH
56864122018-05-27 15:54:382324 days ago1527436478
0xcd806502...4B568201d
0.1 ETH
55507882018-05-03 19:29:462348 days ago1525375786
0xcd806502...4B568201d
0.45 ETH
55491712018-05-03 12:43:012348 days ago1525351381
0xcd806502...4B568201d
0.1 ETH
55388892018-05-01 17:16:272350 days ago1525194987
0xcd806502...4B568201d
0.1 ETH
55347912018-04-30 23:39:142351 days ago1525131554
0xcd806502...4B568201d
0.3 ETH
55220662018-04-28 18:57:322353 days ago1524941852
0xcd806502...4B568201d
0.14521925 ETH
55107392018-04-26 19:22:552355 days ago1524770575
0xcd806502...4B568201d
1.6 ETH
55046892018-04-25 18:28:412356 days ago1524680921
0xcd806502...4B568201d
0.2 ETH
54849122018-04-22 8:52:412360 days ago1524387161
0xcd806502...4B568201d
5 ETH
54728962018-04-20 7:13:372362 days ago1524208417
0xcd806502...4B568201d
0.2 ETH
54640442018-04-18 18:37:112363 days ago1524076631
0xcd806502...4B568201d
0.5 ETH
54614452018-04-18 7:48:482364 days ago1524037728
0xcd806502...4B568201d
0.1 ETH
54555792018-04-17 7:25:442365 days ago1523949944
0xcd806502...4B568201d
0.25 ETH
54527202018-04-16 20:03:252365 days ago1523909005
0xcd806502...4B568201d
0.5 ETH
54520922018-04-16 17:27:392365 days ago1523899659
0xcd806502...4B568201d
0.11 ETH
54437122018-04-15 7:19:482367 days ago1523776788
0xcd806502...4B568201d
39.99549246 ETH
54382802018-04-14 9:26:382368 days ago1523697998
0xcd806502...4B568201d
0.1 ETH
54374712018-04-14 6:05:492368 days ago1523685949
0xcd806502...4B568201d
0.1 ETH
54344932018-04-13 18:03:362368 days ago1523642616
0xcd806502...4B568201d
0.197 ETH
54342922018-04-13 17:11:052368 days ago1523639465
0xcd806502...4B568201d
6 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
THTokenSale

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-18
*/

pragma solidity ^0.4.18;

contract ERC20Basic {
  function totalSupply() public view returns (uint256);
  function balanceOf(address who) public view returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  uint256 totalSupply_;

  /**
  * @dev total number of tokens in existence
  */
  function totalSupply() public view returns (uint256) {
    return totalSupply_;
  }

  /**
  * @dev transfer token for a specified address
  * @param _to The address to transfer to.
  * @param _value The amount to be transferred.
  */
  function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

  /**
  * @dev Gets the balance of the specified address.
  * @param _owner The address to query the the balance of.
  * @return An uint256 representing the amount owned by the passed address.
  */
  function balanceOf(address _owner) public view returns (uint256 balance) {
    return balances[_owner];
  }

}

library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 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 c;
  }

  /**
  * @dev Substracts 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) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public view returns (uint256);
  function transferFrom(address from, address to, uint256 value) public returns (bool);
  function approve(address spender, uint256 value) public returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) internal allowed;


  /**
   * @dev Transfer tokens from one address to another
   * @param _from address The address which you want to send tokens from
   * @param _to address The address which you want to transfer to
   * @param _value uint256 the amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[_from]);
    require(_value <= allowed[_from][msg.sender]);

    balances[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
    Transfer(_from, _to, _value);
    return true;
  }

  /**
   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
   *
   * Beware that changing an allowance with this method brings the risk that someone may use both the old
   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) public returns (bool) {
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
    return true;
  }

  /**
   * @dev Function to check the amount of tokens that an owner allowed to a spender.
   * @param _owner address The address which owns the funds.
   * @param _spender address The address which will spend the funds.
   * @return A uint256 specifying the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) public view returns (uint256) {
    return allowed[_owner][_spender];
  }

  /**
   * @dev Increase the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To increment
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _addedValue The amount of tokens to increase the allowance by.
   */
  function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  /**
   * @dev Decrease the amount of tokens that an owner allowed to a spender.
   *
   * approve should be called when allowed[_spender] == 0. To decrement
   * allowed value is better to use this function to avoid 2 calls (and wait until
   * the first transaction is mined)
   * From MonolithDAO Token.sol
   * @param _spender The address which will spend the funds.
   * @param _subtractedValue The amount of tokens to decrease the allowance by.
   */
  function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
    uint oldValue = allowed[msg.sender][_spender];
    if (_subtractedValue > oldValue) {
      allowed[msg.sender][_spender] = 0;
    } else {
      allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
    }
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

}

contract Ownable {
  address public owner;


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


  /**
   * @dev The Ownable constructor sets the original `owner` of the contract to the sender
   * account.
   */
  function Ownable() 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));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}

contract Pausable is Ownable {
  event Pause();
  event Unpause();

  bool public paused = false;


  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }

  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

contract THTokenSale is Pausable {
    using SafeMath for uint256;

    // Sale Token
    THToken public token;

    // Total wei raised
    uint256 public fundsRaised = 0;

    // Minimal possible cap in ethers
    // @dev NEEDS to be the same as Stage 1 cap now.
    uint256 public constant SOFT_CAP = 3000 ether;

    // Maximum possible cap in ethers
    uint256 public constant HARD_CAP = 12000 ether;

    bool public softCapReached = false;
    bool public hardCapReached = false;
    bool public saleSuccessfullyFinished = false;

    /**
     * Stage 1: 3000 ether worth of THT available at 40% bonus
     * Stage 2: 1800 ether worth of THT available at 20% bonus
     * Stage 3: 2250 ether worth of THT available at 10% bonus
     * Stage 4: 2250 ether worth of THT available at 5% bonus
     * Stage 5: 2700 ether worth of THT available with no bonus
     */
    uint256[5] public stageCaps = [
        3000 ether,
        4800 ether,
        7050 ether,
        9300 ether,
        12000 ether
    ];
    uint256[5] public stageTokenMul = [
        5040,
        4320,
        3960,
        3780,
        3600
    ];
    uint256 public activeStage = 0;

    // Minimum investment during first 48 hours
    uint256 public constant MIN_INVESTMENT_PHASE1 = 5 ether;
    // Minimum investment
    uint256 public constant MIN_INVESTMENT = 0.1 ether;

    // refundAllowed can be set to true if SOFT_CAP is not reached
    bool public refundAllowed = false;
    // Token Allocation for Bounty(5%), Advisors (5%), Platform (10%)
    uint256[3] public varTokenAllocation = [5, 5, 10];
    // 20% vested over 4 segments for Core Team
    uint256[4] public teamTokenAllocation = [5, 5, 5, 5];
    // 60% crowdsale
    uint256 public constant CROWDSALE_ALLOCATION = 60;

    // Vested amounts of tokens, filled with proper values when finalizing
    uint256[4] public vestedTeam = [0, 0, 0, 0];
    uint256 public vestedAdvisors = 0;

    // Withdraw
    address public wallet;
    // CoreTeam Vested
    address public walletCoreTeam;
    // Platform THT
    address public walletPlatform;
    // Bounty and Advisors THT
    address public walletBountyAndAdvisors;

    // start and end timestamp when investments are allowed (both inclusive)
    uint256 public startTime;
    uint256 public endTime;

    // Whitelisted addresses and their allocations of wei available to invest
    mapping(address => uint256) public whitelist;

    // Wei received from token buyers
    mapping(address => uint256) public weiBalances;

    event TokenPurchase(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount);
    event Whitelisted(address indexed beneficiary, uint256 value);
    event SoftCapReached();
    event HardCapReached();
    event Finalized(bool successfullyFinished);
    event StageOpened(uint stage);
    event StageClosed(uint stage);

    /**
    * @dev Modifier to make a function callable only during the sale
    */
    modifier beforeSaleEnds() {
        // Not calling hasEnded due to lower gas usage
        require(now < endTime && fundsRaised < HARD_CAP);
        _;
    }

    function THTokenSale(
        uint256 _startTime,
        address _wallet,
        address _walletCoreTeam,
        address _walletPlatform,
        address _walletBountyAndAdvisors
    ) public {
        require(_startTime >= now);
        require(_wallet != 0x0);
        require(_walletCoreTeam != 0x0);
        require(_walletPlatform != 0x0);
        require(_walletBountyAndAdvisors != 0x0);
        require(vestedTeam.length == teamTokenAllocation.length);   // sanity checks
        require(stageCaps.length == stageTokenMul.length);   // sanity checks

        token = new THToken();
        wallet = _wallet;
        walletCoreTeam = _walletCoreTeam;
        walletPlatform = _walletPlatform;
        walletBountyAndAdvisors = _walletBountyAndAdvisors;
        startTime = _startTime;
        // Sale lasts up to 4 weeks and 4 days
        endTime = _startTime + 32 * 86400;
    }

    /*
     * @dev fallback for processing ether
     */
    function() public payable {
        buyTokens(msg.sender);
    }

    /*
     * @dev Sale is executed in stages/tranches. Each stage except the first is activated manually by the owner.
     * Only allow next stage when current stage/tranche is filled to cap.
     */
    function activateNextStage() onlyOwner public {
        uint256 stageIndex = activeStage;
        require(fundsRaised >= stageCaps[stageIndex]);
        require(stageIndex + 1 < stageCaps.length);

        activeStage = stageIndex + 1;
        StageOpened(activeStage + 1);
    }

    /*
     * @dev sell token and send to contributor address
     * @param contributor address
     */
    function buyTokens(address contributor) whenNotPaused beforeSaleEnds public payable {
        uint256 _stageIndex = activeStage;
        uint256 refund = 0;
        uint256 weiAmount = msg.value;
        uint256 _activeStageCap = stageCaps[_stageIndex];

        require(fundsRaised < _activeStageCap);
        require(validPurchase());
        require(canContribute(contributor, weiAmount));

        uint256 capDelta = _activeStageCap.sub(fundsRaised);

        if (capDelta < weiAmount) {
            // Not enough tokens available for full contribution, we will do a partial.
            weiAmount = capDelta;
            // Calculate refund for contributor.
            refund = msg.value.sub(weiAmount);
        }

        uint256 tokensToMint = weiAmount.mul(stageTokenMul[_stageIndex]);

        whitelist[contributor] = whitelist[contributor].sub(weiAmount);
        weiBalances[contributor] = weiBalances[contributor].add(weiAmount);

        fundsRaised = fundsRaised.add(weiAmount);
        token.mint(contributor, tokensToMint);

        // Refund after state changes for re-entrancy safety
        if (refund > 0) {
            msg.sender.transfer(refund);
        }
        TokenPurchase(0x0, contributor, weiAmount, tokensToMint);

        if (fundsRaised >= _activeStageCap) {
            finalizeCurrentStage();
        }
    }

    function canContribute(address contributor, uint256 weiAmount) public view returns (bool) {
        require(contributor != 0x0);
        require(weiAmount > 0);
        return (whitelist[contributor] >= weiAmount);
    }

    function addWhitelist(address contributor, uint256 weiAmount) onlyOwner public returns (bool) {
        require(contributor != 0x0);
        require(weiAmount > 0);
        // Only ever set the new amount, even if user is already whitelisted with a previous value set
        whitelist[contributor] = weiAmount;
        Whitelisted(contributor, weiAmount);
        return true;
    }

    /*
     * @dev Add participants to whitelist in bulk
     */
    function addWhitelistBulk(address[] contributors, uint256[] amounts) onlyOwner beforeSaleEnds public returns (bool) {
        address contributor;
        uint256 amount;
        require(contributors.length == amounts.length);

        for (uint i = 0; i < contributors.length; i++) {
            contributor = contributors[i];
            amount = amounts[i];
            require(addWhitelist(contributor, amount));
        }
        return true;
    }

    function withdraw() onlyOwner public {
        require(softCapReached);
        require(this.balance > 0);

        wallet.transfer(this.balance);
    }

    function withdrawCoreTeamTokens() onlyOwner public {
        require(saleSuccessfullyFinished);

        if (now > startTime + 720 days && vestedTeam[3] > 0) {
            token.transfer(walletCoreTeam, vestedTeam[3]);
            vestedTeam[3] = 0;
        }
        if (now > startTime + 600 days && vestedTeam[2] > 0) {
            token.transfer(walletCoreTeam, vestedTeam[2]);
            vestedTeam[2] = 0;
        }
        if (now > startTime + 480 days && vestedTeam[1] > 0) {
            token.transfer(walletCoreTeam, vestedTeam[1]);
            vestedTeam[1] = 0;
        }
        if (now > startTime + 360 days && vestedTeam[0] > 0) {
            token.transfer(walletCoreTeam, vestedTeam[0]);
            vestedTeam[0] = 0;
        }
    }

    function withdrawAdvisorTokens() onlyOwner public {
        require(saleSuccessfullyFinished);

        if (now > startTime + 180 days && vestedAdvisors > 0) {
            token.transfer(walletBountyAndAdvisors, vestedAdvisors);
            vestedAdvisors = 0;
        }
    }

    /*
     * @dev Leave token balance as is.
     * The tokens are unusable if a refund call could be successful due to transferAllowed = false upon failing to reach SOFT_CAP.
     */
    function refund() public {
        require(refundAllowed);
        require(!softCapReached);
        require(weiBalances[msg.sender] > 0);

        uint256 currentBalance = weiBalances[msg.sender];
        weiBalances[msg.sender] = 0;
        msg.sender.transfer(currentBalance);
    }

    /*
     * @dev When finishing the crowdsale we mint non-crowdsale tokens based on total tokens minted during crowdsale
     */
    function finishCrowdsale() onlyOwner public returns (bool) {
        require(now >= endTime || fundsRaised >= HARD_CAP);
        require(!saleSuccessfullyFinished && !refundAllowed);

        // Crowdsale successful
        if (softCapReached) {
            uint256 _crowdsaleAllocation = CROWDSALE_ALLOCATION; // 60% crowdsale
            uint256 crowdsaleTokens = token.totalSupply();

            uint256 tokensBounty = crowdsaleTokens.mul(varTokenAllocation[0]).div(_crowdsaleAllocation); // 5% Bounty
            uint256 tokensAdvisors = crowdsaleTokens.mul(varTokenAllocation[1]).div(_crowdsaleAllocation); // 5% Advisors
            uint256 tokensPlatform = crowdsaleTokens.mul(varTokenAllocation[2]).div(_crowdsaleAllocation); // 10% Platform

            vestedAdvisors = tokensAdvisors;

            // 20% Team
            uint256 tokensTeam = 0;
            uint len = teamTokenAllocation.length;
            uint amount = 0;
            for (uint i = 0; i < len; i++) {
                amount = crowdsaleTokens.mul(teamTokenAllocation[i]).div(_crowdsaleAllocation);
                vestedTeam[i] = amount;
                tokensTeam = tokensTeam.add(amount);
            }

            token.mint(walletBountyAndAdvisors, tokensBounty);
            token.mint(walletPlatform, tokensPlatform);

            token.mint(this, tokensAdvisors);
            token.mint(this, tokensTeam);

            token.endMinting(true);
            saleSuccessfullyFinished = true;
            Finalized(true);
            return true;
        } else {
            refundAllowed = true;
            // Token contract gets destroyed
            token.endMinting(false);
            Finalized(false);
            return false;
        }
    }

    // @return user balance
    function balanceOf(address _owner) public view returns (uint256 balance) {
        return token.balanceOf(_owner);
    }

    function hasStarted() public view returns (bool) {
        return now >= startTime;
    }

    function hasEnded() public view returns (bool) {
        return now >= endTime || fundsRaised >= HARD_CAP;
    }

    function validPurchase() internal view returns (bool) {
        // Extended from 2 * 86400 to 200.000 seconds, since there's a 48 hour pause scheduled after phase 1
        if(now <= (startTime + 200000) && msg.value < MIN_INVESTMENT_PHASE1) {
            return false;
        }
        bool withinPeriod = now >= startTime && now <= endTime;
        bool withinPurchaseLimits = msg.value >= MIN_INVESTMENT;
        return withinPeriod && withinPurchaseLimits;
    }

    function finalizeCurrentStage() internal {
        uint256 _stageIndex = activeStage;

        if (_stageIndex == 0) {
            softCapReached = true;
            SoftCapReached();
        } else if (_stageIndex == stageCaps.length - 1) {
            hardCapReached = true;
            HardCapReached();
        }

        StageClosed(_stageIndex + 1);
    }
}

contract MintableToken is StandardToken, Ownable {
  event Mint(address indexed to, uint256 amount);
  event MintFinished();

  bool public mintingFinished = false;


  modifier canMint() {
    require(!mintingFinished);
    _;
  }

  /**
   * @dev Function to mint tokens
   * @param _to The address that will receive the minted tokens.
   * @param _amount The amount of tokens to mint.
   * @return A boolean that indicates if the operation was successful.
   */
  function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool) {
    totalSupply_ = totalSupply_.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    Transfer(address(0), _to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() onlyOwner canMint public returns (bool) {
    mintingFinished = true;
    MintFinished();
    return true;
  }
}

contract THToken is MintableToken {

    string public constant name = "Tradershub Token";
    string public constant symbol = "THT";
    uint8 public constant decimals = 18;

    bool public transferAllowed = false;

    event TransferAllowed(bool transferIsAllowed);

    modifier canTransfer() {
        require(mintingFinished && transferAllowed);
        _;
    }

    function transferFrom(address from, address to, uint256 value) canTransfer public returns (bool) {
        return super.transferFrom(from, to, value);
    }

    function transfer(address to, uint256 value) canTransfer public returns (bool) {
        return super.transfer(to, value);
    }

    function endMinting(bool _transferAllowed) onlyOwner canMint public returns (bool) {
        if (!_transferAllowed) {
            // Only ever called if the sale failed to reach soft cap
            selfdestruct(msg.sender);
            return true;
        }
        transferAllowed = _transferAllowed;
        TransferAllowed(_transferAllowed);
        return super.finishMinting();
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[],"name":"activateNextStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"softCapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"contributor","type":"address"},{"name":"weiAmount","type":"uint256"}],"name":"canContribute","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"HARD_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"walletBountyAndAdvisors","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"refundAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hasStarted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"activeStage","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stageCaps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_INVESTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundsRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"walletCoreTeam","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"weiBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"walletPlatform","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_INVESTMENT_PHASE1","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"saleSuccessfullyFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapReached","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"varTokenAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawAdvisorTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contributor","type":"address"},{"name":"weiAmount","type":"uint256"}],"name":"addWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"SOFT_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"stageTokenMul","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vestedAdvisors","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"teamTokenAllocation","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"vestedTeam","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contributor","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawCoreTeamTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CROWDSALE_ALLOCATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"contributors","type":"address[]"},{"name":"amounts","type":"uint256[]"}],"name":"addWhitelistBulk","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_walletCoreTeam","type":"address"},{"name":"_walletPlatform","type":"address"},{"name":"_walletBountyAndAdvisors","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Whitelisted","type":"event"},{"anonymous":false,"inputs":[],"name":"SoftCapReached","type":"event"},{"anonymous":false,"inputs":[],"name":"HardCapReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"successfullyFinished","type":"bool"}],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stage","type":"uint256"}],"name":"StageOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"stage","type":"uint256"}],"name":"StageClosed","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

606060409081526000805460a060020a60ff02191681556002556003805462ffffff1916905560a09051908101604090815268a2a15d09519be0000082526901043561a88293000000602083015269017e2e676f7fc7e80000908201526901f8276d367cfcd00000606082015269028a857425466f80000060808201526200008c906004906005620002ca565b5060a060405190810160409081526113b082526110e06020830152610f7890820152610ec46060820152610e106080820152620000ce90600990600562000318565b506000600e55600f805460ff191690556060604051908101604090815260058083526020830152600a908201526200010b9060109060036200034f565b506080604051908101604090815260058083526020830181905290820181905260608201526200014090601390600462000385565b506080604051908101604090815260008083526020830181905290820181905260608201526200017590601790600462000385565b506000601b5534156200018757600080fd5b60405160a08062002b9c833981016040528080519190602001805191906020018051919060200180519190602001805160008054600160a060020a03191633600160a060020a031617905591505042851015620001e357600080fd5b600160a060020a0384161515620001f957600080fd5b600160a060020a03831615156200020f57600080fd5b600160a060020a03821615156200022557600080fd5b600160a060020a03811615156200023b57600080fd5b62000245620003ba565b604051809103906000f08015156200025c57600080fd5b60018054600160a060020a0319908116600160a060020a0393841617909155601c8054821696831696909617909555601d8054861694821694909417909355601e8054851692841692909217909155601f805490931691161790556020819055622a300001602155620003eb565b826005810192821562000306579160200282015b828111156200030657825182906001605060020a0316905591602001919060010190620002de565b5062000314929150620003cb565b5090565b826005810192821562000306579160200282015b8281111562000306578251829061ffff169055916020019190600101906200032c565b826003810192821562000306579160200282015b8281111562000306578251829060ff1690559160200191906001019062000363565b826004810192821562000306579160200282018281111562000306578251829060ff1690559160200191906001019062000363565b604051610d278062001e7583390190565b620003e891905b80821115620003145760008155600101620003d2565b90565b611a7a80620003fb6000396000f3006060604052600436106102005763ffffffff60e060020a6000350416631ff858d0811461020b5780632b9edee91461021e5780633197cbb614610245578063378b6a891461026a5780633a03171c1461028c5780633ccfd60b1461029f5780633e9744da146102b25780633f4ba83a146102e15780633fa911ae146102f457806344691f7e146103075780634864d8d91461031a5780634c46fb731461032d5780634ef8ff3314610343578063521eb27314610356578063590e1ae3146103695780635c975abb1461037c5780636681b9fd1461038f5780636a41ade3146103a25780636ef9e145146103b557806370a08231146103d457806378e97925146103f35780637f86f7f4146104065780638456cb59146104195780638da5cb5b1461042c57806394d453db1461043f57806396eecf95146104525780639762f802146104655780639b19251a14610478578063a53bfcf514610497578063a7aac32d146104ad578063b39d9009146104c0578063b652dc2f146104e2578063b80cdcf6146104f5578063c25c22ee14610508578063cd69859e1461051e578063d792b35614610531578063e6d1092d14610547578063ec8ac4d81461055d578063ecb70fb714610571578063f00648b814610584578063f2fde38b14610597578063fc0c546a146105b6578063fd09d013146105c9578063fd4ff437146105dc575b6102093361066b565b005b341561021657600080fd5b610209610906565b341561022957600080fd5b610231610993565b604051901515815260200160405180910390f35b341561025057600080fd5b61025861099c565b60405190815260200160405180910390f35b341561027557600080fd5b610231600160a060020a03600435166024356109a2565b341561029757600080fd5b6102586109e7565b34156102aa57600080fd5b6102096109f5565b34156102bd57600080fd5b6102c5610a73565b604051600160a060020a03909116815260200160405180910390f35b34156102ec57600080fd5b610209610a82565b34156102ff57600080fd5b610231610b01565b341561031257600080fd5b610231610b0a565b341561032557600080fd5b610258610b13565b341561033857600080fd5b610258600435610b19565b341561034e57600080fd5b610258610b2d565b341561036157600080fd5b6102c5610b39565b341561037457600080fd5b610209610b48565b341561038757600080fd5b610231610bdb565b341561039a57600080fd5b610258610beb565b34156103ad57600080fd5b6102c5610bf1565b34156103c057600080fd5b610258600160a060020a0360043516610c00565b34156103df57600080fd5b610258600160a060020a0360043516610c12565b34156103fe57600080fd5b610258610c8d565b341561041157600080fd5b6102c5610c93565b341561042457600080fd5b610209610ca2565b341561043757600080fd5b6102c5610d26565b341561044a57600080fd5b610258610d35565b341561045d57600080fd5b610231610d41565b341561047057600080fd5b610231610d50565b341561048357600080fd5b610258600160a060020a0360043516610d5e565b34156104a257600080fd5b610258600435610d70565b34156104b857600080fd5b610209610d7d565b34156104cb57600080fd5b610231600160a060020a0360043516602435610e57565b34156104ed57600080fd5b610258610eee565b341561050057600080fd5b610231610efb565b341561051357600080fd5b610258600435611420565b341561052957600080fd5b61025861142d565b341561053c57600080fd5b610258600435611433565b341561055257600080fd5b610258600435611440565b610209600160a060020a036004351661066b565b341561057c57600080fd5b61023161144d565b341561058f57600080fd5b610209611471565b34156105a257600080fd5b610209600160a060020a0360043516611748565b34156105c157600080fd5b6102c56117e3565b34156105d457600080fd5b6102586117f2565b34156105e757600080fd5b6102316004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506117f795505050505050565b600080600080600080600060149054906101000a900460ff1615151561069057600080fd5b602154421080156106ac575069028a857425466f800000600254105b15156106b757600080fd5b600e54955060009450349350600486600581106106d057fe5b01549250826002541015156106e457600080fd5b6106ec6118b4565b15156106f757600080fd5b61070187856109a2565b151561070c57600080fd5b60025461072090849063ffffffff61191a16565b91508382101561074257909250829061073f348363ffffffff61191a16565b94505b6107616009876005811061075257fe5b0154859063ffffffff61192c16565b600160a060020a03881660009081526022602052604090205490915061078d908563ffffffff61191a16565b600160a060020a0388166000908152602260209081526040808320939093556023905220546107c2908563ffffffff61196216565b600160a060020a0388166000908152602360205260409020556002546107ee908563ffffffff61196216565b600255600154600160a060020a03166340c10f19888360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561085057600080fd5b6102c65a03f1151561086157600080fd5b5050506040518051505060008511156108a557600160a060020a03331685156108fc0286604051600060405180830381858888f1935050505015156108a557600080fd5b86600160a060020a031660007f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18868460405191825260208201526040908101905180910390a36002548390106108fd576108fd611971565b50505050505050565b6000805433600160a060020a0390811691161461092257600080fd5b50600e546004816005811061093357fe5b0154600254101561094357600080fd5b6005600182011061095357600080fd5b60018101600e557fa87b73c77b5c78e7a4f2356b4727fe16b37e1515909ea1c4ff1e849adb31de136002820160405190815260200160405180910390a150565b60035460ff1681565b60215481565b6000600160a060020a03831615156109b957600080fd5b600082116109c657600080fd5b50600160a060020a0391909116600090815260226020526040902054101590565b69028a857425466f80000081565b60005433600160a060020a03908116911614610a1057600080fd5b60035460ff161515610a2157600080fd5b6000600160a060020a0330163111610a3857600080fd5b601c54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a7157600080fd5b565b601f54600160a060020a031681565b60005433600160a060020a03908116911614610a9d57600080fd5b60005460a060020a900460ff161515610ab557600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600f5460ff1681565b60205442101590565b600e5481565b60048160058110610b2657fe5b0154905081565b67016345785d8a000081565b601c54600160a060020a031681565b600f5460009060ff161515610b5c57600080fd5b60035460ff1615610b6c57600080fd5b600160a060020a03331660009081526023602052604081205411610b8f57600080fd5b50600160a060020a033316600081815260236020526040808220805492905590919082156108fc0290839051600060405180830381858888f193505050501515610bd857600080fd5b50565b60005460a060020a900460ff1681565b60025481565b601d54600160a060020a031681565b60236020526000908152604090205481565b600154600090600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c6d57600080fd5b6102c65a03f11515610c7e57600080fd5b50505060405180519392505050565b60205481565b601e54600160a060020a031681565b60005433600160a060020a03908116911614610cbd57600080fd5b60005460a060020a900460ff1615610cd457600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b674563918244f4000081565b60035462010000900460ff1681565b600354610100900460ff1681565b60226020526000908152604090205481565b60108160038110610b2657fe5b60005433600160a060020a03908116911614610d9857600080fd5b60035462010000900460ff161515610daf57600080fd5b60205462ed4e000142118015610dc757506000601b54115b15610a7157600154601f54601b54600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e3557600080fd5b6102c65a03f11515610e4657600080fd5b505050604051805150506000601b55565b6000805433600160a060020a03908116911614610e7357600080fd5b600160a060020a0383161515610e8857600080fd5b60008211610e9557600080fd5b600160a060020a038316600081815260226020526040908190208490557f6ea640312e182de387819fbeb13be00db3171a445412852248559054871c41999084905190815260200160405180910390a250600192915050565b68a2a15d09519be0000081565b6000806000806000806000806000806000809054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515610f3e57600080fd5b60215442101580610f5b575069028a857425466f80000060025410155b1515610f6657600080fd5b60035462010000900460ff16158015610f825750600f5460ff16155b1515610f8d57600080fd5b60035460ff161561135e57600154603c9950600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fe457600080fd5b6102c65a03f11515610ff557600080fd5b5050506040518051985061102890508961101c601060005b01548b9063ffffffff61192c16565b9063ffffffff611a3716565b965061103a8961101c6010600161100d565b955061104c8961101c6010600261100d565b601b879055945060009350600492508391508190505b828110156110aa5761107e8961101c6013846004811061100d57fe5b9150816017826004811061108e57fe5b01556110a0848363ffffffff61196216565b9350600101611062565b600154601f54600160a060020a03918216916340c10f1991168960006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561111057600080fd5b6102c65a03f1151561112157600080fd5b50505060405180515050600154601e54600160a060020a03918216916340c10f1991168760006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561119157600080fd5b6102c65a03f115156111a257600080fd5b50505060405180515050600154600160a060020a03166340c10f19308860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561120b57600080fd5b6102c65a03f1151561121c57600080fd5b50505060405180515050600154600160a060020a03166340c10f19308660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128557600080fd5b6102c65a03f1151561129657600080fd5b5050506040518051505060018054600160a060020a031690634dd3e5759060006040516020015260405160e060020a63ffffffff84160281529015156004820152602401602060405180830381600087803b15156112f357600080fd5b6102c65a03f1151561130457600080fd5b505050604051805150506003805462ff00001916620100001790557f41493253ae80c9f89e25283c36f67849365d0515134ce43de1314223cb6f73426001604051901515815260200160405180910390a160019950611414565b600f805460ff1916600190811790915554600160a060020a0316634dd3e5756000806040516020015260405160e060020a63ffffffff84160281529015156004820152602401602060405180830381600087803b15156113bd57600080fd5b6102c65a03f115156113ce57600080fd5b50505060405180519050507f41493253ae80c9f89e25283c36f67849365d0515134ce43de1314223cb6f73426000604051901515815260200160405180910390a1600099505b50505050505050505090565b60098160058110610b2657fe5b601b5481565b60138160048110610b2657fe5b60178160048110610b2657fe5b60006021544210158061146c575069028a857425466f80000060025410155b905090565b60005433600160a060020a0390811691161461148c57600080fd5b60035462010000900460ff1615156114a357600080fd5b6020546303b5380001421180156114bd5750601a54600090115b1561154c57600154601d54601a54600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561152b57600080fd5b6102c65a03f1151561153c57600080fd5b505050604051805150506000601a555b602054630317040001421180156115665750601954600090115b156115f557600154601d54601954600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156115d457600080fd5b6102c65a03f115156115e557600080fd5b5050506040518051505060006019555b602054630278d000014211801561160f5750601854600090115b1561169e57600154601d54601854600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561167d57600080fd5b6102c65a03f1151561168e57600080fd5b5050506040518051505060006018555b6020546301da9c0001421180156116b85750601754600090115b15610a7157600154601d54601754600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561172657600080fd5b6102c65a03f1151561173757600080fd5b505050604051805150506000601755565b60005433600160a060020a0390811691161461176357600080fd5b600160a060020a038116151561177857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b603c81565b6000805481908190819033600160a060020a0390811691161461181957600080fd5b60215442108015611835575069028a857425466f800000600254105b151561184057600080fd5b845186511461184e57600080fd5b5060005b85518110156118a85785818151811061186757fe5b90602001906020020151925084818151811061187f57fe5b9060200190602002015191506118958383610e57565b15156118a057600080fd5b600101611852565b50600195945050505050565b600080600060205462030d400142111580156118d75750674563918244f4000034105b156118e55760009250611915565b60205442101580156118f957506021544211155b91505067016345785d8a00003410158180156119125750805b92505b505090565b60008282111561192657fe5b50900390565b60008083151561193f576000915061195b565b5082820282848281151561194f57fe5b041461195757fe5b8091505b5092915050565b60008282018381101561195757fe5b600e548015156119b9576003805460ff191660011790557f629c1b672a634075c61f1cbfbec5f3e47b94c3f90f065486f615ecfa18713d3460405160405180910390a16119fe565b60048114156119fe576003805461ff0019166101001790557f9788c3426de973293d591b3f0e14ad70f5569c28608c87c18153eabc2a157eed60405160405180910390a15b7f3498c518c1664de68a3744940b2f4f05ebbd29e00304ef21a7e00fcc691e862d8160010160405190815260200160405180910390a150565b6000808284811515611a4557fe5b049493505050505600a165627a7a72305820fb147627e503716e8fcbbd3bce8bc28ba39cba41bb6b69e1dcd940324a28a7a10029606060405260038054600160b060020a03191633600160a060020a0316179055610cf98061002e6000396000f3006060604052600436106100fb5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b811461010057806306fdde0314610127578063095ea7b3146101b157806318160ddd146101d357806323b872dd146101f8578063313ce5671461022057806334fec4671461024957806340c10f191461025c5780634dd3e5751461027e578063661884631461029657806370a08231146102b85780637d64bcb4146102d75780638da5cb5b146102ea57806395d89b4114610319578063a9059cbb1461032c578063d73dd6231461034e578063dd62ed3e14610370578063f2fde38b14610395575b600080fd5b341561010b57600080fd5b6101136103b6565b604051901515815260200160405180910390f35b341561013257600080fd5b61013a6103c6565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561017657808201518382015260200161015e565b50505050905090810190601f1680156101a35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101bc57600080fd5b610113600160a060020a03600435166024356103fd565b34156101de57600080fd5b6101e6610469565b60405190815260200160405180910390f35b341561020357600080fd5b610113600160a060020a036004358116906024351660443561046f565b341561022b57600080fd5b6102336104b2565b60405160ff909116815260200160405180910390f35b341561025457600080fd5b6101136104b7565b341561026757600080fd5b610113600160a060020a03600435166024356104c7565b341561028957600080fd5b61011360043515156105d5565b34156102a157600080fd5b610113600160a060020a0360043516602435610689565b34156102c357600080fd5b6101e6600160a060020a0360043516610783565b34156102e257600080fd5b61011361079e565b34156102f557600080fd5b6102fd610829565b604051600160a060020a03909116815260200160405180910390f35b341561032457600080fd5b61013a610838565b341561033757600080fd5b610113600160a060020a036004351660243561086f565b341561035957600080fd5b610113600160a060020a03600435166024356108b0565b341561037b57600080fd5b6101e6600160a060020a0360043581169060243516610954565b34156103a057600080fd5b6103b4600160a060020a036004351661097f565b005b60035460a060020a900460ff1681565b60408051908101604052601081527f5472616465727368756220546f6b656e00000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60015490565b60035460009060a060020a900460ff168015610494575060035460a860020a900460ff165b151561049f57600080fd5b6104aa848484610a1a565b949350505050565b601281565b60035460a860020a900460ff1681565b60035460009033600160a060020a039081169116146104e557600080fd5b60035460a060020a900460ff16156104fc57600080fd5b60015461050f908363ffffffff610b9a16565b600155600160a060020a03831660009081526020819052604090205461053b908363ffffffff610b9a16565b600160a060020a0384166000818152602081905260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a2600160a060020a03831660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a350600192915050565b60035460009033600160a060020a039081169116146105f357600080fd5b60035460a060020a900460ff161561060a57600080fd5b81151561061d5733600160a060020a0316ff5b6003805475ff000000000000000000000000000000000000000000191660a860020a841515021790557f09453fb3c77c88037c1b664345201b4e2c2e71c35ef789fb3f61972c140e0ac582604051901515815260200160405180910390a161068361079e565b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156106e657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561071d565b6106f6818463ffffffff610ba916565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a35060019392505050565b600160a060020a031660009081526020819052604090205490565b60035460009033600160a060020a039081169116146107bc57600080fd5b60035460a060020a900460ff16156107d357600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a150600190565b600354600160a060020a031681565b60408051908101604052600381527f5448540000000000000000000000000000000000000000000000000000000000602082015281565b60035460009060a060020a900460ff168015610894575060035460a860020a900460ff165b151561089f57600080fd5b6108a98383610bbb565b9392505050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108e8908363ffffffff610b9a16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a350600192915050565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035433600160a060020a0390811691161461099a57600080fd5b600160a060020a03811615156109af57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000600160a060020a0383161515610a3157600080fd5b600160a060020a038416600090815260208190526040902054821115610a5657600080fd5b600160a060020a0380851660009081526002602090815260408083203390941683529290522054821115610a8957600080fd5b600160a060020a038416600090815260208190526040902054610ab2908363ffffffff610ba916565b600160a060020a038086166000908152602081905260408082209390935590851681522054610ae7908363ffffffff610b9a16565b600160a060020a0380851660009081526020818152604080832094909455878316825260028152838220339093168252919091522054610b2d908363ffffffff610ba916565b600160a060020a03808616600081815260026020908152604080832033861684529091529081902093909355908516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b6000828201838110156108a957fe5b600082821115610bb557fe5b50900390565b6000600160a060020a0383161515610bd257600080fd5b600160a060020a033316600090815260208190526040902054821115610bf757600080fd5b600160a060020a033316600090815260208190526040902054610c20908363ffffffff610ba916565b600160a060020a033381166000908152602081905260408082209390935590851681522054610c55908363ffffffff610b9a16565b60008085600160a060020a0316600160a060020a031681526020019081526020016000208190555082600160a060020a031633600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a3506001929150505600a165627a7a723058204a9a6d2fb4c1af3ff6565fce8b8c722192ec8167fe1e45fd24a499e10aa5f0490029000000000000000000000000000000000000000000000000000000005a8edaf0000000000000000000000000cbe68025e4883430e53a1e59de0a556358f335f1000000000000000000000000ecf3fa1553b6f16bd63805433383cf5ce3ca995300000000000000000000000000b3f327c503d2d3ff79c88438aed27848c1691900000000000000000000000000cb16adfe143cadd5d7d86860b381d7d2fa54d7

Deployed Bytecode

0x6060604052600436106102005763ffffffff60e060020a6000350416631ff858d0811461020b5780632b9edee91461021e5780633197cbb614610245578063378b6a891461026a5780633a03171c1461028c5780633ccfd60b1461029f5780633e9744da146102b25780633f4ba83a146102e15780633fa911ae146102f457806344691f7e146103075780634864d8d91461031a5780634c46fb731461032d5780634ef8ff3314610343578063521eb27314610356578063590e1ae3146103695780635c975abb1461037c5780636681b9fd1461038f5780636a41ade3146103a25780636ef9e145146103b557806370a08231146103d457806378e97925146103f35780637f86f7f4146104065780638456cb59146104195780638da5cb5b1461042c57806394d453db1461043f57806396eecf95146104525780639762f802146104655780639b19251a14610478578063a53bfcf514610497578063a7aac32d146104ad578063b39d9009146104c0578063b652dc2f146104e2578063b80cdcf6146104f5578063c25c22ee14610508578063cd69859e1461051e578063d792b35614610531578063e6d1092d14610547578063ec8ac4d81461055d578063ecb70fb714610571578063f00648b814610584578063f2fde38b14610597578063fc0c546a146105b6578063fd09d013146105c9578063fd4ff437146105dc575b6102093361066b565b005b341561021657600080fd5b610209610906565b341561022957600080fd5b610231610993565b604051901515815260200160405180910390f35b341561025057600080fd5b61025861099c565b60405190815260200160405180910390f35b341561027557600080fd5b610231600160a060020a03600435166024356109a2565b341561029757600080fd5b6102586109e7565b34156102aa57600080fd5b6102096109f5565b34156102bd57600080fd5b6102c5610a73565b604051600160a060020a03909116815260200160405180910390f35b34156102ec57600080fd5b610209610a82565b34156102ff57600080fd5b610231610b01565b341561031257600080fd5b610231610b0a565b341561032557600080fd5b610258610b13565b341561033857600080fd5b610258600435610b19565b341561034e57600080fd5b610258610b2d565b341561036157600080fd5b6102c5610b39565b341561037457600080fd5b610209610b48565b341561038757600080fd5b610231610bdb565b341561039a57600080fd5b610258610beb565b34156103ad57600080fd5b6102c5610bf1565b34156103c057600080fd5b610258600160a060020a0360043516610c00565b34156103df57600080fd5b610258600160a060020a0360043516610c12565b34156103fe57600080fd5b610258610c8d565b341561041157600080fd5b6102c5610c93565b341561042457600080fd5b610209610ca2565b341561043757600080fd5b6102c5610d26565b341561044a57600080fd5b610258610d35565b341561045d57600080fd5b610231610d41565b341561047057600080fd5b610231610d50565b341561048357600080fd5b610258600160a060020a0360043516610d5e565b34156104a257600080fd5b610258600435610d70565b34156104b857600080fd5b610209610d7d565b34156104cb57600080fd5b610231600160a060020a0360043516602435610e57565b34156104ed57600080fd5b610258610eee565b341561050057600080fd5b610231610efb565b341561051357600080fd5b610258600435611420565b341561052957600080fd5b61025861142d565b341561053c57600080fd5b610258600435611433565b341561055257600080fd5b610258600435611440565b610209600160a060020a036004351661066b565b341561057c57600080fd5b61023161144d565b341561058f57600080fd5b610209611471565b34156105a257600080fd5b610209600160a060020a0360043516611748565b34156105c157600080fd5b6102c56117e3565b34156105d457600080fd5b6102586117f2565b34156105e757600080fd5b6102316004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506117f795505050505050565b600080600080600080600060149054906101000a900460ff1615151561069057600080fd5b602154421080156106ac575069028a857425466f800000600254105b15156106b757600080fd5b600e54955060009450349350600486600581106106d057fe5b01549250826002541015156106e457600080fd5b6106ec6118b4565b15156106f757600080fd5b61070187856109a2565b151561070c57600080fd5b60025461072090849063ffffffff61191a16565b91508382101561074257909250829061073f348363ffffffff61191a16565b94505b6107616009876005811061075257fe5b0154859063ffffffff61192c16565b600160a060020a03881660009081526022602052604090205490915061078d908563ffffffff61191a16565b600160a060020a0388166000908152602260209081526040808320939093556023905220546107c2908563ffffffff61196216565b600160a060020a0388166000908152602360205260409020556002546107ee908563ffffffff61196216565b600255600154600160a060020a03166340c10f19888360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561085057600080fd5b6102c65a03f1151561086157600080fd5b5050506040518051505060008511156108a557600160a060020a03331685156108fc0286604051600060405180830381858888f1935050505015156108a557600080fd5b86600160a060020a031660007f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18868460405191825260208201526040908101905180910390a36002548390106108fd576108fd611971565b50505050505050565b6000805433600160a060020a0390811691161461092257600080fd5b50600e546004816005811061093357fe5b0154600254101561094357600080fd5b6005600182011061095357600080fd5b60018101600e557fa87b73c77b5c78e7a4f2356b4727fe16b37e1515909ea1c4ff1e849adb31de136002820160405190815260200160405180910390a150565b60035460ff1681565b60215481565b6000600160a060020a03831615156109b957600080fd5b600082116109c657600080fd5b50600160a060020a0391909116600090815260226020526040902054101590565b69028a857425466f80000081565b60005433600160a060020a03908116911614610a1057600080fd5b60035460ff161515610a2157600080fd5b6000600160a060020a0330163111610a3857600080fd5b601c54600160a060020a039081169030163180156108fc0290604051600060405180830381858888f193505050501515610a7157600080fd5b565b601f54600160a060020a031681565b60005433600160a060020a03908116911614610a9d57600080fd5b60005460a060020a900460ff161515610ab557600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600f5460ff1681565b60205442101590565b600e5481565b60048160058110610b2657fe5b0154905081565b67016345785d8a000081565b601c54600160a060020a031681565b600f5460009060ff161515610b5c57600080fd5b60035460ff1615610b6c57600080fd5b600160a060020a03331660009081526023602052604081205411610b8f57600080fd5b50600160a060020a033316600081815260236020526040808220805492905590919082156108fc0290839051600060405180830381858888f193505050501515610bd857600080fd5b50565b60005460a060020a900460ff1681565b60025481565b601d54600160a060020a031681565b60236020526000908152604090205481565b600154600090600160a060020a03166370a0823183836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c6d57600080fd5b6102c65a03f11515610c7e57600080fd5b50505060405180519392505050565b60205481565b601e54600160a060020a031681565b60005433600160a060020a03908116911614610cbd57600080fd5b60005460a060020a900460ff1615610cd457600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b600054600160a060020a031681565b674563918244f4000081565b60035462010000900460ff1681565b600354610100900460ff1681565b60226020526000908152604090205481565b60108160038110610b2657fe5b60005433600160a060020a03908116911614610d9857600080fd5b60035462010000900460ff161515610daf57600080fd5b60205462ed4e000142118015610dc757506000601b54115b15610a7157600154601f54601b54600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e3557600080fd5b6102c65a03f11515610e4657600080fd5b505050604051805150506000601b55565b6000805433600160a060020a03908116911614610e7357600080fd5b600160a060020a0383161515610e8857600080fd5b60008211610e9557600080fd5b600160a060020a038316600081815260226020526040908190208490557f6ea640312e182de387819fbeb13be00db3171a445412852248559054871c41999084905190815260200160405180910390a250600192915050565b68a2a15d09519be0000081565b6000806000806000806000806000806000809054906101000a9004600160a060020a0316600160a060020a031633600160a060020a0316141515610f3e57600080fd5b60215442101580610f5b575069028a857425466f80000060025410155b1515610f6657600080fd5b60035462010000900460ff16158015610f825750600f5460ff16155b1515610f8d57600080fd5b60035460ff161561135e57600154603c9950600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610fe457600080fd5b6102c65a03f11515610ff557600080fd5b5050506040518051985061102890508961101c601060005b01548b9063ffffffff61192c16565b9063ffffffff611a3716565b965061103a8961101c6010600161100d565b955061104c8961101c6010600261100d565b601b879055945060009350600492508391508190505b828110156110aa5761107e8961101c6013846004811061100d57fe5b9150816017826004811061108e57fe5b01556110a0848363ffffffff61196216565b9350600101611062565b600154601f54600160a060020a03918216916340c10f1991168960006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561111057600080fd5b6102c65a03f1151561112157600080fd5b50505060405180515050600154601e54600160a060020a03918216916340c10f1991168760006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561119157600080fd5b6102c65a03f115156111a257600080fd5b50505060405180515050600154600160a060020a03166340c10f19308860006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561120b57600080fd5b6102c65a03f1151561121c57600080fd5b50505060405180515050600154600160a060020a03166340c10f19308660006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561128557600080fd5b6102c65a03f1151561129657600080fd5b5050506040518051505060018054600160a060020a031690634dd3e5759060006040516020015260405160e060020a63ffffffff84160281529015156004820152602401602060405180830381600087803b15156112f357600080fd5b6102c65a03f1151561130457600080fd5b505050604051805150506003805462ff00001916620100001790557f41493253ae80c9f89e25283c36f67849365d0515134ce43de1314223cb6f73426001604051901515815260200160405180910390a160019950611414565b600f805460ff1916600190811790915554600160a060020a0316634dd3e5756000806040516020015260405160e060020a63ffffffff84160281529015156004820152602401602060405180830381600087803b15156113bd57600080fd5b6102c65a03f115156113ce57600080fd5b50505060405180519050507f41493253ae80c9f89e25283c36f67849365d0515134ce43de1314223cb6f73426000604051901515815260200160405180910390a1600099505b50505050505050505090565b60098160058110610b2657fe5b601b5481565b60138160048110610b2657fe5b60178160048110610b2657fe5b60006021544210158061146c575069028a857425466f80000060025410155b905090565b60005433600160a060020a0390811691161461148c57600080fd5b60035462010000900460ff1615156114a357600080fd5b6020546303b5380001421180156114bd5750601a54600090115b1561154c57600154601d54601a54600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561152b57600080fd5b6102c65a03f1151561153c57600080fd5b505050604051805150506000601a555b602054630317040001421180156115665750601954600090115b156115f557600154601d54601954600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156115d457600080fd5b6102c65a03f115156115e557600080fd5b5050506040518051505060006019555b602054630278d000014211801561160f5750601854600090115b1561169e57600154601d54601854600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561167d57600080fd5b6102c65a03f1151561168e57600080fd5b5050506040518051505060006018555b6020546301da9c0001421180156116b85750601754600090115b15610a7157600154601d54601754600160a060020a039283169263a9059cbb92169060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561172657600080fd5b6102c65a03f1151561173757600080fd5b505050604051805150506000601755565b60005433600160a060020a0390811691161461176357600080fd5b600160a060020a038116151561177857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154600160a060020a031681565b603c81565b6000805481908190819033600160a060020a0390811691161461181957600080fd5b60215442108015611835575069028a857425466f800000600254105b151561184057600080fd5b845186511461184e57600080fd5b5060005b85518110156118a85785818151811061186757fe5b90602001906020020151925084818151811061187f57fe5b9060200190602002015191506118958383610e57565b15156118a057600080fd5b600101611852565b50600195945050505050565b600080600060205462030d400142111580156118d75750674563918244f4000034105b156118e55760009250611915565b60205442101580156118f957506021544211155b91505067016345785d8a00003410158180156119125750805b92505b505090565b60008282111561192657fe5b50900390565b60008083151561193f576000915061195b565b5082820282848281151561194f57fe5b041461195757fe5b8091505b5092915050565b60008282018381101561195757fe5b600e548015156119b9576003805460ff191660011790557f629c1b672a634075c61f1cbfbec5f3e47b94c3f90f065486f615ecfa18713d3460405160405180910390a16119fe565b60048114156119fe576003805461ff0019166101001790557f9788c3426de973293d591b3f0e14ad70f5569c28608c87c18153eabc2a157eed60405160405180910390a15b7f3498c518c1664de68a3744940b2f4f05ebbd29e00304ef21a7e00fcc691e862d8160010160405190815260200160405180910390a150565b6000808284811515611a4557fe5b049493505050505600a165627a7a72305820fb147627e503716e8fcbbd3bce8bc28ba39cba41bb6b69e1dcd940324a28a7a10029

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

000000000000000000000000000000000000000000000000000000005a8edaf0000000000000000000000000cbe68025e4883430e53a1e59de0a556358f335f1000000000000000000000000ecf3fa1553b6f16bd63805433383cf5ce3ca995300000000000000000000000000b3f327c503d2d3ff79c88438aed27848c1691900000000000000000000000000cb16adfe143cadd5d7d86860b381d7d2fa54d7

-----Decoded View---------------
Arg [0] : _startTime (uint256): 1519311600
Arg [1] : _wallet (address): 0xcbE68025E4883430e53A1e59dE0a556358F335F1
Arg [2] : _walletCoreTeam (address): 0xECF3fA1553b6F16BD63805433383CF5cE3CA9953
Arg [3] : _walletPlatform (address): 0x00b3f327c503D2d3FF79C88438aed27848C16919
Arg [4] : _walletBountyAndAdvisors (address): 0x00cB16Adfe143cadD5D7D86860b381D7D2FA54D7

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005a8edaf0
Arg [1] : 000000000000000000000000cbe68025e4883430e53a1e59de0a556358f335f1
Arg [2] : 000000000000000000000000ecf3fa1553b6f16bd63805433383cf5ce3ca9953
Arg [3] : 00000000000000000000000000b3f327c503d2d3ff79c88438aed27848c16919
Arg [4] : 00000000000000000000000000cb16adfe143cadd5d7d86860b381d7d2fa54d7


Swarm Source

bzzr://4a9a6d2fb4c1af3ff6565fce8b8c722192ec8167fe1e45fd24a499e10aa5f049

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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