Latest 25 txns From a total of 4695 Transactions

TxHash Age From To Value [TxFee]
0x1117a929228b0ec8fd8807de09ed2fd35de3af00f83c30278fe0354b0aeace30178 days 4 hrs agoKucoin  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.259879 Ether0.00033633
0x0dcaab050f01fabe37d407dfc4710db3780692bc0d1f22c9b4ad9163e08c8e6e236 days 3 hrs agoKucoin  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.259879 Ether0.00089688
0x78958f2a9047309b55904c2c54fee09d984cda1f41e9582968f56fe16d010998286 days 5 hrs ago0xdf2d70292781770783be48f34fb12944e212f725  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.11 Ether0.00089688
0x012650c51f594979ef174d4aa91a26726c572399713ca77ce0c54580829187d0291 days 21 hrs ago0x3f7b367d6a0e23c8c278e6edfef987b0cce988d6  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a1 Ether0.00044844
0x8c15976989fdedcaf6030ae6e21bee66c5f1f4e1a8cbe72d2931208d48c0d7da292 days 17 hrs ago0x3f7b367d6a0e23c8c278e6edfef987b0cce988d6  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a1 Ether0.00044844
0xf973aff24bf7b8a4825c1eabcf24a18ac06232699a11706a8b92beea5332f391292 days 18 hrs ago0x3f7b367d6a0e23c8c278e6edfef987b0cce988d6  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a1 Ether0.00042
0x00af1f0510520d2db6090287ac6b6aa0cee5ecd4c9211abde2ab4c154499084e293 days 10 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0028238
0xb0f553aa2f0840d3c7b7051b2583128c3ca3c0d1ee0446eeb75ae1bcbcf7d3f9293 days 10 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032059
0xdeea672154511b31873cafd79c04331d01633979e5ab0cdd4ba08c604f7f618d293 days 10 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032092
0xd1157aefe85a3fdc9289ee765d81f1c81853535f9c633a891d6d432da33e435c293 days 10 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032092
0x7908f42c1200ee9f860448448e55099d433cdbef92cdc4126780921ae9aa6fc0293 days 10 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032092
0x898d202e75d4195829fc72c35aa9bce66afb37fcdd9c660dbeda12b93525f9b7293 days 11 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032092
0x4e0c27e374112ca28f3b45c4f10253fd0b73dfa6f47352862ac7f6d22e7c5aed293 days 11 hrs ago0x1e35343c175038a8aac75a391524c14a01b1a1b0  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0 Ether0.0032028
0x6e9aca71426ce1c78e614fa0807593c0176c800abf880b1b9bc383f27de9f7af293 days 13 hrs ago0x2e2cd0176794068d8c9d383071c47879d4b0a57d  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.142134435043707 Ether0.000011211
0xce21d526d67b34e85aa3822ca8084cd66730e5de3045a4691f49779bf1f26f96293 days 13 hrs ago0x7e7ec251af35329702ce12b1c13b2c50cb46f376  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.2 Ether0.002652825
0x76455800741030b4e34ae6d49909d2c0aeef13b84f0d522a8c3c908b2d2b6dcd293 days 13 hrs ago0x59dc2587a34c74da9edd7785d3863cc7fb015582  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.178 Ether0.0043904925
0xc0c37eeafb4557a1f39eb132ca83d1ad3ecfab5451b4ad3e04f0c34b999ded13293 days 13 hrs ago0x5696ec6c3b9c89f86afcba9278b6637dabcfa082  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.2 Ether0.0038615175
0xbec579ddce2e30e08f6a4353d9b64727bf0a4aeb95b779a575f2c450754c20de293 days 13 hrs ago0x79bb4334d78ee85cde28aca11092ccaff764c6cc  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.48 Ether0.001591695
0xeccede25df63c327b7b1c7daf1c69f370ef7c86ad2d12dfa60020b3722595a1b293 days 13 hrs ago0xc26c7c681a29060b5c48b566d6d32b0ea7190aa5  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a1 Ether0.00528975
0x9b6143f3b2120c31831a26d54b5befdcd67d4e5866e4d2248c207fb88cbe5396293 days 13 hrs ago0xc981430ad0fa4ceb0186da5a490346f2f074bcb3  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.020808 Ether0.000777
0x013a7dde6f3facea42f4774f107f1fda249ce901be8cdeab3efe93d8ae4a3fc5293 days 14 hrs ago0x5de8483036893a918fcdbd10533654134229ea8f  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a1 Ether0.0015159
0x211fe8a1fdae62ae31e72281b6b189768d99a64020d3f065edac020cd7e1ba29293 days 14 hrs ago0x3e08c1a82c838045e5f9458a9a7a3ed31832d70d  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.35 Ether0.003702825
0x9869146ec0ad05f20af4ebf34a0a9b6a180d889b1689618a9e2748fa2d986fd2293 days 14 hrs ago0x735801e046c9125699f3f65d58fd94551e3ea85c  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.3 Ether0.0063477
0x76ac1184b6ec9e7868620d47eece2bdef5db65f0ad87ec27da7eeaf9bd3265e8293 days 14 hrs agoBinance_1  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.13913386 Ether0.004168725
0x42c4288940c34332b3284655aed18e3fee296ce0ed602ce668c56ebbb6375ac0293 days 14 hrs ago0xfa2352188b4b55b9212f209096564c46859e60b8  IN   0x5401bb4729bd7f025b97399c3c92854ec299f81a0.9 Ether0.0063477
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 6 Internal Transactions

ParentTxHash Block Age From To Value
0xb0f553aa2f0840d3c7b7051b2583128c3ca3c0d1ee0446eeb75ae1bcbcf7d3f94827531293 days 10 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a2,000.62887458520917586 Ether
0xdeea672154511b31873cafd79c04331d01633979e5ab0cdd4ba08c604f7f618d4827524293 days 10 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a2,000 Ether
0xd1157aefe85a3fdc9289ee765d81f1c81853535f9c633a891d6d432da33e435c4827519293 days 10 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a1,000 Ether
0x7908f42c1200ee9f860448448e55099d433cdbef92cdc4126780921ae9aa6fc04827515293 days 10 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a1,000 Ether
0x898d202e75d4195829fc72c35aa9bce66afb37fcdd9c660dbeda12b93525f9b74827509293 days 11 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a600 Ether
0x4e0c27e374112ca28f3b45c4f10253fd0b73dfa6f47352862ac7f6d22e7c5aed4827495293 days 11 hrs ago0x5401bb4729bd7f025b97399c3c92854ec299f81a0xe697765b3df343019eec57defa7ba6245492cd2a1 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: LOCIsale
Compiler Text: v0.4.18+commit.9cf6e910
Optimization Enabled: No
Runs (Optimiser):  0



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.18;

/**
 * @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) public constant returns (uint256);
  function transfer(address to, uint256 value) public returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
}

/**
 * @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) public returns (bool) {
    require(_to != address(0));

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

}




/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) public constant 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);
}

/**
 * @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 amount of tokens to be transferred
   */
  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));

    uint256 _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[_from] = balances[_from].sub(_value);
    balances[_to] = balances[_to].add(_value);
    allowed[_from][msg.sender] = _allowance.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 constant returns (uint256 remaining) {
    return allowed[_owner][_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
   */
  function increaseApproval (address _spender, uint _addedValue)
    returns (bool success) {
    allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
    Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
    return true;
  }

  function decreaseApproval (address _spender, uint _subtractedValue)
    returns (bool success) {
    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;
  }

}


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


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


  /**
   * @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 public {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }

}


/**
 * @title Contactable token
 * @dev Basic version of a contactable contract, allowing the owner to provide a string with their
 * contact information.
 */
contract Contactable is Ownable{

    string public contactInformation;

    /**
     * @dev Allows the owner to set a string with their contact information.
     * @param info The contact information to attach to the contract.
     */
    function setContactInformation(string info) onlyOwner public {
         contactInformation = info;
     }
}


/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
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();
  }
}


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

contract IRefundHandler {
    function handleRefundRequest(address _contributor) external;
}


contract LOCIcoin is StandardToken, Ownable, Contactable {
    string public name = "";
    string public symbol = "";
    uint256 public constant decimals = 18;

    mapping (address => bool) internal allowedOverrideAddresses;

    bool public tokenActive = false;

    modifier onlyIfTokenActiveOrOverride() {
        // owner or any addresses listed in the overrides
        // can perform token transfers while inactive
        require(tokenActive || msg.sender == owner || allowedOverrideAddresses[msg.sender]);
        _;
    }

    modifier onlyIfTokenInactive() {
        require(!tokenActive);
        _;
    }

    modifier onlyIfValidAddress(address _to) {
        // prevent 'invalid' addresses for transfer destinations
        require(_to != 0x0);
        // don't allow transferring to this contract's address
        require(_to != address(this));
        _;
    }

    event TokenActivated();

    function LOCIcoin(uint256 _totalSupply, string _contactInformation ) public {
        totalSupply = _totalSupply;
        contactInformation = _contactInformation;

        // msg.sender == owner of the contract
        balances[msg.sender] = _totalSupply;
    }

    /// @dev Same ERC20 behavior, but reverts if not yet active.
    /// @param _spender address The address which will spend the funds.
    /// @param _value uint256 The amount of tokens to be spent.
    function approve(address _spender, uint256 _value) public onlyIfTokenActiveOrOverride onlyIfValidAddress(_spender) returns (bool) {
        return super.approve(_spender, _value);
    }

    /// @dev Same ERC20 behavior, but reverts if not yet active.
    /// @param _to address The address to transfer to.
    /// @param _value uint256 The amount to be transferred.
    function transfer(address _to, uint256 _value) public onlyIfTokenActiveOrOverride onlyIfValidAddress(_to) returns (bool) {
        return super.transfer(_to, _value);
    }

    function ownerSetOverride(address _address, bool enable) external onlyOwner {
        allowedOverrideAddresses[_address] = enable;
    }

    function ownerSetVisible(string _name, string _symbol) external onlyOwner onlyIfTokenInactive {        

        // By holding back on setting these, it prevents the token
        // from being a duplicate in ERC token searches if the need to
        // redeploy arises prior to the crowdsale starts.
        // Mainly useful during testnet deployment/testing.
        name = _name;
        symbol = _symbol;
    }

    function ownerActivateToken() external onlyOwner onlyIfTokenInactive {
        require(bytes(symbol).length > 0);

        tokenActive = true;
        TokenActivated();
    }

    function claimRefund(IRefundHandler _refundHandler) external {
        uint256 _balance = balances[msg.sender];

        // Positive token balance required to perform a refund
        require(_balance > 0);

        // this mitigates re-entrancy concerns
        balances[msg.sender] = 0;

        // Attempt to transfer wei back to msg.sender from the
        // crowdsale contract
        // Note: re-entrancy concerns are also addressed within
        // `handleRefundRequest`
        // this will throw an exception if any
        // problems or if refunding isn't enabled
        _refundHandler.handleRefundRequest(msg.sender);

        // If we've gotten here, then the wei transfer above
        // worked (didn't throw an exception) and it confirmed
        // that `msg.sender` had an ether balance on the contract.
        // Now do token transfer from `msg.sender` back to
        // `owner` completes the refund.
        balances[owner] = balances[owner].add(_balance);
        Transfer(msg.sender, owner, _balance);
    }
}


contract LOCIsale is Ownable, Pausable, IRefundHandler {
    using SafeMath for uint256;

    // this sale contract is creating the LOCIcoin
    // contract, and so will own it
    LOCIcoin internal token;

    // UNIX timestamp (UTC) based start and end, inclusive
    uint256 public start;               /* UTC of timestamp that the sale will start based on the value passed in at the time of construction */
    uint256 public end;                 /* UTC of computed time that the sale will end based on the hours passed in at time of construction */

    bool public isPresale;              /* For LOCI this will be false. We raised pre-ICO offline. */
    bool public isRefunding = false;    /* No plans to refund. */

    uint256 public minFundingGoalWei;   /* we can set this to zero, but we might want to raise at least 20000 Ether */
    uint256 public minContributionWei;  /* individual contribution min. we require at least a 0.1 Ether investment, for example. */
    uint256 public maxContributionWei;  /* individual contribution max. probably don't want someone to buy more than 60000 Ether */

    uint256 public weiRaised;       /* total of all weiContributions */
    uint256 public weiRaisedAfterDiscounts; /* wei raised after the discount periods end */
    uint256 internal weiForRefund;  /* only applicable if we enable refunding, if we don't meet our expected raise */

    uint256 public peggedETHUSD;    /* In whole dollars. $300 means use 300 */
    uint256 public hardCap;         /* In wei. Example: 64,000 cap = 64,000,000,000,000,000,000,000 */
    uint256 public reservedTokens;  /* In wei. Example: 54 million tokens, use 54000000 with 18 more zeros. then it would be 54000000 * Math.pow(10,18) */
    uint256 public baseRateInCents; /* $2.50 means use 250 */
    uint256 internal startingTokensAmount; // this will be set once, internally

    mapping (address => uint256) public contributions;

    struct DiscountTranche {
        // this will be a timestamp that is calculated based on
        // the # of hours a tranche rate is to be active for
        uint256 end;
        // should be a % number between 0 and 100
        uint8 discount;
        // should be 1, 2, 3, 4, etc...
        uint8 round;
        // amount raised during tranche in wei
        uint256 roundWeiRaised;
        // amount sold during tranche in wei
        uint256 roundTokensSold;
    }
    DiscountTranche[] internal discountTranches;
    uint8 internal currentDiscountTrancheIndex = 0;
    uint8 internal discountTrancheLength = 0;

    event ContributionReceived(address indexed buyer, bool presale, uint8 rate, uint256 value, uint256 tokens);
    event RefundsEnabled();
    event Refunded(address indexed buyer, uint256 weiAmount);
    event ToppedUp();
    event PegETHUSD(uint256 pegETHUSD);

    function LOCIsale(
        address _token,                /* LOCIcoin contract address */
        uint256 _peggedETHUSD,          /* 300 = 300 USD */
        uint256 _hardCapETHinWei,       /* In wei. Example: 64,000 cap = 64,000,000,000,000,000,000,000 */
        uint256 _reservedTokens,        /* In wei. Example: 54 million tokens, use 54000000 with 18 more zeros. then it would be 54000000 * Math.pow(10,18) */
        bool _isPresale,                /* For LOCI this will be false. Presale offline, and accounted for in reservedTokens */
        uint256 _minFundingGoalWei,     /* If we are looking to raise a minimum amount of wei, put it here */
        uint256 _minContributionWei,    /* For LOCI this will be 0.1 ETH */
        uint256 _maxContributionWei,    /* Advisable to not let a single contributor go over the max alloted, say 63333 * Math.pow(10,18) wei. */
        uint256 _start,                 /* For LOCI this will be Dec 6th 0:00 UTC in seconds */
        uint256 _durationHours,         /* Total length of the sale, in hours */
        uint256 _baseRateInCents,       /* Base rate in cents. $2.50 would be 250 */
        uint256[] _hourBasedDiscounts   /* Single dimensional array of pairs [hours, rateInCents, hours, rateInCents, hours, rateInCents, ... ] */
    ) public {
        require(_token != 0x0);
        // either have NO max contribution or the max must be more than the min
        require(_maxContributionWei == 0 || _maxContributionWei > _minContributionWei);
        // sale must have a duration!
        require(_durationHours > 0);

        token = LOCIcoin(_token);

        peggedETHUSD = _peggedETHUSD;
        hardCap = _hardCapETHinWei;
        reservedTokens = _reservedTokens;

        isPresale = _isPresale;

        start = _start;
        end = start.add(_durationHours.mul(1 hours));

        minFundingGoalWei = _minFundingGoalWei;
        minContributionWei = _minContributionWei;
        maxContributionWei = _maxContributionWei;

        baseRateInCents = _baseRateInCents;

        // this will throw if the # of hours and
        // discount % don't come in pairs
        uint256 _end = start;

        uint _tranche_round = 0;

        for (uint i = 0; i < _hourBasedDiscounts.length; i += 2) {
            // calculate the timestamp where the discount rate will end
            _end = _end.add(_hourBasedDiscounts[i].mul(1 hours));

            // the calculated tranche end cannot go past the crowdsale end
            require(_end <= end);

            _tranche_round += 1;

            discountTranches.push(DiscountTranche({ end:_end,
                                                    discount:uint8(_hourBasedDiscounts[i + 1]),
                                                    round:uint8(_tranche_round),
                                                    roundWeiRaised:0,
                                                    roundTokensSold:0}));

            discountTrancheLength = uint8(i+1);
        }
    }

    function determineDiscountTranche() internal returns (uint256, uint8, uint8) {
        if (currentDiscountTrancheIndex >= discountTranches.length) {
            return(0, 0, 0);
        }

        DiscountTranche storage _dt = discountTranches[currentDiscountTrancheIndex];
        if (_dt.end < now) {
            // find the next applicable tranche
            while (++currentDiscountTrancheIndex < discountTranches.length) {
                _dt = discountTranches[currentDiscountTrancheIndex];
                if (_dt.end > now) {
                    break;
                }
            }
        }

        // Example: there are 4 rounds, and we want to divide rounds 2-4 equally based on (starting-round1)/(discountTranches.length-1), move to next tranche
        // But don't move past the last round. Note, the last round should not be capped. That's why we check for round < # tranches
        if (_dt.round > 1 && _dt.roundTokensSold > 0 && _dt.round < discountTranches.length) {
            uint256 _trancheCountExceptForOne = discountTranches.length-1;
            uint256 _tokensSoldFirstRound = discountTranches[0].roundTokensSold;
            uint256 _allowedTokensThisRound = (startingTokensAmount.sub(_tokensSoldFirstRound)).div(_trancheCountExceptForOne);

            if (_dt.roundTokensSold > _allowedTokensThisRound) {
                currentDiscountTrancheIndex = currentDiscountTrancheIndex + 1;
                _dt = discountTranches[currentDiscountTrancheIndex];
            }
        }

        uint256 _end = 0;
        uint8 _rate = 0;
        uint8 _round = 0;

        // if the index is still valid, then we must have
        // a valid tranche, so return discount rate
        if (currentDiscountTrancheIndex < discountTranches.length) {
            _end = _dt.end;
            _rate = _dt.discount;
            _round = _dt.round;
        } else {
            _end = end;
            _rate = 0;
            _round = discountTrancheLength + 1;
        }

        return (_end, _rate, _round);
    }

    function() public payable whenNotPaused {
        require(!isRefunding);
        require(msg.sender != 0x0);
        require(msg.value >= minContributionWei);
        require(start <= now && end >= now);

        // prevent anything more than maxContributionWei per contributor address
        uint256 _weiContributionAllowed = maxContributionWei > 0 ? maxContributionWei.sub(contributions[msg.sender]) : msg.value;
        if (maxContributionWei > 0) {
            require(_weiContributionAllowed > 0);
        }

        // are limited by the number of tokens remaining
        uint256 _tokensRemaining = token.balanceOf(address(this)).sub( reservedTokens );
        require(_tokensRemaining > 0);

        if (startingTokensAmount == 0) {
            startingTokensAmount = _tokensRemaining; // set this once.
        }

        // limit contribution's value based on max/previous contributions
        uint256 _weiContribution = msg.value;
        if (_weiContribution > _weiContributionAllowed) {
            _weiContribution = _weiContributionAllowed;
        }

        // limit contribution's value based on hard cap of hardCap
        if (hardCap > 0 && weiRaised.add(_weiContribution) > hardCap) {
            _weiContribution = hardCap.sub( weiRaised );
        }

        // calculate token amount to be created
        uint256 _tokens = _weiContribution.mul(peggedETHUSD).mul(100).div(baseRateInCents);
        var (, _rate, _round) = determineDiscountTranche();
        if (_rate > 0) {
            _tokens = _weiContribution.mul(peggedETHUSD).mul(100).div(_rate);
        }

        if (_tokens > _tokensRemaining) {
            // there aren't enough tokens to fill the contribution amount, so recalculate the contribution amount
            _tokens = _tokensRemaining;
            if (_rate > 0) {
                _weiContribution = _tokens.mul(_rate).div(100).div(peggedETHUSD);
            } else {
                _weiContribution = _tokens.mul(baseRateInCents).div(100).div(peggedETHUSD);
            }
        }

        // add the contributed wei to any existing value for the sender
        contributions[msg.sender] = contributions[msg.sender].add(_weiContribution);
        ContributionReceived(msg.sender, isPresale, _rate, _weiContribution, _tokens);

        require(token.transfer(msg.sender, _tokens));

        weiRaised = weiRaised.add(_weiContribution); //total of all weiContributions

        if (discountTrancheLength > 0 && _round > 0 && _round <= discountTrancheLength) {
            discountTranches[_round-1].roundWeiRaised = discountTranches[_round-1].roundWeiRaised.add(_weiContribution);
            discountTranches[_round-1].roundTokensSold = discountTranches[_round-1].roundTokensSold.add(_tokens);
        }
        if (discountTrancheLength > 0 && _round > discountTrancheLength) {
            weiRaisedAfterDiscounts = weiRaisedAfterDiscounts.add(_weiContribution);
        }

        uint256 _weiRefund = msg.value.sub(_weiContribution);
        if (_weiRefund > 0) {
            msg.sender.transfer(_weiRefund);
        }
    }

    // in case we need to return funds to this contract
    function ownerTopUp() external payable {}

    function setReservedTokens( uint256 _reservedTokens ) onlyOwner public {
        reservedTokens = _reservedTokens;        
    }

    function pegETHUSD(uint256 _peggedETHUSD) onlyOwner public {
        peggedETHUSD = _peggedETHUSD;
        PegETHUSD(peggedETHUSD);
    }

    function setHardCap( uint256 _hardCap ) onlyOwner public {
        hardCap = _hardCap;
    }

    function peggedETHUSD() constant onlyOwner public returns(uint256) {
        return peggedETHUSD;
    }

    function hardCapETHInWeiValue() constant onlyOwner public returns(uint256) {
        return hardCap;
    }

    function weiRaisedDuringRound(uint8 round) constant onlyOwner public returns(uint256) {
        require( round > 0 && round <= discountTrancheLength );
        return discountTranches[round-1].roundWeiRaised;
    }

    function tokensRaisedDuringRound(uint8 round) constant onlyOwner public returns(uint256) {
        require( round > 0 && round <= discountTrancheLength );
        return discountTranches[round-1].roundTokensSold;
    }

    function weiRaisedAfterDiscountRounds() constant onlyOwner public returns(uint256) {
        return weiRaisedAfterDiscounts;
    }

    function totalWeiRaised() constant onlyOwner public returns(uint256) {
        return weiRaised;
    }

    function setStartingTokensAmount(uint256 _startingTokensAmount) onlyOwner public {
        startingTokensAmount = _startingTokensAmount;
    }

    function ownerEnableRefunds() external onlyOwner {
        // a little protection against human error;
        // sale must be ended OR it must be paused
        require(paused || now > end);
        require(!isRefunding);

        weiForRefund = this.balance;
        isRefunding = true;
        RefundsEnabled();
    }

    function ownerTransferWei(address _beneficiary, uint256 _value) external onlyOwner {
        require(_beneficiary != 0x0);
        require(_beneficiary != address(token));
        // we cannot withdraw if we didn't reach the minimum funding goal
        require(minFundingGoalWei == 0 || weiRaised >= minFundingGoalWei);

        // if zero requested, send the entire amount, otherwise the amount requested
        uint256 _amount = _value > 0 ? _value : this.balance;

        _beneficiary.transfer(_amount);
    }

    function ownerRecoverTokens(address _beneficiary) external onlyOwner {
        require(_beneficiary != 0x0);
        require(_beneficiary != address(token));
        require(paused || now > end);

        uint256 _tokensRemaining = token.balanceOf(address(this));
        if (_tokensRemaining > 0) {
            token.transfer(_beneficiary, _tokensRemaining);
        }
    }

    function handleRefundRequest(address _contributor) external {
        // Note that this method can only ever called by
        // the token contract's `claimRefund()` method;
        // everything that happens in here will only
        // succeed if `claimRefund()` works as well.

        require(isRefunding);
        // this can only be called by the token contract;
        // it is the entry point for the refund flow
        require(msg.sender == address(token));

        uint256 _wei = contributions[_contributor];

        // if this is zero, then `_contributor` didn't
        // contribute or they've already been refunded
        require(_wei > 0);

        // prorata the amount if necessary
        if (weiRaised > weiForRefund) {
            uint256 _n  = weiForRefund.mul(_wei).div(weiRaised);
            require(_n < _wei);
            _wei = _n;
        }

        // zero out their contribution, so they cannot
        // claim another refund; it's important (for
        // avoiding re-entrancy attacks) that this zeroing
        // happens before the transfer below
        contributions[_contributor] = 0;

        // give them their ether back; throws on failure
        _contributor.transfer(_wei);

        Refunded(_contributor, _wei);
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"baseRateInCents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_reservedTokens","type":"uint256"}],"name":"setReservedTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"reservedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"contributions","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalWeiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCapETHInWeiValue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"round","type":"uint8"}],"name":"weiRaisedDuringRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"peggedETHUSD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"round","type":"uint8"}],"name":"tokensRaisedDuringRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_value","type":"uint256"}],"name":"ownerTransferWei","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"ownerEnableRefunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minFundingGoalWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minContributionWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"ownerRecoverTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPresale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isRefunding","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"weiRaisedAfterDiscounts","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contributor","type":"address"}],"name":"handleRefundRequest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"start","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_peggedETHUSD","type":"uint256"}],"name":"pegETHUSD","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_hardCap","type":"uint256"}],"name":"setHardCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxContributionWei","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"ownerTopUp","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaisedAfterDiscountRounds","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_startingTokensAmount","type":"uint256"}],"name":"setStartingTokensAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_peggedETHUSD","type":"uint256"},{"name":"_hardCapETHinWei","type":"uint256"},{"name":"_reservedTokens","type":"uint256"},{"name":"_isPresale","type":"bool"},{"name":"_minFundingGoalWei","type":"uint256"},{"name":"_minContributionWei","type":"uint256"},{"name":"_maxContributionWei","type":"uint256"},{"name":"_start","type":"uint256"},{"name":"_durationHours","type":"uint256"},{"name":"_baseRateInCents","type":"uint256"},{"name":"_hourBasedDiscounts","type":"uint256[]"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"presale","type":"bool"},{"indexed":false,"name":"rate","type":"uint8"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"ContributionReceived","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[],"name":"ToppedUp","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"pegETHUSD","type":"uint256"}],"name":"PegETHUSD","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"}]

  Contract Creation Code Switch To Opcodes View
606060405260008060146101000a81548160ff0219169083151502179055506000600460016101000a81548160ff0219169083151502179055506000601260006101000a81548160ff021916908360ff1602179055506000601260016101000a81548160ff021916908360ff16021790555034156200007d57600080fd5b6040516200270c3803806200270c833981016040528080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080519060200190919080518201919050506000806000336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008f73ffffffffffffffffffffffffffffffffffffffff16141515156200016a57600080fd5b60008814806200017957508888115b15156200018557600080fd5b6000861115156200019557600080fd5b8e600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508d600b819055508c600c819055508b600d819055508a600460006101000a81548160ff021916908315150217905550866002819055506200025562000235610e1088620004206401000000000262000f21179091906401000000009004565b600254620004566401000000000262000f03179091906401000000009004565b60038190555089600581905550886006819055508760078190555084600e81905550600254925060009150600090505b83518110156200040b57620002ee620002d0610e108684815181101515620002a957fe5b90602001906020020151620004206401000000000262000f21179091906401000000009004565b84620004566401000000000262000f03179091906401000000009004565b925060035483111515156200030257600080fd5b600182019150601180548060010182816200031e919062000475565b9160005260206000209060040201600060a06040519081016040528087815260200188600187018151811015156200035257fe5b9060200190602002015160ff1681526020018660ff16815260200160008152602001600081525090919091506000820151816000015560208201518160010160006101000a81548160ff021916908360ff16021790555060408201518160010160016101000a81548160ff021916908360ff160217905550606082015181600201556080820151816003015550505060018101601260016101000a81548160ff021916908360ff16021790555060028101905062000285565b5050505050505050505050505050506200050c565b600080828402905060008414806200044357508284828115156200044057fe5b04145b15156200044c57fe5b8091505092915050565b60008082840190508381101515156200046b57fe5b8091505092915050565b815481835581811511620004a557600402816004028360005260206000209182019101620004a49190620004aa565b5b505050565b6200050991905b8082111562000505576000808201600090556001820160006101000a81549060ff02191690556001820160016101000a81549060ff02191690556002820160009055600382016000905550600401620004b1565b5090565b90565b6121f0806200051c6000396000f3006060604052600436106101a1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301491f091461094d578063027903ef1461097657806315a55347146109995780633f4ba83a146109c25780634042b66f146109d757806342e94c9014610a0057806353f4db0114610a4d5780635676d07514610a76578063585bc25b14610a9f5780635c975abb14610ad95780635cdc9eda14610b065780635d1ce03f14610b2f57806360d26f0114610b695780637c436a6d14610bab5780638456cb5914610bc0578063888b655714610bd55780638da5cb5b14610bfe57806391294ed114610c535780639427dfea14610c7c57806395364a8414610cb55780639d6fb02014610ce25780639fc880f414610d0f578063bd96344214610d38578063be9a655514610d71578063c314681414610d9a578063d18d944b14610dbd578063e5f6186d14610de0578063e8a7e25614610e09578063efbe1c1c14610e13578063f2fde38b14610e3c578063f7e28f8b14610e75578063fb86a40414610e9e578063fe52ee7014610ec7575b60008060008060008060008060149054906101000a900460ff161515156101c757600080fd5b600460019054906101000a900460ff161515156101e357600080fd5b60003373ffffffffffffffffffffffffffffffffffffffff161415151561020957600080fd5b600654341015151561021a57600080fd5b426002541115801561022e57504260035410155b151561023957600080fd5b600060075411610249573461029e565b61029d601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600754610eea90919063ffffffff16565b5b9650600060075411156102bb576000871115156102ba57600080fd5b5b6103af600d54600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561038657600080fd5b6102c65a03f1151561039757600080fd5b50505060405180519050610eea90919063ffffffff16565b95506000861115156103c057600080fd5b6000600f5414156103d35785600f819055505b349450868511156103e2578694505b6000600c541180156104095750600c5461040786600854610f0390919063ffffffff16565b115b1561042857610425600854600c54610eea90919063ffffffff16565b94505b610464600e546104566064610448600b548a610f2190919063ffffffff16565b610f2190919063ffffffff16565b610f5490919063ffffffff16565b935061046e610f6f565b935093505060008360ff1611156104bf576104bc8360ff166104ae60646104a0600b548a610f2190919063ffffffff16565b610f2190919063ffffffff16565b610f5490919063ffffffff16565b93505b8584111561055a5785935060008360ff16111561051a57610513600b5461050560646104f78760ff1689610f2190919063ffffffff16565b610f5490919063ffffffff16565b610f5490919063ffffffff16565b9450610559565b610556600b54610548606461053a600e5489610f2190919063ffffffff16565b610f5490919063ffffffff16565b610f5490919063ffffffff16565b94505b5b6105ac85601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0390919063ffffffff16565b601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f1b77563875a6d3878ab8f152faba2cae75bde735261cfdec26b8384cfdc5ea2f600460009054906101000a900460ff1685888860405180851515151581526020018460ff1660ff16815260200183815260200182815260200194505050505060405180910390a2600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33866000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561073b57600080fd5b6102c65a03f1151561074c57600080fd5b50505060405180519050151561076157600080fd5b61077685600854610f0390919063ffffffff16565b6008819055506000601260019054906101000a900460ff1660ff161180156107a1575060008260ff16115b80156107c25750601260019054906101000a900460ff1660ff168260ff1611155b1561088e576108008560116001850360ff168154811015156107e057fe5b906000526020600020906004020160020154610f0390919063ffffffff16565b60116001840360ff1681548110151561081557fe5b9060005260206000209060040201600201819055506108638460116001850360ff1681548110151561084357fe5b906000526020600020906004020160030154610f0390919063ffffffff16565b60116001840360ff1681548110151561087857fe5b9060005260206000209060040201600301819055505b6000601260019054906101000a900460ff1660ff161180156108c45750601260019054906101000a900460ff1660ff168260ff16115b156108e5576108de85600954610f0390919063ffffffff16565b6009819055505b6108f88534610eea90919063ffffffff16565b90506000811115610944573373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561094357600080fd5b5b50505050505050005b341561095857600080fd5b610960611221565b6040518082815260200191505060405180910390f35b341561098157600080fd5b6109976004808035906020019091905050611227565b005b34156109a457600080fd5b6109ac61128c565b6040518082815260200191505060405180910390f35b34156109cd57600080fd5b6109d5611292565b005b34156109e257600080fd5b6109ea611350565b6040518082815260200191505060405180910390f35b3415610a0b57600080fd5b610a37600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611356565b6040518082815260200191505060405180910390f35b3415610a5857600080fd5b610a6061136e565b6040518082815260200191505060405180910390f35b3415610a8157600080fd5b610a896113d3565b6040518082815260200191505060405180910390f35b3415610aaa57600080fd5b610ac3600480803560ff16906020019091905050611438565b6040518082815260200191505060405180910390f35b3415610ae457600080fd5b610aec6114f6565b604051808215151515815260200191505060405180910390f35b3415610b1157600080fd5b610b19611509565b6040518082815260200191505060405180910390f35b3415610b3a57600080fd5b610b53600480803560ff1690602001909190505061156e565b6040518082815260200191505060405180910390f35b3415610b7457600080fd5b610ba9600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061162c565b005b3415610bb657600080fd5b610bbe61179a565b005b3415610bcb57600080fd5b610bd361189f565b005b3415610be057600080fd5b610be861195f565b6040518082815260200191505060405180910390f35b3415610c0957600080fd5b610c11611965565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610c5e57600080fd5b610c6661198a565b6040518082815260200191505060405180910390f35b3415610c8757600080fd5b610cb3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611990565b005b3415610cc057600080fd5b610cc8611c70565b604051808215151515815260200191505060405180910390f35b3415610ced57600080fd5b610cf5611c83565b604051808215151515815260200191505060405180910390f35b3415610d1a57600080fd5b610d22611c96565b6040518082815260200191505060405180910390f35b3415610d4357600080fd5b610d6f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c9c565b005b3415610d7c57600080fd5b610d84611e88565b6040518082815260200191505060405180910390f35b3415610da557600080fd5b610dbb6004808035906020019091905050611e8e565b005b3415610dc857600080fd5b610dde6004808035906020019091905050611f2c565b005b3415610deb57600080fd5b610df3611f91565b6040518082815260200191505060405180910390f35b610e11611f97565b005b3415610e1e57600080fd5b610e26611f99565b6040518082815260200191505060405180910390f35b3415610e4757600080fd5b610e73600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611f9f565b005b3415610e8057600080fd5b610e886120f4565b6040518082815260200191505060405180910390f35b3415610ea957600080fd5b610eb1612159565b6040518082815260200191505060405180910390f35b3415610ed257600080fd5b610ee8600480803590602001909190505061215f565b005b6000828211151515610ef857fe5b818303905092915050565b6000808284019050838110151515610f1757fe5b8091505092915050565b60008082840290506000841480610f425750828482811515610f3f57fe5b04145b1515610f4a57fe5b8091505092915050565b6000808284811515610f6257fe5b0490508091505092915050565b600080600080600080600080600080601180549050601260009054906101000a900460ff1660ff16101515610fb7576000806000829250819150809050995099509950611215565b6011601260009054906101000a900460ff1660ff16815481101515610fd857fe5b906000526020600020906004020196504287600001541015611078575b6011805490506012600081819054906101000a900460ff1660010191906101000a81548160ff021916908360ff160217905560ff161015611077576011601260009054906101000a900460ff1660ff1681548110151561105157fe5b90600052602060002090600402019650428760000154111561107257611077565b610ff5565b5b60018760010160019054906101000a900460ff1660ff161180156110a0575060008760030154115b80156110c457506011805490508760010160019054906101000a900460ff1660ff16105b1561118d576001601180549050039550601160008154811015156110e457fe5b906000526020600020906004020160030154945061111f8661111187600f54610eea90919063ffffffff16565b610f5490919063ffffffff16565b9350838760030154111561118c576001601260009054906101000a900460ff1601601260006101000a81548160ff021916908360ff1602179055506011601260009054906101000a900460ff1660ff1681548110151561117b57fe5b906000526020600020906004020196505b5b600092506000915060009050601180549050601260009054906101000a900460ff1660ff1610156111ec57866000015492508660010160009054906101000a900460ff1691508660010160019054906101000a900460ff16905061120b565b6003549250600091506001601260019054906101000a900460ff160190505b8282829950995099505b50505050505050909192565b600e5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561128257600080fd5b80600d8190555050565b600d5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b600060149054906101000a900460ff16151561130857600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60085481565b60106020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113cb57600080fd5b600854905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600c54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561149557600080fd5b60008260ff161180156114bd5750601260019054906101000a900460ff1660ff168260ff1611155b15156114c857600080fd5b60116001830360ff168154811015156114dd57fe5b9060005260206000209060040201600201549050919050565b600060149054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561156657600080fd5b600b54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115cb57600080fd5b60008260ff161180156115f35750601260019054906101000a900460ff1660ff168260ff1611155b15156115fe57600080fd5b60116001830360ff1681548110151561161357fe5b9060005260206000209060040201600301549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561168957600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff16141515156116af57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561170c57600080fd5b60006005541480611721575060055460085410155b151561172c57600080fd5b60008211611751573073ffffffffffffffffffffffffffffffffffffffff1631611753565b815b90508273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050151561179557600080fd5b505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117f557600080fd5b600060149054906101000a900460ff1680611811575060035442115b151561181c57600080fd5b600460019054906101000a900460ff1615151561183857600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631600a819055506001600460016101000a81548160ff0219169083151502179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118fa57600080fd5b600060149054906101000a900460ff1615151561191657600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119ed57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515611a1357600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515611a7057600080fd5b600060149054906101000a900460ff1680611a8c575060035442115b1515611a9757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611b5c57600080fd5b6102c65a03f11515611b6d57600080fd5b5050506040518051905090506000811115611c6c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1515611c4f57600080fd5b6102c65a03f11515611c6057600080fd5b50505060405180519050505b5050565b600460009054906101000a900460ff1681565b600460019054906101000a900460ff1681565b60095481565b600080600460019054906101000a900460ff161515611cba57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d1657600080fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549150600082111515611d6757600080fd5b600a546008541115611db057611d9c600854611d8e84600a54610f2190919063ffffffff16565b610f5490919063ffffffff16565b90508181101515611dac57600080fd5b8091505b6000601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515611e3557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d0651836040518082815260200191505060405180910390a2505050565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ee957600080fd5b80600b819055507f1cab19c02f85faff1cfac53fbf0ebded93b506803c5dc8d9c288715dfab64468600b546040518082815260200191505060405180910390a150565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f8757600080fd5b80600c8190555050565b60075481565b565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ffa57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561203657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561215157600080fd5b600954905090565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121ba57600080fd5b80600f81905550505600a165627a7a72305820f03f4e4861aae2e1e9338fe6d7149adeb5eb417da6f11710aaae0f505b0b595100290000000000000000000000009c23d67aea7b95d80942e3836bcdf7e708a747c200000000000000000000000000000000000000000000000000000000000001cd0000000000000000000000000000000000000000000008375a2abcca244000000000000000000000000000000000000000000000000422ca8b0a00a42500000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000008375a2abcca24400000000000000000000000000000000000000000000000000000000000005a273300000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000fa000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000002100000000000000000000000000000000000000000000000000000000000000a8000000000000000000000000000000000000000000000000000000000000002c00000000000000000000000000000000000000000000000000000000000000a8000000000000000000000000000000000000000000000000000000000000003900000000000000000000000000000000000000000000000000000000000000d8000000000000000000000000000000000000000000000000000000000000004b

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

-----Encoded View---------------
21 Constructor Arguments found :
Arg [0] : 0000000000000000000000009c23d67aea7b95d80942e3836bcdf7e708a747c2
Arg [1] : 00000000000000000000000000000000000000000000000000000000000001cd
Arg [2] : 0000000000000000000000000000000000000000000008375a2abcca24400000
Arg [3] : 0000000000000000000000000000000000000000000422ca8b0a00a425000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000000000016345785d8a0000
Arg [7] : 0000000000000000000000000000000000000000000008375a2abcca24400000
Arg [8] : 000000000000000000000000000000000000000000000000000000005a273300
Arg [9] : 0000000000000000000000000000000000000000000000000000000000000258
Arg [10] : 00000000000000000000000000000000000000000000000000000000000000fa
Arg [11] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000030
Arg [14] : 0000000000000000000000000000000000000000000000000000000000000021
Arg [15] : 00000000000000000000000000000000000000000000000000000000000000a8
Arg [16] : 000000000000000000000000000000000000000000000000000000000000002c
Arg [17] : 00000000000000000000000000000000000000000000000000000000000000a8
Arg [18] : 0000000000000000000000000000000000000000000000000000000000000039
Arg [19] : 00000000000000000000000000000000000000000000000000000000000000d8
Arg [20] : 000000000000000000000000000000000000000000000000000000000000004b


   Swarm Source:
bzzr://f03f4e4861aae2e1e9338fe6d7149adeb5eb417da6f11710aaae0f505b0b5951

 

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.