Contract Overview | CoinLionTokenSale
Balance: 0 Ether
Ether Value: $0
Transactions: 3037 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x1515a52e95099057477d2b0ac925c2bb73b629c6at txn 0x4744a974a78ca7c01fdcd5cac9f4ec0a3d284d9747780df1dac4d446941b629e
Token Balance:
 Latest 25 txns From a total of 3037 Transactions

TxHash Age From To Value [TxFee]
0x8897ab96a830d7e2388b4d8e7c9c5825ff29dccd9a81df4c67dee7c28b92a031228 days 13 hrs ago0x54460cdc012d84e930ea992fa818081dda1d8aff  IN   CoinLionTokenSale0.00001 Ether0.000861
0xeefe2a010b8837786b48c28941955e78b52b3231d7dc4e827aca0eeca0d73707236 days 16 hrs ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00445715
0x10502ba6bfc86b12abfe6ed81bd51c6e02127cf0921b46a0459917af97c39933236 days 16 hrs ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.0014076
0x22954afc4acbab7405954e87fea7c1ee9c694c38e0be3d68786a22877216076b242 days 41 mins ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00137385
0x4728739ceee4f45cc4414804ce6b79dec8b7f8263e62e8769a93456146362e32242 days 42 mins ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00144695
0x4804a7415435171c77b59581df95721ddceb69360dde496d8b50a6f0d368b496242 days 54 mins ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00144695
0x4b7ffd4a3d738e294368fdf55dc05f288e9098c149d84c0f4c819ae93861521a242 days 56 mins ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00113205
0xf363c0c3414dcee35b9062787c71f630601d750cccb504fb5d10766559033290242 days 1 hr ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00186815
0x47381ba5a14fd08cfd3dcf976dc9fad051393da21a29cb04330476a008c1ca33242 days 1 hr ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.0014076
0x0255e25cb9c3467c963ed8225eb09982c31d57ba765e6b0e25b381c89c87b307258 days 21 hrs ago0x901b254d72016f4e9410aebe0bde05f094d52a67  IN   CoinLionTokenSale1 Ether0.000894087
0x005557985bcb7c0128de82265d72097f0c64671b023b671da130bbf036cf67eb258 days 22 hrs ago0x901b254d72016f4e9410aebe0bde05f094d52a67  IN   CoinLionTokenSale1.019139 Ether0.000894087
0x978366eec11ee32405a1f2a58f08592d027ea54993c73e374f5c5445ba4886d0261 days 18 hrs ago0xfd30f11deb1c80d93533b6c7ab18a46b4f16d908  IN   CoinLionTokenSale0.01 Ether0.000501561
0x9945459d1ccc0108a23c44b127ad1cf41058b46294f6a1bfc7eac0f3af909251262 days 1 hr ago0x1515a52e95099057477d2b0ac925c2bb73b629c6  IN   CoinLionTokenSale0 Ether0.00137385
0x54cc7740bc23c75dce064e2a90a59450644483ada61e2a622b585f28cc775973262 days 1 hr ago0xbfe490da297be6827cdaf2c3b851ab3dc8bb2604  IN   CoinLionTokenSale5 Ether0.0106131
0x74878af126aa804e7a4948223b56196398a94914a5f522d9ab5682c9db836373262 days 2 hrs ago0x9aad533116d8c8e48319f3c785bcb5972c3601c6  IN   CoinLionTokenSale1 Ether0.0106131
0x7d4d07bf158df7e086a953a7ef1fdde380ea87a8b335afdf143dda1adebb7e5a262 days 3 hrs ago0xc30a0a3a5f475f442a1b4898a59f5aa1261d907f  IN   CoinLionTokenSale0.19 Ether0.00070754
0x2d6f705c4f50c6c26b831cca7a092822b6f74a27d88b18efd53573cdea04898e262 days 3 hrs ago0x5e7dba487dbd17869eca8232f38bdf5861e353b1  IN   CoinLionTokenSale5 Ether0.00070754
0xb90e2e3be0f97519d1d605e15a9543ca3c9112e19560dc67f3f39875f84dbbaf262 days 3 hrs ago0xffb1c453591a95a0a9cc4b3a4b7549b9263d74fb  IN   CoinLionTokenSale0.4 Ether0.0063335
0x1556cb62fb8ccab261ecb8a3d3c19d08bd4a62a973320cf3c4d357be7fc3b54a262 days 3 hrs ago0x048521da86f9a1c6488f6ef23a1ddb19b4391e88  IN   CoinLionTokenSale0.5 Ether0.00884425
0x21c901992cc2a615d192baa5914544fd3b51b8dc7bf3b16cce7938335d97a9a0262 days 4 hrs ago0xffb1c453591a95a0a9cc4b3a4b7549b9263d74fb  IN   CoinLionTokenSale0.4 Ether0.00125
0x0f60d3cf74c8364c6bb7b90c83acc30b4d030ad98177a3043f058dcc156969ec262 days 4 hrs ago0x0023e398edbe001db48b93883c891c2fce0eda99  IN   CoinLionTokenSale1 Ether0.0106131
0xc41eabbfaefe6e4abb86dbaea42e733cb43e5827bb62b9bc28f728d3615b7b43262 days 4 hrs ago0xda65e2cf7d9625c6bf95b0216404ee1279870c52  IN   CoinLionTokenSale1 Ether0.0106131
0xabb9a7294d5af3251bc52b0ce3860844a26e51184a07b5e32e23631af2dd1406262 days 4 hrs ago0x5a75bc042c086ed56c2a47bb2df44ad552db0071  IN   CoinLionTokenSale0.5 Ether0.0076002
0x7f9a31f58b3c8b52a47632134a8ab63da5cfb91379d5b348b2c7fee11b0e4e12262 days 4 hrs ago0xf21ee179bd721807c4cb4a2844a4b1bb4a833f18  IN   CoinLionTokenSale0.5 Ether0.0106131
0x84dd3b989529258d02796d2f1c1f9e661e8a5870323331b911921ab675be2fbd262 days 5 hrs ago0xffb1c453591a95a0a9cc4b3a4b7549b9263d74fb  IN   CoinLionTokenSale0.7 Ether0.00884425
[ 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
0x54cc7740bc23c75dce064e2a90a59450644483ada61e2a622b585f28cc7759735006209262 days 1 hr ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa55 Ether
0x74878af126aa804e7a4948223b56196398a94914a5f522d9ab5682c9db8363735006004262 days 2 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0x7d4d07bf158df7e086a953a7ef1fdde380ea87a8b335afdf143dda1adebb7e5a5005870262 days 3 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.19 Ether
0x2d6f705c4f50c6c26b831cca7a092822b6f74a27d88b18efd53573cdea04898e5005865262 days 3 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa55 Ether
0xb90e2e3be0f97519d1d605e15a9543ca3c9112e19560dc67f3f39875f84dbbaf5005786262 days 3 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.4 Ether
0x1556cb62fb8ccab261ecb8a3d3c19d08bd4a62a973320cf3c4d357be7fc3b54a5005770262 days 3 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x0f60d3cf74c8364c6bb7b90c83acc30b4d030ad98177a3043f058dcc156969ec5005634262 days 4 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0xc41eabbfaefe6e4abb86dbaea42e733cb43e5827bb62b9bc28f728d3615b7b435005609262 days 4 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0xabb9a7294d5af3251bc52b0ce3860844a26e51184a07b5e32e23631af2dd14065005505262 days 4 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x7f9a31f58b3c8b52a47632134a8ab63da5cfb91379d5b348b2c7fee11b0e4e125005504262 days 4 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x84dd3b989529258d02796d2f1c1f9e661e8a5870323331b911921ab675be2fbd5005441262 days 5 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.7 Ether
0xe0add2d29a1577c19fa31dbbfc59b1e52bc892b074289a96e7d602d9870700125005424262 days 5 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa57 Ether
0x9475189b5bfa208d4668240e39c4f8c456f38e0c62d996efa5c5afb779d9efba5005386262 days 5 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa57 Ether
0x1b6903be2699eec7cc5dc44e81d1644320d94c9f2827409cbbd45b1b0c6702fe5005317262 days 5 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0x087443dc1994621add16eed8ca7b104344a5497e1a92538df9ef51a02a7db7aa5005301262 days 5 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.15 Ether
0x1f46c0ac50b19bb29a912d53146c887227bee89a09c813c01557bc4057559fd45005168262 days 6 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.49 Ether
0xabc5ec6021a3c2a9eb51a3afe6178afe76d18c63ebb068890d33dbc328acdec65005106262 days 6 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.27 Ether
0x918e223e71c861581ead2f66fc917a7324f5ae6785a2c554aaca7716d80676825005102262 days 6 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.1 Ether
0x87bca8004cdbcaca205ec74cb741601795bd27a01bf0ecbb4d8d0c756bb37c565004935262 days 7 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa51 Ether
0x44870955a8ed8252fbaff51945f5dd95777f411c66d53f833a00b00e2cd3a3a55004909262 days 7 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa53.5 Ether
0xd6d79ac9325641050171669a88d2b7454df93fdb75db0cceb6619a5875f443045004720262 days 8 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa541.75 Ether
0xab0f172408ca1f62a82866d623ff6ca1ad4f025765d25e6c4655dd372764f0aa5004685262 days 8 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0x6317b08b475abc420dff2f49680aaa01e5df06d8c415233dc4fa1015204c05785004680262 days 8 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.16 Ether
0x12bde8109ca1c16e5f2b0c7e33902e42a5208d12e9151023e78db8f221156a025004638262 days 8 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.5 Ether
0xea2f81a3994b012378da47e5d56f479ad4969b739f2b2fd33359279a89afe4645004505262 days 8 hrs ago0x4f40cbd1fde9214b3bcbdc0359d132e6458f5e200xa5f18e3c4749c2e248f716719ecc42c1e8afafa50.4 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: MintedTokenCappedCrowdsale
Compiler Text: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  500



  Contract Source Code   Find Similiar Contracts

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Safe unsigned safe math.
 *
 * https://blog.aragon.one/library-driven-development-in-solidity-2bebcaf88736#.750gwtwli
 *
 * Originally from https://raw.githubusercontent.com/AragonOne/zeppelin-solidity/master/contracts/SafeMathLib.sol
 *
 * Maintained here until merged to mainline zeppelin-solidity.
 *
 */
library SafeMathLib {

  function times(uint a, uint b) returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function minus(uint a, uint b) returns (uint) {
    assert(b <= a);
    return a - b;
  }

  function plus(uint a, uint b) returns (uint) {
    uint c = a + b;
    assert(c>=a);
    return c;
  }

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Interface for defining crowdsale pricing.
 */
contract PricingStrategy {

  /** Interface declaration. */
  function isPricingStrategy() public constant returns (bool) {
    return true;
  }

  /** Self check if all references are correctly set.
   *
   * Checks that pricing strategy matches crowdsale parameters.
   */
  function isSane(address crowdsale) public constant returns (bool) {
    return true;
  }

  /**
   * @dev Pricing tells if this is a presale purchase or not.
     @param purchaser Address of the purchaser
     @return False by default, true if a presale purchaser
   */
  function isPresalePurchase(address purchaser) public constant returns (bool) {
    return false;
  }

  /**
   * When somebody tries to buy tokens for X eth, calculate how many tokens they get.
   *
   *
   * @param value - What is the value of the transaction send in as wei
   * @param tokensSold - how much tokens have been sold this far
   * @param weiRaised - how much money has been raised this far in the main token sale - this number excludes presale
   * @param msgSender - who is the investor of this transaction
   * @param decimals - how many decimal units the token has
   * @return Amount of tokens the investor receives
   */
  function calculatePrice(uint value, uint weiRaised, uint tokensSold, address msgSender, uint decimals) public constant returns (uint tokenAmount);
}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * Finalize agent defines what happens at the end of succeseful crowdsale.
 *
 * - Allocate tokens for founders, bounties and community
 * - Make tokens transferable
 * - etc.
 */
contract FinalizeAgent {

  function isFinalizeAgent() public constant returns(bool) {
    return true;
  }

  /** Return true if we can run finalizeCrowdsale() properly.
   *
   * This is a safety check function that doesn't allow crowdsale to begin
   * unless the finalizer has been set up properly.
   */
  function isSane() public constant returns (bool);

  /** Called once by crowdsale finalize() if the sale was success. */
  function finalizeCrowdsale();

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */






/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
  uint256 public totalSupply;
  function balanceOf(address who) constant returns (uint256);
  function transfer(address to, uint256 value) returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}



/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint256);
  function transferFrom(address from, address to, uint256 value) returns (bool);
  function approve(address spender, uint256 value) returns (bool);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * A token that defines fractional units as decimals.
 */
contract FractionalERC20 is ERC20 {

  uint public decimals;

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */


/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */




/**
 * @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;


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

}


/*
 * Haltable
 *
 * Abstract contract that allows children to implement an
 * emergency stop mechanism. Differs from Pausable by causing a throw when in halt mode.
 *
 *
 * Originally envisioned in FirstBlood ICO contract.
 */
contract Haltable is Ownable {
  bool public halted;

  modifier stopInEmergency {
    if (halted) throw;
    _;
  }

  modifier stopNonOwnersInEmergency {
    if (halted && msg.sender != owner) throw;
    _;
  }

  modifier onlyInEmergency {
    if (!halted) throw;
    _;
  }

  // called by the owner on emergency, triggers stopped state
  function halt() external onlyOwner {
    halted = true;
  }

  // called by the owner on end of emergency, returns to normal state
  function unhalt() external onlyOwner onlyInEmergency {
    halted = false;
  }

}







/**
 * Crowdsale state machine without buy functionality.
 *
 * Implements basic state machine logic, but leaves out all buy functions,
 * so that subclasses can implement their own buying logic.
 *
 *
 * For the default buy() implementation see Crowdsale.sol.
 */
contract CrowdsaleBase is Haltable {

  /* Max investment count when we are still allowed to change the multisig address */
  uint public MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE = 5;

  using SafeMathLib for uint;

  /* The token we are selling */
  FractionalERC20 public token;

  /* How we are going to price our offering */
  PricingStrategy public pricingStrategy;

  /* Post-success callback */
  FinalizeAgent public finalizeAgent;

  /* tokens will be transfered from this address */
  address public multisigWallet;

  /* if the funding goal is not reached, investors may withdraw their funds */
  uint public minimumFundingGoal;

  /* the UNIX timestamp start date of the crowdsale */
  uint public startsAt;

  /* the UNIX timestamp end date of the crowdsale */
  uint public endsAt;

  /* the number of tokens already sold through this contract*/
  uint public tokensSold = 0;

  /* How many wei of funding we have raised */
  uint public weiRaised = 0;

  /* Calculate incoming funds from presale contracts and addresses */
  uint public presaleWeiRaised = 0;

  /* How many distinct addresses have invested */
  uint public investorCount = 0;

  /* How much wei we have returned back to the contract after a failed crowdfund. */
  uint public loadedRefund = 0;

  /* How much wei we have given back to investors.*/
  uint public weiRefunded = 0;

  /* Has this crowdsale been finalized */
  bool public finalized;

  /** How much ETH each address has invested to this crowdsale */
  mapping (address => uint256) public investedAmountOf;

  /** How much tokens this crowdsale has credited for each investor address */
  mapping (address => uint256) public tokenAmountOf;

  /** Addresses that are allowed to invest even before ICO offical opens. For testing, for ICO partners, etc. */
  mapping (address => bool) public earlyParticipantWhitelist;

  /** This is for manul testing for the interaction from owner wallet. You can set it to any value and inspect this in blockchain explorer to see that crowdsale interaction works. */
  uint public ownerTestValue;

  /** State machine
   *
   * - Preparing: All contract initialization calls and variables have not been set yet
   * - Prefunding: We have not passed start time yet
   * - Funding: Active crowdsale
   * - Success: Minimum funding goal reached
   * - Failure: Minimum funding goal not reached before ending time
   * - Finalized: The finalized has been called and succesfully executed
   * - Refunding: Refunds are loaded on the contract for reclaim.
   */
  enum State{Unknown, Preparing, PreFunding, Funding, Success, Failure, Finalized, Refunding}

  // A new investment was made
  event Invested(address investor, uint weiAmount, uint tokenAmount, uint128 customerId);

  // Refund was processed for a contributor
  event Refund(address investor, uint weiAmount);

  // The rules were changed what kind of investments we accept
  event InvestmentPolicyChanged(bool newRequireCustomerId, bool newRequiredSignedAddress, address newSignerAddress);

  // Address early participation whitelist status changed
  event Whitelisted(address addr, bool status);

  // Crowdsale end time has been changed
  event EndsAtChanged(uint newEndsAt);

  State public testState;

  function CrowdsaleBase(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal) {

    owner = msg.sender;

    token = FractionalERC20(_token);

    setPricingStrategy(_pricingStrategy);

    multisigWallet = _multisigWallet;
    if(multisigWallet == 0) {
        throw;
    }

    if(_start == 0) {
        throw;
    }

    startsAt = _start;

    if(_end == 0) {
        throw;
    }

    endsAt = _end;

    // Don't mess the dates
    if(startsAt >= endsAt) {
        throw;
    }

    // Minimum funding goal can be zero
    minimumFundingGoal = _minimumFundingGoal;
  }

  /**
   * Don't expect to just send in money and get tokens.
   */
  function() payable {
    throw;
  }

  /**
   * Make an investment.
   *
   * Crowdsale must be running for one to invest.
   * We must have not pressed the emergency brake.
   *
   * @param receiver The Ethereum address who receives the tokens
   * @param customerId (optional) UUID v4 to track the successful payments on the server side'
   *
   * @return tokenAmount How mony tokens were bought
   */
  function investInternal(address receiver, uint128 customerId) stopInEmergency internal returns(uint tokensBought) {

    // Determine if it's a good time to accept investment from this participant
    if(getState() == State.PreFunding) {
      // Are we whitelisted for early deposit
      if(!earlyParticipantWhitelist[receiver]) {
        throw;
      }
    } else if(getState() == State.Funding) {
      // Retail participants can only come in when the crowdsale is running
      // pass
    } else {
      // Unwanted state
      throw;
    }

    uint weiAmount = msg.value;

    // Account presale sales separately, so that they do not count against pricing tranches
    uint tokenAmount = pricingStrategy.calculatePrice(weiAmount, weiRaised - presaleWeiRaised, tokensSold, msg.sender, token.decimals());

    // Dust transaction
    require(tokenAmount != 0);

    if(investedAmountOf[receiver] == 0) {
       // A new investor
       investorCount++;
    }

    // Update investor
    investedAmountOf[receiver] = investedAmountOf[receiver].plus(weiAmount);
    tokenAmountOf[receiver] = tokenAmountOf[receiver].plus(tokenAmount);

    // Update totals
    weiRaised = weiRaised.plus(weiAmount);
    tokensSold = tokensSold.plus(tokenAmount);

    if(pricingStrategy.isPresalePurchase(receiver)) {
        presaleWeiRaised = presaleWeiRaised.plus(weiAmount);
    }

    // Check that we did not bust the cap
    require(!isBreakingCap(weiAmount, tokenAmount, weiRaised, tokensSold));

    assignTokens(receiver, tokenAmount);

    // Pocket the money, or fail the crowdsale if we for some reason cannot send the money to our multisig
    if(!multisigWallet.send(weiAmount)) throw;

    // Tell us invest was success
    Invested(receiver, weiAmount, tokenAmount, customerId);

    return tokenAmount;
  }

  /**
   * Finalize a succcesful crowdsale.
   *
   * The owner can triggre a call the contract that provides post-crowdsale actions, like releasing the tokens.
   */
  function finalize() public inState(State.Success) onlyOwner stopInEmergency {

    // Already finalized
    if(finalized) {
      throw;
    }

    // Finalizing is optional. We only call it if we are given a finalizing agent.
    if(address(finalizeAgent) != 0) {
      finalizeAgent.finalizeCrowdsale();
    }

    finalized = true;
  }

  /**
   * Allow to (re)set finalize agent.
   *
   * Design choice: no state restrictions on setting this, so that we can fix fat finger mistakes.
   */
  function setFinalizeAgent(FinalizeAgent addr) onlyOwner {
    finalizeAgent = addr;

    // Don't allow setting bad agent
    if(!finalizeAgent.isFinalizeAgent()) {
      throw;
    }
  }

  /**
   * Allow crowdsale owner to close early or extend the crowdsale.
   *
   * This is useful e.g. for a manual soft cap implementation:
   * - after X amount is reached determine manual closing
   *
   * This may put the crowdsale to an invalid state,
   * but we trust owners know what they are doing.
   *
   */
  function setEndsAt(uint time) onlyOwner {

    if(now > time) {
      throw; // Don't change past
    }

    if(startsAt > time) {
      throw; // Prevent human mistakes
    }

    endsAt = time;
    EndsAtChanged(endsAt);
  }

  /**
   * Allow to (re)set pricing strategy.
   *
   * Design choice: no state restrictions on the set, so that we can fix fat finger mistakes.
   */
  function setPricingStrategy(PricingStrategy _pricingStrategy) onlyOwner {
    pricingStrategy = _pricingStrategy;

    // Don't allow setting bad agent
    if(!pricingStrategy.isPricingStrategy()) {
      throw;
    }
  }

  /**
   * Allow to change the team multisig address in the case of emergency.
   *
   * This allows to save a deployed crowdsale wallet in the case the crowdsale has not yet begun
   * (we have done only few test transactions). After the crowdsale is going
   * then multisig address stays locked for the safety reasons.
   */
  function setMultisig(address addr) public onlyOwner {

    // Change
    if(investorCount > MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE) {
      throw;
    }

    multisigWallet = addr;
  }

  /**
   * Allow load refunds back on the contract for the refunding.
   *
   * The team can transfer the funds back on the smart contract in the case the minimum goal was not reached..
   */
  function loadRefund() public payable inState(State.Failure) {
    if(msg.value == 0) throw;
    loadedRefund = loadedRefund.plus(msg.value);
  }

  /**
   * Investors can claim refund.
   *
   * Note that any refunds from proxy buyers should be handled separately,
   * and not through this contract.
   */
  function refund() public inState(State.Refunding) {
    uint256 weiValue = investedAmountOf[msg.sender];
    if (weiValue == 0) throw;
    investedAmountOf[msg.sender] = 0;
    weiRefunded = weiRefunded.plus(weiValue);
    Refund(msg.sender, weiValue);
    if (!msg.sender.send(weiValue)) throw;
  }

  /**
   * @return true if the crowdsale has raised enough money to be a successful.
   */
  function isMinimumGoalReached() public constant returns (bool reached) {
    return weiRaised >= minimumFundingGoal;
  }

  /**
   * Check if the contract relationship looks good.
   */
  function isFinalizerSane() public constant returns (bool sane) {
    return finalizeAgent.isSane();
  }

  /**
   * Check if the contract relationship looks good.
   */
  function isPricingSane() public constant returns (bool sane) {
    return pricingStrategy.isSane(address(this));
  }

  /**
   * Crowdfund state machine management.
   *
   * We make it a function and do not assign the result to a variable, so there is no chance of the variable being stale.
   */
  function getState() public constant returns (State) {
    if(finalized) return State.Finalized;
    else if (address(finalizeAgent) == 0) return State.Preparing;
    else if (!finalizeAgent.isSane()) return State.Preparing;
    else if (!pricingStrategy.isSane(address(this))) return State.Preparing;
    else if (block.timestamp < startsAt) return State.PreFunding;
    else if (block.timestamp <= endsAt && !isCrowdsaleFull()) return State.Funding;
    else if (isMinimumGoalReached()) return State.Success;
    else if (!isMinimumGoalReached() && weiRaised > 0 && loadedRefund >= weiRaised) return State.Refunding;
    else return State.Failure;
  }

  /** This is for manual testing of multisig wallet interaction */
  function setOwnerTestValue(uint val) onlyOwner {
    ownerTestValue = val;
  }

  /**
   * Allow addresses to do early participation.
   *
   * TODO: Fix spelling error in the name
   */
  function setEarlyParicipantWhitelist(address addr, bool status) onlyOwner {
    earlyParticipantWhitelist[addr] = status;
    Whitelisted(addr, status);
  }


  /** Interface marker. */
  function isCrowdsale() public constant returns (bool) {
    return true;
  }

  //
  // Modifiers
  //

  /** Modified allowing execution only if the crowdsale is currently running.  */
  modifier inState(State state) {
    if(getState() != state) throw;
    _;
  }


  //
  // Abstract functions
  //

  /**
   * Check if the current invested breaks our cap rules.
   *
   *
   * The child contract must define their own cap setting rules.
   * We allow a lot of flexibility through different capping strategies (ETH, token count)
   * Called from invest().
   *
   * @param weiAmount The amount of wei the investor tries to invest in the current transaction
   * @param tokenAmount The amount of tokens we try to give to the investor in the current transaction
   * @param weiRaisedTotal What would be our total raised balance after this transaction
   * @param tokensSoldTotal What would be our total sold tokens count after this transaction
   *
   * @return true if taking this investment would break our cap rules
   */
  function isBreakingCap(uint weiAmount, uint tokenAmount, uint weiRaisedTotal, uint tokensSoldTotal) constant returns (bool limitBroken);

  /**
   * Check if the current crowdsale is full and we can no longer sell any tokens.
   */
  function isCrowdsaleFull() public constant returns (bool);

  /**
   * Create new tokens or transfer issued tokens to the investor depending on the cap model.
   */
  function assignTokens(address receiver, uint tokenAmount) internal;
}



/**
 * Abstract base contract for token sales with the default buy entry points.
 *
 * Handle
 * - start and end dates
 * - accepting investments
 * - minimum funding goal and refund
 * - various statistics during the crowdfund
 * - different pricing strategies
 * - different investment policies (require server side customer id, allow only whitelisted addresses)
 *
 * Does not Handle
 *
 * - Token allocation (minting vs. transfer)
 * - Cap rules
 *
 */
contract Crowdsale is CrowdsaleBase {

  /* Do we need to have unique contributor id for each customer */
  bool public requireCustomerId;

  /**
    * Do we verify that contributor has been cleared on the server side (accredited investors only).
    * This method was first used in FirstBlood crowdsale to ensure all contributors have accepted terms on sale (on the web).
    */
  bool public requiredSignedAddress;

  /* Server side address that signed allowed contributors (Ethereum addresses) that can participate the crowdsale */
  address public signerAddress;

  function Crowdsale(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal) CrowdsaleBase(_token, _pricingStrategy, _multisigWallet, _start, _end, _minimumFundingGoal) {
  }

  /**
   * Preallocate tokens for the early investors.
   *
   * Preallocated tokens have been sold before the actual crowdsale opens.
   * This function mints the tokens and moves the crowdsale needle.
   *
   * Investor count is not handled; it is assumed this goes for multiple investors
   * and the token distribution happens outside the smart contract flow.
   *
   * No money is exchanged, as the crowdsale team already have received the payment.
   *
   * @param fullTokens tokens as full tokens - decimal places added internally
   * @param weiPrice Price of a single full token in wei
   *
   */
  function preallocate(address receiver, uint fullTokens, uint weiPrice) public onlyOwner {

    uint tokenAmount = fullTokens * 10**token.decimals();
    uint weiAmount = weiPrice * fullTokens; // This can be also 0, we give out tokens for free

    weiRaised = weiRaised.plus(weiAmount);
    tokensSold = tokensSold.plus(tokenAmount);

    investedAmountOf[receiver] = investedAmountOf[receiver].plus(weiAmount);
    tokenAmountOf[receiver] = tokenAmountOf[receiver].plus(tokenAmount);

    assignTokens(receiver, tokenAmount);

    // Tell us invest was success
    Invested(receiver, weiAmount, tokenAmount, 0);
  }

  /**
   * Allow anonymous contributions to this crowdsale.
   */
  function investWithSignedAddress(address addr, uint128 customerId, uint8 v, bytes32 r, bytes32 s) public payable {
     bytes32 hash = sha256(addr);
     if (ecrecover(hash, v, r, s) != signerAddress) throw;
     if(customerId == 0) throw;  // UUIDv4 sanity check
     investInternal(addr, customerId);
  }

  /**
   * Track who is the customer making the payment so we can send thank you email.
   */
  function investWithCustomerId(address addr, uint128 customerId) public payable {
    if(requiredSignedAddress) throw; // Crowdsale allows only server-side signed participants
    if(customerId == 0) throw;  // UUIDv4 sanity check
    investInternal(addr, customerId);
  }

  /**
   * Allow anonymous contributions to this crowdsale.
   */
  function invest(address addr) public payable {
    if(requireCustomerId) throw; // Crowdsale needs to track participants for thank you email
    if(requiredSignedAddress) throw; // Crowdsale allows only server-side signed participants
    investInternal(addr, 0);
  }

  /**
   * Invest to tokens, recognize the payer and clear his address.
   *
   */
  function buyWithSignedAddress(uint128 customerId, uint8 v, bytes32 r, bytes32 s) public payable {
    investWithSignedAddress(msg.sender, customerId, v, r, s);
  }

  /**
   * Invest to tokens, recognize the payer.
   *
   */
  function buyWithCustomerId(uint128 customerId) public payable {
    investWithCustomerId(msg.sender, customerId);
  }

  /**
   * The basic entry point to participate the crowdsale process.
   *
   * Pay for funding, get invested tokens back in the sender address.
   */
  function buy() public payable {
    invest(msg.sender);
  }

  /**
   * Buy tokens as generic fallback
   */
  function() payable {
    invest(msg.sender);
  }

  /**
   * Set policy do we need to have server-side customer ids for the investments.
   *
   */
  function setRequireCustomerId(bool value) onlyOwner {
    requireCustomerId = value;
    InvestmentPolicyChanged(requireCustomerId, requiredSignedAddress, signerAddress);
  }

  /**
   * Set policy if all investors must be cleared on the server side first.
   *
   * This is e.g. for the accredited investor clearing.
   *
   */
  function setRequireSignedAddress(bool value, address _signerAddress) onlyOwner {
    requiredSignedAddress = value;
    signerAddress = _signerAddress;
    InvestmentPolicyChanged(requireCustomerId, requiredSignedAddress, signerAddress);
  }

}

/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */



/**
 * This smart contract code is Copyright 2017 TokenMarket Ltd. For more information see https://tokenmarket.net
 *
 * Licensed under the Apache License, version 2.0: https://github.com/TokenMarketNet/ico/blob/master/LICENSE.txt
 */









/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }

  function div(uint256 a, uint256 b) internal constant 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;
  }

  function sub(uint256 a, uint256 b) internal constant returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  function add(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}



/**
 * @title Basic token
 * @dev Basic version of StandardToken, with no allowances. 
 */
contract BasicToken is ERC20Basic {
  using SafeMath for uint256;

  mapping(address => uint256) balances;

  /**
  * @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) returns (bool) {
    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) constant returns (uint256 balance) {
    return balances[_owner];
  }

}




/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * @dev https://github.com/ethereum/EIPs/issues/20
 * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 */
contract StandardToken is ERC20, BasicToken {

  mapping (address => mapping (address => uint256)) 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 amout of tokens to be transfered
   */
  function transferFrom(address _from, address _to, uint256 _value) returns (bool) {
    var _allowance = allowed[_from][msg.sender];

    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // require (_value <= _allowance);

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

  /**
   * @dev Aprove the passed address to spend the specified amount of tokens on behalf of msg.sender.
   * @param _spender The address which will spend the funds.
   * @param _value The amount of tokens to be spent.
   */
  function approve(address _spender, uint256 _value) returns (bool) {

    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    require((_value == 0) || (allowed[msg.sender][_spender] == 0));

    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 specifing the amount of tokens still available for the spender.
   */
  function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
    return allowed[_owner][_spender];
  }

}



/**
 * Standard EIP-20 token with an interface marker.
 *
 * @notice Interface marker is used by crowdsale contracts to validate that addresses point a good token contract.
 *
 */
contract StandardTokenExt is StandardToken {

  /* Interface declaration */
  function isToken() public constant returns (bool weAre) {
    return true;
  }
}




/**
 * A token that can increase its supply by another contract.
 *
 * This allows uncapped crowdsale by dynamically increasing the supply when money pours in.
 * Only mint agents, contracts whitelisted by owner, can mint new tokens.
 *
 */
contract MintableToken is StandardTokenExt, Ownable {

  using SafeMathLib for uint;

  bool public mintingFinished = false;

  /** List of agents that are allowed to create new tokens */
  mapping (address => bool) public mintAgents;

  event MintingAgentChanged(address addr, bool state);
  event Minted(address receiver, uint amount);

  /**
   * Create new tokens and allocate them to an address..
   *
   * Only callably by a crowdsale contract (mint agent).
   */
  function mint(address receiver, uint amount) onlyMintAgent canMint public {
    totalSupply = totalSupply.plus(amount);
    balances[receiver] = balances[receiver].plus(amount);

    // This will make the mint transaction apper in EtherScan.io
    // We can remove this after there is a standardized minting event
    Transfer(0, receiver, amount);
  }

  /**
   * Owner can allow a crowdsale contract to mint new tokens.
   */
  function setMintAgent(address addr, bool state) onlyOwner canMint public {
    mintAgents[addr] = state;
    MintingAgentChanged(addr, state);
  }

  modifier onlyMintAgent() {
    // Only crowdsale contracts are allowed to mint new tokens
    if(!mintAgents[msg.sender]) {
        throw;
    }
    _;
  }

  /** Make sure we are not done yet. */
  modifier canMint() {
    if(mintingFinished) throw;
    _;
  }
}


/**
 * ICO crowdsale contract that is capped by amout of tokens.
 *
 * - Tokens are dynamically created during the crowdsale
 *
 *
 */
contract MintedTokenCappedCrowdsale is Crowdsale {

  /* Maximum amount of tokens this crowdsale can sell. */
  uint public maximumSellableTokens;

  function MintedTokenCappedCrowdsale(address _token, PricingStrategy _pricingStrategy, address _multisigWallet, uint _start, uint _end, uint _minimumFundingGoal, uint _maximumSellableTokens) Crowdsale(_token, _pricingStrategy, _multisigWallet, _start, _end, _minimumFundingGoal) {
    maximumSellableTokens = _maximumSellableTokens;
  }

  /**
   * Called from invest() to confirm if the curret investment does not break our cap rule.
   */
  function isBreakingCap(uint weiAmount, uint tokenAmount, uint weiRaisedTotal, uint tokensSoldTotal) constant returns (bool limitBroken) {
    return tokensSoldTotal > maximumSellableTokens;
  }

  function isCrowdsaleFull() public constant returns (bool) {
    return tokensSold >= maximumSellableTokens;
  }

  /**
   * Dynamically create tokens and assign them to the investor.
   */
  function assignTokens(address receiver, uint tokenAmount) internal {
    MintableToken mintableToken = MintableToken(token);
    mintableToken.mint(receiver, tokenAmount);
  }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"ownerTestValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"requireCustomerId","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"isPricingSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimumFundingGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setFinalizeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"customerId","type":"uint128"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"investWithSignedAddress","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"investedAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalizeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"fullTokens","type":"uint256"},{"name":"weiPrice","type":"uint256"}],"name":"preallocate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maximumSellableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_pricingStrategy","type":"address"}],"name":"setPricingStrategy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokensSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"testState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"refund","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"signerAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRefunded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"halt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_INVESTMENTS_BEFORE_MULTISIG_CHANGE","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"time","type":"uint256"}],"name":"setEndsAt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"pricingStrategy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"loadedRefund","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isMinimumGoalReached","outputs":[{"name":"reached","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"}],"name":"setRequireCustomerId","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"loadRefund","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"val","type":"uint256"}],"name":"setOwnerTestValue","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":"multisigWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenAmountOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"customerId","type":"uint128"}],"name":"buyWithCustomerId","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"weiAmount","type":"uint256"},{"name":"tokenAmount","type":"uint256"},{"name":"weiRaisedTotal","type":"uint256"},{"name":"tokensSoldTotal","type":"uint256"}],"name":"isBreakingCap","outputs":[{"name":"limitBroken","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"isFinalizerSane","outputs":[{"name":"sane","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startsAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"halted","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"earlyParticipantWhitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unhalt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"requiredSignedAddress","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isCrowdsaleFull","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"status","type":"bool"}],"name":"setEarlyParicipantWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"bool"},{"name":"_signerAddress","type":"address"}],"name":"setRequireSignedAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"customerId","type":"uint128"}],"name":"investWithCustomerId","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setMultisig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"customerId","type":"uint128"},{"name":"v","type":"uint8"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"buyWithSignedAddress","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"presaleWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_pricingStrategy","type":"address"},{"name":"_multisigWallet","type":"address"},{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"},{"name":"_minimumFundingGoal","type":"uint256"},{"name":"_maximumSellableTokens","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"},{"indexed":false,"name":"tokenAmount","type":"uint256"},{"indexed":false,"name":"customerId","type":"uint128"}],"name":"Invested","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"investor","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refund","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newRequireCustomerId","type":"bool"},{"indexed":false,"name":"newRequiredSignedAddress","type":"bool"},{"indexed":false,"name":"newSignerAddress","type":"address"}],"name":"InvestmentPolicyChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"addr","type":"address"},{"indexed":false,"name":"status","type":"bool"}],"name":"Whitelisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newEndsAt","type":"uint256"}],"name":"EndsAtChanged","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052600560015560006009556000600a556000600b556000600c556000600d556000600e5534156200003357600080fd5b60405160e0806200249f833981016040528080519190602001805191906020018051919060200180519190602001805191906020018051919060200180519150505b8686868686865b8585858585855b5b60008054600160a060020a03191633600160a060020a03161790555b60008054600160a060020a03338116600160a060020a0319928316179092556002805492891692909116919091179055620000e985640100000000620013266200017182021704565b60058054600160a060020a031916600160a060020a0386811691909117918290551615156200011757600080fd5b8215156200012457600080fd5b60078390558115156200013657600080fd5b60088290556007548290106200014b57600080fd5b60068190555b5050505050505b50505060158490555050505b5050505050505062000232565b60005433600160a060020a039081169116146200018d57600080fd5b60038054600160a060020a031916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200020557600080fd5b6102c65a03f115156200021757600080fd5b5050506040518051905015156200022d57600080fd5b5b5b50565b61225d80620002426000396000f3006060604052361561026c5763ffffffff60e060020a6000350416630226401d811461027957806303ca0eed1461029e57806303f9c793146102c5578063062b01ce146102db5780630a09284a1461030257806313f4e977146103275780631865c57d1461034c57806319b667da146103835780631a49803b146103a45780631aae3460146103db57806321d5c0f61461040c57806332013ac31461043b5780633ad075ea146104625780634042b66f146104875780634551dd59146104ac5780634bb278f3146104d357806350c67734146104e8578063518ab2a814610509578063579506971461052e578063590e1ae3146105655780635b7633d01461057a5780635da89ac0146105a95780635ed7ca5b146105ce5780636203f09f146105e35780636e50eb3f1461060857806378b99c2414610620578063797d94371461064f5780637c2e08a3146106745780637f7d711e1461069b57806387612102146106b55780638d51faec146106bf5780638da5cb5b146106d75780639075becf1461070657806397b150ca1461073557806399e9376c146107665780639d3c663f14610785578063a6f2ae3a146107b8578063a7ba44c3146107c2578063af468682146107e9578063b3f05b971461080e578063b9b8af0b14610835578063cb16e6d01461085c578063cb3e64fd1461088f578063d222dc04146108a4578063d5d09021146108cb578063d7e64c00146108f2578063eac2493214610917578063ed68ff2c1461093d578063ef86944314610963578063f2fde38b1461098e578063f3283fba146109af578063f4869726146109d0578063f7c00e2f146109fb578063fc0c546a14610a20575b5b61027633610a4f565b5b005b341561028457600080fd5b61028c610a8a565b60405190815260200160405180910390f35b34156102a957600080fd5b6102b1610a90565b604051901515815260200160405180910390f35b610276600160a060020a0360043516610a4f565b005b34156102e657600080fd5b6102b1610a9e565b604051901515815260200160405180910390f35b341561030d57600080fd5b61028c610b19565b60405190815260200160405180910390f35b341561033257600080fd5b61028c610b1f565b60405190815260200160405180910390f35b341561035757600080fd5b61035f610b25565b6040518082600781111561036f57fe5b60ff16815260200191505060405180910390f35b341561038e57600080fd5b610276600160a060020a0360043516610cda565b005b610276600160a060020a03600435166fffffffffffffffffffffffffffffffff6024351660ff60443516606435608435610d8b565b005b34156103e657600080fd5b61028c600160a060020a0360043516610eab565b60405190815260200160405180910390f35b341561041757600080fd5b61041f610ebd565b604051600160a060020a03909116815260200160405180910390f35b341561044657600080fd5b610276600160a060020a0360043516602435604435610ecc565b005b341561046d57600080fd5b61028c611227565b60405190815260200160405180910390f35b341561049257600080fd5b61028c61122d565b60405190815260200160405180910390f35b34156104b757600080fd5b6102b1611233565b604051901515815260200160405180910390f35b34156104de57600080fd5b610276611239565b005b34156104f357600080fd5b610276600160a060020a0360043516611326565b005b341561051457600080fd5b61028c6113d7565b60405190815260200160405180910390f35b341561053957600080fd5b61035f6113dd565b6040518082600781111561036f57fe5b60ff16815260200191505060405180910390f35b341561057057600080fd5b6102766113e6565b005b341561058557600080fd5b61041f611544565b604051600160a060020a03909116815260200160405180910390f35b34156105b457600080fd5b61028c61155a565b60405190815260200160405180910390f35b34156105d957600080fd5b610276611560565b005b34156105ee57600080fd5b61028c6115b4565b60405190815260200160405180910390f35b341561061357600080fd5b6102766004356115ba565b005b341561062b57600080fd5b61041f61162e565b604051600160a060020a03909116815260200160405180910390f35b341561065a57600080fd5b61028c61163d565b60405190815260200160405180910390f35b341561067f57600080fd5b6102b1611643565b604051901515815260200160405180910390f35b34156106a657600080fd5b610276600435151561164f565b005b6102766116f8565b005b34156106ca57600080fd5b6102766004356117a9565b005b34156106e257600080fd5b61041f6117ce565b604051600160a060020a03909116815260200160405180910390f35b341561071157600080fd5b61041f6117dd565b604051600160a060020a03909116815260200160405180910390f35b341561074057600080fd5b61028c600160a060020a03600435166117ec565b60405190815260200160405180910390f35b6102766fffffffffffffffffffffffffffffffff600435166117fe565b005b341561079057600080fd5b6102b160043560243560443560643561180c565b604051901515815260200160405180910390f35b61027661181a565b005b34156107cd57600080fd5b6102b1611826565b604051901515815260200160405180910390f35b34156107f457600080fd5b61028c611890565b60405190815260200160405180910390f35b341561081957600080fd5b6102b1611896565b604051901515815260200160405180910390f35b341561084057600080fd5b6102b161189f565b604051901515815260200160405180910390f35b341561086757600080fd5b6102b1600160a060020a03600435166118c0565b604051901515815260200160405180910390f35b341561089a57600080fd5b6102766118d5565b005b34156108af57600080fd5b6102b161193c565b604051901515815260200160405180910390f35b34156108d657600080fd5b6102b161194b565b604051901515815260200160405180910390f35b34156108fd57600080fd5b61028c611957565b60405190815260200160405180910390f35b341561092257600080fd5b610276600160a060020a0360043516602435151561195d565b005b341561094857600080fd5b6102766004351515600160a060020a03602435166119eb565b005b610276600160a060020a03600435166fffffffffffffffffffffffffffffffff60243516611ab9565b005b341561099957600080fd5b610276600160a060020a0360043516611afd565b005b34156109ba57600080fd5b610276600160a060020a0360043516611b5a565b005b6102766fffffffffffffffffffffffffffffffff6004351660ff60243516604435606435611bb3565b005b3415610a0657600080fd5b61028c611bc7565b60405190815260200160405180910390f35b3415610a2b57600080fd5b61041f611bcd565b604051600160a060020a03909116815260200160405180910390f35b601454610100900460ff1615610a6457600080fd5b60145462010000900460ff1615610a7a57600080fd5b610a85816000611bdc565b505b50565b60135481565b601454610100900460ff1681565b600354600090600160a060020a0316638e76828830836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610af957600080fd5b6102c65a03f11515610b0a57600080fd5b50505060405180519150505b90565b60085481565b60065481565b600f5460009060ff1615610b3b57506006610b16565b600454600160a060020a03161515610b5557506001610b16565b600454600160a060020a03166382771c8e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610b9d57600080fd5b6102c65a03f11515610bae57600080fd5b505050604051805190501515610bc657506001610b16565b600354600160a060020a0316638e7682883060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610c1f57600080fd5b6102c65a03f11515610c3057600080fd5b505050604051805190501515610c4857506001610b16565b600754421015610c5a57506002610b16565b6008544211158015610c715750610c6f61194b565b155b15610c7e57506003610b16565b610c86611643565b15610c9357506004610b16565b610c9b611643565b158015610caa57506000600a54115b8015610cba5750600a54600d5410155b15610cc757506007610b16565b506005610b16565b5b5b5b5b5b5b5b5b90565b60005433600160a060020a03908116911614610cf557600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290551663614cb9046000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d6057600080fd5b6102c65a03f11515610d7157600080fd5b505050604051805190501515610a8757600080fd5b5b5b50565b6000600286600060405160200152604051600160a060020a03919091166c0100000000000000000000000002815260140160206040518083038160008661646e5a03f11515610dd957600080fd5b5050604051805160145490925063010000009004600160a060020a031690506001828686866040516000815260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f11515610e5d57600080fd5b505060206040510351600160a060020a031614610e7957600080fd5b6fffffffffffffffffffffffffffffffff85161515610e9757600080fd5b610ea18686611bdc565b505b505050505050565b60106020526000908152604090205481565b600454600160a060020a031681565b60008054819033600160a060020a03908116911614610eea57600080fd5b600254600160a060020a031663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f3257600080fd5b6102c65a03f11515610f4357600080fd5b50505060405180519050600a0a840291508383029050600a547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90918360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610fbb57600080fd5b6102c65a03f41515610fcc57600080fd5b5050506040518051600a55506009547393ba3058ad5fa1af80079aaabb530c97eb822222906366098d4f908460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561103a57600080fd5b6102c65a03f4151561104b57600080fd5b505050604051805160095550600160a060020a038516600090815260106020526040808220547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92859190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156110ce57600080fd5b6102c65a03f415156110df57600080fd5b5050506040518051600160a060020a03871660009081526010602090815260408083209390935560119052818120547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918691516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561116d57600080fd5b6102c65a03f4151561117e57600080fd5b5050506040518051600160a060020a038716600090815260116020526040902055506111aa85836121c0565b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc4335085828460006040518085600160a060020a0316600160a060020a03168152602001848152602001838152602001826fffffffffffffffffffffffffffffffff16815260200194505050505060405180910390a15b5b5050505050565b60155481565b600a5481565b60015b90565b6004805b611245610b25565b600781111561125057fe5b1461125a57600080fd5b60005433600160a060020a0390811691161461127557600080fd5b60005474010000000000000000000000000000000000000000900460ff161561129d57600080fd5b600f5460ff16156112ad57600080fd5b600454600160a060020a03161561131257600454600160a060020a0316630bf318a36040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156112fd57600080fd5b6102c65a03f1151561130e57600080fd5b5050505b600f805460ff191660011790555b5b5b5b50565b60005433600160a060020a0390811691161461134157600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166304bbc2556000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610d6057600080fd5b6102c65a03f11515610d7157600080fd5b505050604051805190501515610a8757600080fd5b5b5b50565b60095481565b60145460ff1681565b60006007805b6113f4610b25565b60078111156113ff57fe5b1461140957600080fd5b600160a060020a033316600090815260106020526040902054915081151561143057600080fd5b600160a060020a033316600090815260106020526040808220829055600e547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92869190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156114ac57600080fd5b6102c65a03f415156114bd57600080fd5b5050506040518051600e55507fbb28353e4598c3b9199101a66e0989549b659a59a54d2c27fbb183f1932c8e6d3383604051600160a060020a03909216825260208201526040908101905180910390a1600160a060020a03331682156108fc0283604051600060405180830381858888f193505050501515610a8557600080fd5b5b5b5050565b60145463010000009004600160a060020a031681565b600e5481565b60005433600160a060020a0390811691161461157b57600080fd5b6000805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790555b5b565b60015481565b60005433600160a060020a039081169116146115d557600080fd5b804211156115e257600080fd5b8060075411156115f157600080fd5b60088190557fd34bb772c4ae9baa99db852f622773b31c7827e8ee818449fef20d30980bd3108160405190815260200160405180910390a15b5b50565b600354600160a060020a031681565b600d5481565b600654600a5410155b90565b60005433600160a060020a0390811691161461166a57600080fd5b6014805461ff001916610100831515810291909117918290557f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39160ff918104821691620100008204169063010000009004600160a060020a031660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a15b5b50565b6005805b611704610b25565b600781111561170f57fe5b1461171957600080fd5b34151561172557600080fd5b600d547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90913460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561178757600080fd5b6102c65a03f4151561179857600080fd5b5050506040518051600d55505b5b50565b60005433600160a060020a039081169116146117c457600080fd5b60138190555b5b50565b600054600160a060020a031681565b600554600160a060020a031681565b60116020526000908152604090205481565b610a873382611ab9565b5b50565b60155481115b949350505050565b6115b133610a4f565b5b565b600454600090600160a060020a03166382771c8e82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610af957600080fd5b6102c65a03f11515610b0a57600080fd5b50505060405180519150505b90565b60075481565b600f5460ff1681565b60005474010000000000000000000000000000000000000000900460ff1681565b60126020526000908152604090205460ff1681565b60005433600160a060020a039081169116146118f057600080fd5b60005474010000000000000000000000000000000000000000900460ff16151561191957600080fd5b6000805474ff0000000000000000000000000000000000000000191690555b5b5b565b60145462010000900460ff1681565b60155460095410155b90565b600c5481565b60005433600160a060020a0390811691161461197857600080fd5b600160a060020a03821660009081526012602052604090819020805460ff19168315151790557fa54714518c5d275fdcd3d2a461e4858e4e8cb04fb93cd0bca9d6d34115f26440908390839051600160a060020a039092168252151560208201526040908101905180910390a15b5b5050565b60005433600160a060020a03908116911614611a0657600080fd5b6014805462ff000019166201000084151581029190911776ffffffffffffffffffffffffffffffffffffffff00000019166301000000600160a060020a03858116820292909217938490557f48d826081348f5f00e8a33c9ae8ce89ed4c6e88400b585a478bc203d9e8177d39360ff6101008204811694820416929190041660405192151583529015156020830152600160a060020a03166040808301919091526060909101905180910390a15b5b5050565b60145462010000900460ff1615611acf57600080fd5b6fffffffffffffffffffffffffffffffff81161515611aed57600080fd5b611af78282611bdc565b505b5050565b60005433600160a060020a03908116911614611b1857600080fd5b600160a060020a0381161515611b2d57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a03908116911614611b7557600080fd5b600154600c541115611b8657600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b611bc03385858585610d8b565b5b50505050565b600b5481565b600254600160a060020a031681565b600080548190819074010000000000000000000000000000000000000000900460ff1615611c0957600080fd5b60025b611c14610b25565b6007811115611c1f57fe5b1415611c5157600160a060020a03851660009081526012602052604090205460ff161515611c4c57600080fd5b611c77565b60035b611c5c610b25565b6007811115611c6757fe5b1415611c7257611c77565b600080fd5b5b600354600b54600a54600954600254349650600160a060020a03948516946318a4155e94889403929133911663313ce5676000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ce057600080fd5b6102c65a03f11515611cf157600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8816028152600481019590955260248501939093526044840191909152600160a060020a03166064830152608482015260a401602060405180830381600087803b1515611d5d57600080fd5b6102c65a03f11515611d6e57600080fd5b5050506040518051915050801515611d8557600080fd5b600160a060020a0385166000908152601060205260409020541515611dae57600c805460010190555b600160a060020a038516600090815260106020526040808220547393ba3058ad5fa1af80079aaabb530c97eb822222926366098d4f92869190516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611e2557600080fd5b6102c65a03f41515611e3657600080fd5b5050506040518051600160a060020a03871660009081526010602090815260408083209390935560119052818120547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918591516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611ec457600080fd5b6102c65a03f41515611ed557600080fd5b5050506040518051600160a060020a03871660009081526011602052604080822092909255600a547393ba3058ad5fa1af80079aaabb530c97eb82222293506366098d4f9290918691516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611f5c57600080fd5b6102c65a03f41515611f6d57600080fd5b5050506040518051600a55506009547393ba3058ad5fa1af80079aaabb530c97eb822222906366098d4f908360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515611fdb57600080fd5b6102c65a03f41515611fec57600080fd5b505050604051805160095550600354600160a060020a031663f14ae17d8660006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561205157600080fd5b6102c65a03f1151561206257600080fd5b50505060405180519050156120f157600b547393ba3058ad5fa1af80079aaabb530c97eb8222226366098d4f90918460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156120d357600080fd5b6102c65a03f415156120e457600080fd5b5050506040518051600b55505b6121018282600a5460095461180c565b1561210b57600080fd5b61211585826121c0565b600554600160a060020a031682156108fc0283604051600060405180830381858888f19350505050151561214857600080fd5b7f0396f60aaad038749091d273dc13aaabc63db6e2271c7bad442d5cf25cc4335085838387604051600160a060020a03909416845260208401929092526040808401919091526fffffffffffffffffffffffffffffffff90911660608301526080909101905180910390a18092505b5b505092915050565b600254600160a060020a0316806340c10f19848460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561221757600080fd5b6102c65a03f11515610ea357600080fd5b5050505b5050505600a165627a7a72305820e493afe907efc64acfbdba5ee2e945c4d1d729557b7e89b645f39d5838b6eea400290000000000000000000000002167fb82309cf76513e83b25123f8b0559d6b48f00000000000000000000000042245fd5c9d7b4af5df92a0bafd83cacda73944e000000000000000000000000a5f18e3c4749c2e248f716719ecc42c1e8afafa5000000000000000000000000000000000000000000000000000000005a19ce18000000000000000000000000000000000000000000000000000000005a934e0000000000000000000000000000000000000000000000006c6b935b8bbd400000000000000000000000000000000000000000000000cecb8f27f4200f3a000000

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

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000002167fb82309cf76513e83b25123f8b0559d6b48f
Arg [1] : 00000000000000000000000042245fd5c9d7b4af5df92a0bafd83cacda73944e
Arg [2] : 000000000000000000000000a5f18e3c4749c2e248f716719ecc42c1e8afafa5
Arg [3] : 000000000000000000000000000000000000000000000000000000005a19ce18
Arg [4] : 000000000000000000000000000000000000000000000000000000005a934e00
Arg [5] : 00000000000000000000000000000000000000000000006c6b935b8bbd400000
Arg [6] : 000000000000000000000000000000000000000000cecb8f27f4200f3a000000


   Library Used
SafeMathLib : 0x93ba3058ad5fa1af80079aaabb530c97eb822222

   Swarm Source:
bzzr://e493afe907efc64acfbdba5ee2e945c4d1d729557b7e89b645f39d5838b6eea4

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.