Sponsored Link:   DocTailor - Legal Self Customisable Smart Contract Platform - Bridging the Gap Between Business & Cryptocurrency Holders - Join Now!
  Latest 25 txns from a total Of 326 transactions View All

TxHash Age From To Value [TxFee]
0x5c5fd99e214a78d2fc63137817314714cb6e1149ab8de9c6155e51571c58ecb019 mins ago0xd2ddf94fa9fb99c87ca3439d97171b39ed2c3978  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.12 Ether0.00367893
0xac39475218ed7731cc76e87b5045f2726324363edc0b2af06b35a4ac482e61862 hrs 57 mins ago0x124a98d072489994286f8687fc7ef51d501603b9  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.00145131
0x75ab0b562d33f5eed1b190f53cccfb028aceedeece63d69501837025f43abf3e4 hrs 51 mins ago0x488fabb4d2f2a8f2e14f494ef37133a114f4f76a  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.02 Ether0.002031834
0x7f1070a45afc96ba2425c96fd4ddae991f5e992e21f0f7ba683f740127ff5d025 hrs 7 mins ago0x0bb67cda9a48f001f3d9c84b8c63979b7df80cfe  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.00145131
0x53f3f28a80f74c321f7cb5879bedd19fb3ad2ccc770fb7993d5544f606032dfb6 hrs 17 mins ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001825279
0xb2dadddaac0cd6dfeee802f491935ff5e6116433634a601e385f8ddddb8ec7b26 hrs 21 mins ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.003013705
0x1d22d4eb5672d5e21744873a4e36eb3c914beeb81075b61dbc27a820400f65546 hrs 22 mins ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001825279
0xc1973f5be03f7b382d7484cd99685f49f0f7a24a6f6fab1f339e2b2e495c32b26 hrs 31 mins ago0x78bcb8db92462d3c2f6604d697c6edaae96015b1  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70 Ether0.001825279
0x1cdd79db927484decdb19b54a8342a3fe7a06a00b65f0e5d0e6b294813ad72dd1 day 18 hrs ago0x14fbb8eb60069005c0df9938ab55be694f910888  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.66 Ether0.00048377
0xacaa5589b18a39fdbc7875582279278795bd3fcbd19b9276b3148e18f32b638e1 day 22 hrs ago0xf1cbfaab29e7a105f690c9b51905fc838d35230b  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.337 Ether0.00163508
0x02bcd96793fa28e5309e0537b4666d3d6bfc195f9eb365c1cf03a8ba4c62f4d02 days 4 hrs ago0xf1cbfaab29e7a105f690c9b51905fc838d35230b  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.001308064
0xbadc72f604c75f768f07dbd87415479e06ec460720ed52dc0000bbede6ecb0132 days 18 hrs ago0x3db8625e31af95dfe21191e7ee9ef9401e64f42a  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca71.121 Ether0.001644818
0x65a4b117ea230d846d8bce5d8412356073246c3908483cbc9d6fca68db2581f53 days 1 hr ago0x8fafdcfd48b8f36a23530c244bf3f342c2aa0244  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.06 Ether0.001308064
0x3040b38e73fae8b6045a37d0135078e3c51fd0f5ad556cf140873e5d2b019ec23 days 5 hrs ago0x5c12d421aa0b0dae845914825b83eb0e80b2dfca  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.003966914
0x5db8a965769b23a61f8ad63a4a45ed8ce525ca7d5b56736d10d4ed8a6ac729d93 days 5 hrs ago0x06cb1297945849b7795e59f3352c499bebf41870  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca71.16 Ether0.000654032
0xd93fd2737df3f06cf1d41841f0066a4fcaf5370bcf19367e64bba80f7b6e912c3 days 8 hrs ago0x06cb1297945849b7795e59f3352c499bebf41870  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.001308064
0xda0f40e982928b6aa89d85933bf2c5b94e63cc0b35c557a2d0e4dd5d2736bac63 days 18 hrs ago0xf4e0408ae6d37ffc387da7d93b82de63028cb667  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca71.001 Ether0.001064294
0x5732416000b332bbfbf1193aa22b5b61d546a8db343f08cbc3012bca6feadbf53 days 21 hrs ago0xd9ed0bb67c699b85e0d8942283609d357423fe74  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca71 Ether0.00122631
0x05b338f215236eddcb307659ca84f82642a3ee5d709488a115305bb80b7e436c4 days 6 hrs ago0xf1cbfaab29e7a105f690c9b51905fc838d35230b  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.52 Ether0.00122631
0xa8c5002ffbdb2accb9e9f80bb830271ba1091fb9078ee6535030d7c39efb5c234 days 9 hrs ago0xbcc35393c3456e4000c0761fb0970548ceba4013  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.025 Ether0.002031834
0x939a33d5d66fa56cf5258921d9e6345ddc935e486c037159b7042ef0fa4b0d5b4 days 9 hrs ago0x1fadd030609c95862eb59a6591a55f760df8b9d0  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.0125 Ether0.002031834
0x12325b73764aad1140a1424d2d7f0fc3df6ef8469b0cee800909fdedfef09fdd4 days 18 hrs ago0x8fafdcfd48b8f36a23530c244bf3f342c2aa0244  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.73 Ether0.001548064
0xea0736e6f13ed9d7068fb43f124b4a0a32a4fc06bf55cdec4073e7362b234e9d4 days 22 hrs ago0x06cb1297945849b7795e59f3352c499bebf41870  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.00145131
0x9aba1d01fa75524660ea20be1ab1e911587685a0b69a4a51964c191000b604815 days 7 hrs ago0xa413a7cade5bdcfbaf32c60cbf8aabe8cb7a014f  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.535 Ether0.001548064
0x72b552a610c8a1855e683d7970a22ef798e15fb4a72906fea5f99773e8c8c6075 days 10 hrs ago0xf773f1053fc4acecbfe80f5afc49b3efcdadaccd  IN  0x1771e600e72cca46abeab857f301b6bf5a032ca70.5 Ether0.002031834
[ 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
0x5c5fd99e214a78d2fc63137817314714cb6e1149ab8de9c6155e51571c58ecb0549275819 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.12 Ether
0xac39475218ed7731cc76e87b5045f2726324363edc0b2af06b35a4ac482e618654921372 hrs 57 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x75ab0b562d33f5eed1b190f53cccfb028aceedeece63d69501837025f43abf3e54916834 hrs 51 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.02 Ether
0x7f1070a45afc96ba2425c96fd4ddae991f5e992e21f0f7ba683f740127ff5d0254916155 hrs 7 mins ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x1cdd79db927484decdb19b54a8342a3fe7a06a00b65f0e5d0e6b294813ad72dd54824991 day 18 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.66 Ether
0xacaa5589b18a39fdbc7875582279278795bd3fcbd19b9276b3148e18f32b638e54814731 day 22 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.337 Ether
0x02bcd96793fa28e5309e0537b4666d3d6bfc195f9eb365c1cf03a8ba4c62f4d054799132 days 4 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0xbadc72f604c75f768f07dbd87415479e06ec460720ed52dc0000bbede6ecb01354766492 days 18 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.121 Ether
0x65a4b117ea230d846d8bce5d8412356073246c3908483cbc9d6fca68db2581f554748613 days 1 hr ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.06 Ether
0x3040b38e73fae8b6045a37d0135078e3c51fd0f5ad556cf140873e5d2b019ec254739833 days 5 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x5db8a965769b23a61f8ad63a4a45ed8ce525ca7d5b56736d10d4ed8a6ac729d954739013 days 5 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.16 Ether
0xd93fd2737df3f06cf1d41841f0066a4fcaf5370bcf19367e64bba80f7b6e912c54732753 days 8 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0xda0f40e982928b6aa89d85933bf2c5b94e63cc0b35c557a2d0e4dd5d2736bac654708883 days 18 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571.001 Ether
0x5732416000b332bbfbf1193aa22b5b61d546a8db343f08cbc3012bca6feadbf554701223 days 21 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5571 Ether
0x05b338f215236eddcb307659ca84f82642a3ee5d709488a115305bb80b7e436c54680174 days 6 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.52 Ether
0xa8c5002ffbdb2accb9e9f80bb830271ba1091fb9078ee6535030d7c39efb5c2354672264 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.025 Ether
0x939a33d5d66fa56cf5258921d9e6345ddc935e486c037159b7042ef0fa4b0d5b54671664 days 9 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.0125 Ether
0x12325b73764aad1140a1424d2d7f0fc3df6ef8469b0cee800909fdedfef09fdd54649274 days 18 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.73 Ether
0xea0736e6f13ed9d7068fb43f124b4a0a32a4fc06bf55cdec4073e7362b234e9d54641214 days 22 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x9aba1d01fa75524660ea20be1ab1e911587685a0b69a4a51964c191000b6048154618915 days 7 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.535 Ether
0x72b552a610c8a1855e683d7970a22ef798e15fb4a72906fea5f99773e8c8c60754613155 days 10 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.5 Ether
0x9432eaec99b87d1a464b9bbb8802d62009e495c2448b84b177aaa3297015ccf854611305 days 10 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.01 Ether
0xad1fc97e69182e92d9fdcb6550f60e2a627910f53893841b1e33df8d95ec971054592655 days 18 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.7 Ether
0x2bb99ed9bbfcf2628da5a608fc282762b1cd0e1d203ee59bbaaaaa89b50392ff54569636 days 3 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.05 Ether
0x8002d4351c207e89954b644002f07b041e404adc7901aed2810a4834e68e352e54567026 days 4 hrs ago0x1771e600e72cca46abeab857f301b6bf5a032ca70xd5ac604022b9d9953e3ad68da24e87c7fb5ed5570.6 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact match)
Contract Name: Mainsale
Compiler Version: v0.4.18+commit.9cf6e910
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity 0.4.18;

// File: contracts/ownership/Ownable.sol

/**
 * @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() public {
    owner = msg.sender;
  }


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


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

}

// File: contracts/math/SafeMath.sol

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

  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

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

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

// File: contracts/token/ERC20Basic.sol

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

// File: contracts/token/BasicToken.sol

/**
 * @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));
    require(_value <= balances[msg.sender]);

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

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

}

// File: contracts/token/ERC20.sol

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

// File: contracts/token/StandardToken.sol

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


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

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

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

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

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

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

}

// File: contracts/MintableToken.sol

contract MintableToken is StandardToken, Ownable {

  event Mint(address indexed to, uint256 amount);

  event MintFinished();

  bool public mintingFinished = false;

  address public saleAgent;

  modifier notLocked() {
    require(msg.sender == owner || msg.sender == saleAgent || mintingFinished);
    _;
  }

  function setSaleAgent(address newSaleAgnet) public {
    require(msg.sender == saleAgent || msg.sender == owner);
    saleAgent = newSaleAgnet;
  }

  function mint(address _to, uint256 _amount) public returns (bool) {
    require(msg.sender == saleAgent && !mintingFinished);
    totalSupply = totalSupply.add(_amount);
    balances[_to] = balances[_to].add(_amount);
    Mint(_to, _amount);
    return true;
  }

  /**
   * @dev Function to stop minting new tokens.
   * @return True if the operation was successful.
   */
  function finishMinting() public returns (bool) {
    require((msg.sender == saleAgent || msg.sender == owner) && !mintingFinished);
    mintingFinished = true;
    MintFinished();
    return true;
  }

  function transfer(address _to, uint256 _value) public notLocked returns (bool) {
    return super.transfer(_to, _value);
  }

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

}

// File: contracts/AICToken.sol

contract AICToken is MintableToken {

  string public constant name = "AKAI";

  string public constant symbol = "AIC";

  uint32 public constant decimals = 18;

}

// File: contracts/PercentRateProvider.sol

contract PercentRateProvider is Ownable {

  uint public percentRate = 100;

  function setPercentRate(uint newPercentRate) public onlyOwner {
    percentRate = newPercentRate;
  }

}

// File: contracts/CommonSale.sol

contract CommonSale is PercentRateProvider {

  using SafeMath for uint;

  address public wallet;

  address public directMintAgent;

  uint public price;

  uint public start;

  uint public minInvestedLimit;

  AICToken public token;

  uint public hardcap;

  uint public invested;

  modifier isUnderHardcap() {
    require(invested < hardcap);
    _;
  }

  function setHardcap(uint newHardcap) public onlyOwner {
    hardcap = newHardcap;
  }

  modifier onlyDirectMintAgentOrOwner() {
    require(directMintAgent == msg.sender || owner == msg.sender);
    _;
  }

  modifier minInvestLimited(uint value) {
    require(value >= minInvestedLimit);
    _;
  }

  function setStart(uint newStart) public onlyOwner {
    start = newStart;
  }

  function setMinInvestedLimit(uint newMinInvestedLimit) public onlyOwner {
    minInvestedLimit = newMinInvestedLimit;
  }

  function setDirectMintAgent(address newDirectMintAgent) public onlyOwner {
    directMintAgent = newDirectMintAgent;
  }

  function setWallet(address newWallet) public onlyOwner {
    wallet = newWallet;
  }

  function setPrice(uint newPrice) public onlyOwner {
    price = newPrice;
  }

  function setToken(address newToken) public onlyOwner {
    token = AICToken(newToken);
  }

  function calculateTokens(uint _invested) internal returns(uint);

  function mintTokensExternal(address to, uint tokens) public onlyDirectMintAgentOrOwner {
    mintTokens(to, tokens);
  }

  function mintTokens(address to, uint tokens) internal {
    token.mint(this, tokens);
    token.transfer(to, tokens);
  }

  function endSaleDate() public view returns(uint);

  function mintTokensByETHExternal(address to, uint _invested) public onlyDirectMintAgentOrOwner returns(uint) {
    return mintTokensByETH(to, _invested);
  }

  function mintTokensByETH(address to, uint _invested) internal isUnderHardcap returns(uint) {
    invested = invested.add(_invested);
    uint tokens = calculateTokens(_invested);
    mintTokens(to, tokens);
    return tokens;
  }

  function fallback() internal minInvestLimited(msg.value) returns(uint) {
    require(now >= start && now < endSaleDate());
    wallet.transfer(msg.value);
    return mintTokensByETH(msg.sender, msg.value);
  }

  function () public payable {
    fallback();
  }

}

// File: contracts/InputAddressFeature.sol

contract InputAddressFeature {

  function bytesToAddress(bytes source) internal pure returns(address) {
    uint result;
    uint mul = 1;
    for(uint i = 20; i > 0; i--) {
      result += uint8(source[i-1])*mul;
      mul = mul*256;
    }
    return address(result);
  }

  function getInputAddress() internal pure returns(address) {
    if(msg.data.length == 20) {
      return bytesToAddress(bytes(msg.data));
    }
    return address(0);
  }

}

// File: contracts/ReferersRewardFeature.sol

contract ReferersRewardFeature is InputAddressFeature, CommonSale {

  uint public refererPercent;

  uint public referalsMinInvestLimit;

  function setReferalsMinInvestLimit(uint newRefereralsMinInvestLimit) public onlyOwner {
    referalsMinInvestLimit = newRefereralsMinInvestLimit;
  }

  function setRefererPercent(uint newRefererPercent) public onlyOwner {
    refererPercent = newRefererPercent;
  }

  function fallback() internal returns(uint) {
    uint tokens = super.fallback();
    if(msg.value >= referalsMinInvestLimit) {
      address referer = getInputAddress();
      if(referer != address(0)) {
        require(referer != address(token) && referer != msg.sender && referer != address(this));
        mintTokens(referer, tokens.mul(refererPercent).div(percentRate));
      }
    }
    return tokens;
  }

}

// File: contracts/RetrieveTokensFeature.sol

contract RetrieveTokensFeature is Ownable {

  function retrieveTokens(address to, address anotherToken) public onlyOwner {
    ERC20 alienToken = ERC20(anotherToken);
    alienToken.transfer(to, alienToken.balanceOf(this));
  }

}

// File: contracts/ValueBonusFeature.sol

contract ValueBonusFeature is PercentRateProvider {

  using SafeMath for uint;

  struct ValueBonus {
    uint from;
    uint bonus;
  }

  ValueBonus[] public valueBonuses;

  function addValueBonus(uint from, uint bonus) public onlyOwner {
    valueBonuses.push(ValueBonus(from, bonus));
  }

  function getValueBonusTokens(uint tokens, uint _invested) public view returns(uint) {
    uint valueBonus = getValueBonus(_invested);
    if(valueBonus == 0) {
      return 0;
    }
    return tokens.mul(valueBonus).div(percentRate);
  }

  function getValueBonus(uint value) public view returns(uint) {
    uint bonus = 0;
    for(uint i = 0; i < valueBonuses.length; i++) {
      if(value >= valueBonuses[i].from) {
        bonus = valueBonuses[i].bonus;
      } else {
        return bonus;
      }
    }
    return bonus;
  }

}

// File: contracts/AICCommonSale.sol

contract AICCommonSale is ValueBonusFeature, RetrieveTokensFeature, ReferersRewardFeature {


}

// File: contracts/StagedCrowdsale.sol

contract StagedCrowdsale is Ownable {

  using SafeMath for uint;

  struct Milestone {
    uint period;
    uint bonus;
  }

  uint public totalPeriod;

  Milestone[] public milestones;

  function milestonesCount() public view returns(uint) {
    return milestones.length;
  }

  function addMilestone(uint period, uint bonus) public onlyOwner {
    require(period > 0);
    milestones.push(Milestone(period, bonus));
    totalPeriod = totalPeriod.add(period);
  }

  function removeMilestone(uint8 number) public onlyOwner {
    require(number < milestones.length);
    Milestone storage milestone = milestones[number];
    totalPeriod = totalPeriod.sub(milestone.period);

    delete milestones[number];

    for (uint i = number; i < milestones.length - 1; i++) {
      milestones[i] = milestones[i+1];
    }

    milestones.length--;
  }

  function changeMilestone(uint8 number, uint period, uint bonus) public onlyOwner {
    require(number < milestones.length);
    Milestone storage milestone = milestones[number];

    totalPeriod = totalPeriod.sub(milestone.period);

    milestone.period = period;
    milestone.bonus = bonus;

    totalPeriod = totalPeriod.add(period);
  }

  function insertMilestone(uint8 numberAfter, uint period, uint bonus) public onlyOwner {
    require(numberAfter < milestones.length);

    totalPeriod = totalPeriod.add(period);

    milestones.length++;

    for (uint i = milestones.length - 2; i > numberAfter; i--) {
      milestones[i + 1] = milestones[i];
    }

    milestones[numberAfter + 1] = Milestone(period, bonus);
  }

  function clearMilestones() public onlyOwner {
    require(milestones.length > 0);
    for (uint i = 0; i < milestones.length; i++) {
      delete milestones[i];
    }
    milestones.length -= milestones.length;
    totalPeriod = 0;
  }

  function lastSaleDate(uint start) public view returns(uint) {
    return start + totalPeriod * 1 days;
  }

  function currentMilestone(uint start) public view returns(uint) {
    uint previousDate = start;
    for(uint i=0; i < milestones.length; i++) {
      if(now >= previousDate && now < previousDate + milestones[i].period * 1 days) {
        return i;
      }
      previousDate = previousDate.add(milestones[i].period * 1 days);
    }
    revert();
  }

}

// File: contracts/Mainsale.sol

contract Mainsale is StagedCrowdsale, AICCommonSale {

  address public foundersTokensWallet;

  address public marketingTokensWallet;

  address public bountyTokensWallet;

  uint public foundersTokensPercent;

  uint public marketingTokensPercent;

  uint public bountyTokensPercent;

  function setFoundersTokensPercent(uint newFoundersTokensPercent) public onlyOwner {
    foundersTokensPercent = newFoundersTokensPercent;
  }

  function setMarketingTokensPercent(uint newMarketingTokensPercent) public onlyOwner {
    marketingTokensPercent = newMarketingTokensPercent;
  }

  function setBountyTokensPercent(uint newBountyTokensPercent) public onlyOwner {
    bountyTokensPercent = newBountyTokensPercent;
  }

  function setFoundersTokensWallet(address newFoundersTokensWallet) public onlyOwner {
    foundersTokensWallet = newFoundersTokensWallet;
  }

  function setMarketingTokensWallet(address newMarketingTokensWallet) public onlyOwner {
    marketingTokensWallet = newMarketingTokensWallet;
  }

  function setBountyTokensWallet(address newBountyTokensWallet) public onlyOwner {
    bountyTokensWallet = newBountyTokensWallet;
  }

  function calculateTokens(uint _invested) internal returns(uint) {
    uint milestoneIndex = currentMilestone(start);
    Milestone storage milestone = milestones[milestoneIndex];
    uint tokens = _invested.mul(price).div(1 ether);
    uint valueBonusTokens = getValueBonusTokens(tokens, _invested);
    if(milestone.bonus > 0) {
      tokens = tokens.add(tokens.mul(milestone.bonus).div(percentRate));
    }
    return tokens.add(valueBonusTokens);
  }

  function finish() public onlyOwner {
    uint summaryTokensPercent = bountyTokensPercent.add(foundersTokensPercent).add(marketingTokensPercent);
    uint mintedTokens = token.totalSupply();
    uint allTokens = mintedTokens.mul(percentRate).div(percentRate.sub(summaryTokensPercent));
    uint foundersTokens = allTokens.mul(foundersTokensPercent).div(percentRate);
    uint marketingTokens = allTokens.mul(marketingTokensPercent).div(percentRate);
    uint bountyTokens = allTokens.mul(bountyTokensPercent).div(percentRate);
    mintTokens(foundersTokensWallet, foundersTokens);
    mintTokens(marketingTokensWallet, marketingTokens);
    mintTokens(bountyTokensWallet, bountyTokens);
    token.finishMinting();
  }

  function endSaleDate() public view returns(uint) {
    return lastSaleDate(start);
  }

}

// File: contracts/Presale.sol

contract Presale is AICCommonSale {

  Mainsale public mainsale;

  uint public period;

  function calculateTokens(uint _invested) internal returns(uint) {
    uint tokens = _invested.mul(price).div(1 ether);
    return tokens.add(getValueBonusTokens(tokens, _invested));
  }

  function setPeriod(uint newPeriod) public onlyOwner {
    period = newPeriod;
  }

  function setMainsale(address newMainsale) public onlyOwner {
    mainsale = Mainsale(newMainsale);
  }

  function finish() public onlyOwner {
    token.setSaleAgent(mainsale);
  }

  function endSaleDate() public view returns(uint) {
    return start.add(period * 1 days);
  }

}

// File: contracts/Configurator.sol

contract Configurator is Ownable {

  AICToken public token;

  Presale public presale;

  Mainsale public mainsale;

  function deploy() public onlyOwner {
    //owner = 0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1;

    token = new AICToken();

    presale = new Presale();

    presale.setWallet(0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1);
    presale.setStart(1518386400);
    presale.setPeriod(14);
    presale.setPrice(1600000000000000000000);
    presale.setHardcap(1000000000000000000000);
    token.setSaleAgent(presale);
    commonConfigure(presale, token);

    mainsale = new Mainsale();

    mainsale.addMilestone(2, 40);
    mainsale.addMilestone(7, 30);
    mainsale.addMilestone(7, 20);
    mainsale.addMilestone(7, 10);
    mainsale.addMilestone(7, 5);
    mainsale.addMilestone(7, 0);
    mainsale.setPrice(1000000000000000000000);
    mainsale.setWallet(0x78bcb8dB92462D3c2f6604d697C6edAAe96015b1);
    mainsale.setFoundersTokensWallet(0x8C15936004201bC6440a1F0BBD1eC92CA6C611de);
    mainsale.setMarketingTokensWallet(0x778375eB9fA010e95c40EA74ED7591356B4F4F4C);
    mainsale.setBountyTokensWallet(0xB5DDDBC8e53bA411451eE22FE4E1852e5a5d447f);
    mainsale.setStart(1520632800);
    mainsale.setHardcap(25000000000000000000000);
    mainsale.setFoundersTokensPercent(15);
    mainsale.setMarketingTokensPercent(7);
    mainsale.setBountyTokensPercent(3);
    commonConfigure(mainsale, token);

    presale.setMainsale(mainsale);

    token.transferOwnership(owner);
    presale.transferOwnership(owner);
    mainsale.transferOwnership(owner);
  }

  function commonConfigure(address saleAddress, address _token) internal {
     AICCommonSale sale = AICCommonSale(saleAddress);
     sale.addValueBonus(10000000000000000000, 1);
     sale.addValueBonus(51000000000000000000, 2);
     sale.addValueBonus(101000000000000000000, 3);
     sale.addValueBonus(151000000000000000000, 5);
     sale.addValueBonus(201000000000000000000, 8);
     sale.addValueBonus(301000000000000000000, 10);
     sale.addValueBonus(1001000000000000000000, 15);
     sale.addValueBonus(1501000000000000000000, 20);
     sale.setReferalsMinInvestLimit(5000000000000000000);
     sale.setRefererPercent(2);
     sale.setMinInvestedLimit(5000000000000000);
     sale.setToken(_token);
  }

}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"newRefererPercent","type":"uint256"}],"name":"setRefererPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newToken","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newRefereralsMinInvestLimit","type":"uint256"}],"name":"setReferalsMinInvestLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newFoundersTokensWallet","type":"address"}],"name":"setFoundersTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPercentRate","type":"uint256"}],"name":"setPercentRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"foundersTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"clearMilestones","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"_invested","type":"uint256"}],"name":"getValueBonusTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"addMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBountyTokensPercent","type":"uint256"}],"name":"setBountyTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"referalsMinInvestLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"anotherToken","type":"address"}],"name":"retrieveTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"}],"name":"currentMilestone","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"directMintAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refererPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newDirectMintAgent","type":"address"}],"name":"setDirectMintAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"percentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundersTokensPercent","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":false,"inputs":[{"name":"newMarketingTokensWallet","type":"address"}],"name":"setMarketingTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newPrice","type":"uint256"}],"name":"setPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newMarketingTokensPercent","type":"uint256"}],"name":"setMarketingTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyTokensPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"mintTokensExternal","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"numberAfter","type":"uint8"},{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"insertMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newMinInvestedLimit","type":"uint256"}],"name":"setMinInvestedLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint8"}],"name":"removeMilestone","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokensWallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"milestonesCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newFoundersTokensPercent","type":"uint256"}],"name":"setFoundersTokensPercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"valueBonuses","outputs":[{"name":"from","type":"uint256"},{"name":"bonus","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":"from","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"addValueBonus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"number","type":"uint8"},{"name":"period","type":"uint256"},{"name":"bonus","type":"uint256"}],"name":"changeMilestone","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":"to","type":"address"},{"name":"_invested","type":"uint256"}],"name":"mintTokensByETHExternal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"invested","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"value","type":"uint256"}],"name":"getValueBonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPeriod","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"marketingTokensPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvestedLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endSaleDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newWallet","type":"address"}],"name":"setWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newHardcap","type":"uint256"}],"name":"setHardcap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"milestones","outputs":[{"name":"period","type":"uint256"},{"name":"bonus","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":false,"inputs":[{"name":"newStart","type":"uint256"}],"name":"setStart","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBountyTokensWallet","type":"address"}],"name":"setBountyTokensWallet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"start","type":"uint256"}],"name":"lastSaleDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"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
6060604052606460035560008054600160a060020a033316600160a060020a03199091161790556119a5806100356000396000f30060606040526004361061026e5763ffffffff60e060020a60003504166302e2c3b78114610279578063144fa6d7146102915780631b4646bf146102b05780632f48c4aa146102c6578063480b890d146102e55780634a23418a146102fb5780634c94ac6a1461032a578063521eb2731461033d57806354717ea9146103505780635601477b1461037b57806359169d06146103945780635cddd93d146103aa5780636341ca0b146103bd5780636793c8e1146103e25780636abc3fe4146103f85780636ff1f2b81461040b578063769ffb7d1461041e5780638090114f1461043d57806386d0b46d146104505780638da5cb5b146104635780638e93c8831461047657806391b7f5ed14610495578063951ea5f1146104ab57806399cd211d146104c15780639a3fdfd0146104d45780639bf6eb60146104e75780639dc905bb14610509578063a035b1fe14610528578063a34d92701461053b578063aa525c5514610551578063aa5b7df81461056a578063ab36e4a61461057d578063ada199dd14610590578063af78facf146105a6578063b071cbe6146105d4578063b8a4db81146105e7578063bd17647f14610600578063be9a65551461061f578063ca1e5bb714610632578063cafb220214610654578063cd7e318414610667578063ce14a46e1461067d578063d15e101414610690578063d56b2889146106a3578063d64196f8146106b6578063d7d88043146106c9578063deaa59df146106dc578063e28fa27d146106fb578063e89e4ed614610711578063f2fde38b14610727578063f6a03ebf14610746578063fa8b72ff1461075c578063fc0c546a1461077b578063fd83da091461078e575b6102766107a4565b50005b341561028457600080fd5b61028f600435610865565b005b341561029c57600080fd5b61028f600160a060020a0360043516610885565b34156102bb57600080fd5b61028f6004356108c2565b34156102d157600080fd5b61028f600160a060020a03600435166108e2565b34156102f057600080fd5b61028f60043561091f565b341561030657600080fd5b61030e61093f565b604051600160a060020a03909116815260200160405180910390f35b341561033557600080fd5b61028f61094e565b341561034857600080fd5b61030e6109cd565b341561035b57600080fd5b6103696004356024356109dc565b60405190815260200160405180910390f35b341561038657600080fd5b61028f600435602435610a1b565b341561039f57600080fd5b61028f600435610aa6565b34156103b557600080fd5b610369610ac6565b34156103c857600080fd5b61028f600160a060020a0360043581169060243516610acc565b34156103ed57600080fd5b610369600435610bcf565b341561040357600080fd5b61030e610c6b565b341561041657600080fd5b610369610c7a565b341561042957600080fd5b61028f600160a060020a0360043516610c80565b341561044857600080fd5b610369610cbd565b341561045b57600080fd5b610369610cc3565b341561046e57600080fd5b61030e610cc9565b341561048157600080fd5b61028f600160a060020a0360043516610cd8565b34156104a057600080fd5b61028f600435610d15565b34156104b657600080fd5b61028f600435610d35565b34156104cc57600080fd5b61030e610d55565b34156104df57600080fd5b610369610d64565b34156104f257600080fd5b61028f600160a060020a0360043516602435610d6a565b341561051457600080fd5b61028f60ff60043516602435604435610dae565b341561053357600080fd5b610369610ebd565b341561054657600080fd5b61028f600435610ec3565b341561055c57600080fd5b61028f60ff60043516610ee3565b341561057557600080fd5b61030e610ff6565b341561058857600080fd5b610369611005565b341561059b57600080fd5b61028f60043561100c565b34156105b157600080fd5b6105bc60043561102c565b60405191825260208201526040908101905180910390f35b34156105df57600080fd5b610369611058565b34156105f257600080fd5b61028f60043560243561105e565b341561060b57600080fd5b61028f60ff600435166024356044356110c7565b341561062a57600080fd5b610369611156565b341561063d57600080fd5b610369600160a060020a036004351660243561115c565b341561065f57600080fd5b6103696111a6565b341561067257600080fd5b6103696004356111ac565b341561068857600080fd5b610369611217565b341561069b57600080fd5b61036961121d565b34156106ae57600080fd5b61028f611223565b34156106c157600080fd5b61036961140c565b34156106d457600080fd5b610369611412565b34156106e757600080fd5b61028f600160a060020a0360043516611424565b341561070657600080fd5b61028f600435611461565b341561071c57600080fd5b6105bc600435611481565b341561073257600080fd5b61028f600160a060020a036004351661148f565b341561075157600080fd5b61028f60043561151d565b341561076757600080fd5b61028f600160a060020a036004351661153d565b341561078657600080fd5b61030e61157a565b341561079957600080fd5b610369600435611589565b60008060006107b1611595565b600e54909250341061085f576107c5611611565b9050600160a060020a0381161561085f57600a54600160a060020a03828116911614801590610806575033600160a060020a031681600160a060020a031614155b8015610824575030600160a060020a031681600160a060020a031614155b151561082f57600080fd5b61085f8161085a60035461084e600d548761166290919063ffffffff16565b9063ffffffff61168d16565b6116a4565b50919050565b60005433600160a060020a0390811691161461088057600080fd5b600d55565b60005433600160a060020a039081169116146108a057600080fd5b600a8054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a039081169116146108dd57600080fd5b600e55565b60005433600160a060020a039081169116146108fd57600080fd5b600f8054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461093a57600080fd5b600355565b600f54600160a060020a031681565b6000805433600160a060020a0390811691161461096a57600080fd5b6002546000901161097a57600080fd5b5060005b6002548110156109b757600280548290811061099657fe5b6000918252602082206002909102018181556001908101919091550161097e565b60006109c4600282611928565b50506000600155565b600554600160a060020a031681565b6000806109e8836111ac565b90508015156109fa5760009150610a14565b600354610a119061084e868463ffffffff61166216565b91505b5092915050565b60005433600160a060020a03908116911614610a3657600080fd5b60008211610a4357600080fd5b6002805460018101610a558382611928565b91600052602060002090600202016000604080519081016040528581526020810185905291905081518155602082015160019182015554610a9f925090508363ffffffff61179c16565b6001555050565b60005433600160a060020a03908116911614610ac157600080fd5b601455565b600e5481565b6000805433600160a060020a03908116911614610ae857600080fd5b5080600160a060020a03811663a9059cbb84826370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610b4857600080fd5b6102c65a03f11515610b5957600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610baf57600080fd5b6102c65a03f11515610bc057600080fd5b50505060405180515050505050565b600081815b600254811015610c5f57814210158015610c1357506002805482908110610bf757fe5b9060005260206000209060020201600001546201518002820142105b15610c2057809250610c64565b610c55600282815481101515610c3257fe5b60009182526020909120600290910201548390620151800263ffffffff61179c16565b9150600101610bd4565b600080fd5b5050919050565b600654600160a060020a031681565b600d5481565b60005433600160a060020a03908116911614610c9b57600080fd5b60068054600160a060020a031916600160a060020a0392909216919091179055565b60035481565b60125481565b600054600160a060020a031681565b60005433600160a060020a03908116911614610cf357600080fd5b60108054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a03908116911614610d3057600080fd5b600755565b60005433600160a060020a03908116911614610d5057600080fd5b601355565b601154600160a060020a031681565b60145481565b60065433600160a060020a0390811691161480610d95575060005433600160a060020a039081169116145b1515610da057600080fd5b610daa82826116a4565b5050565b6000805433600160a060020a03908116911614610dca57600080fd5b60025460ff851610610ddb57600080fd5b600154610dee908463ffffffff61179c16565b60019081556002805491610e0491908301611928565b5050600254600119015b8360ff16811115610e6e576002805482908110610e2757fe5b9060005260206000209060020201600282600101815481101515610e4757fe5b60009182526020909120825460029092020190815560019182015491015560001901610e0e565b60408051908101604052838152602081018390526002805460ff6001880116908110610e9657fe5b90600052602060002090600202016000820151815560208201516001909101555050505050565b60075481565b60005433600160a060020a03908116911614610ede57600080fd5b600955565b60008054819033600160a060020a03908116911614610f0157600080fd5b60025460ff841610610f1257600080fd5b6002805460ff8516908110610f2357fe5b90600052602060002090600202019150610f4c82600001546001546117ab90919063ffffffff16565b6001556002805460ff8516908110610f6057fe5b600091825260208220600290910201818155600101555060ff82165b60025460001901811015610fdd576002805460018301908110610f9b57fe5b9060005260206000209060020201600282815481101515610fb857fe5b6000918252602090912082546002909202019081556001918201549082015501610f7c565b6002805490610ff0906000198301611928565b50505050565b601054600160a060020a031681565b6002545b90565b60005433600160a060020a0390811691161461102757600080fd5b601255565b600480548290811061103a57fe5b60009182526020909120600290910201805460019091015490915082565b600b5481565b60005433600160a060020a0390811691161461107957600080fd5b600480546001810161108b8382611928565b91600052602060002090600202016000604080519081016040528581526020810185905291905081518155602082015181600101555050505050565b6000805433600160a060020a039081169116146110e357600080fd5b60025460ff8516106110f457600080fd5b6002805460ff861690811061110557fe5b9060005260206000209060020201905061112e81600001546001546117ab90919063ffffffff16565b60019081558382558181018390555461114d908463ffffffff61179c16565b60015550505050565b60085481565b60065460009033600160a060020a039081169116148061118a575060005433600160a060020a039081169116145b151561119557600080fd5b61119f83836117bd565b9392505050565b600c5481565b600080805b600454811015610a145760048054829081106111c957fe5b600091825260209091206002909102015484106112075760048054829081106111ee57fe5b906000526020600020906002020160010154915061120f565b819250610c64565b6001016111b1565b60015481565b60135481565b600080548190819081908190819033600160a060020a0390811691161461124957600080fd5b61127260135461126660125460145461179c90919063ffffffff16565b9063ffffffff61179c16565b600a54909650600160a060020a03166318160ddd6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156112bd57600080fd5b6102c65a03f115156112ce57600080fd5b505050604051805160035490965061130591506112f1908863ffffffff6117ab16565b60035461084e90889063ffffffff61166216565b935061132260035461084e6012548761166290919063ffffffff16565b925061133f60035461084e6013548761166290919063ffffffff16565b915061135c60035461084e6014548761166290919063ffffffff16565b600f5490915061137590600160a060020a0316846116a4565b60105461138b90600160a060020a0316836116a4565b6011546113a190600160a060020a0316826116a4565b600a54600160a060020a0316637d64bcb46000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113e957600080fd5b6102c65a03f115156113fa57600080fd5b50505060405180515050505050505050565b60095481565b600061141f600854611589565b905090565b60005433600160a060020a0390811691161461143f57600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461147c57600080fd5b600b55565b600280548290811061103a57fe5b60005433600160a060020a039081169116146114aa57600080fd5b600160a060020a03811615156114bf57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008054600160a060020a031916600160a060020a0392909216919091179055565b60005433600160a060020a0390811691161461153857600080fd5b600855565b60005433600160a060020a0390811691161461155857600080fd5b60118054600160a060020a031916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015462015180020190565b60003460095481101515156115a957600080fd5b60085442101580156115c157506115be611412565b42105b15156115cc57600080fd5b600554600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561160057600080fd5b61160a33346117bd565b91505b5090565b6000601436141561165c576116556000368080601f0160208091040260200160405190810160405281815292919060208401838380828437506117fd945050505050565b9050611009565b50600090565b6000808315156116755760009150610a14565b5082820282848281151561168557fe5b041461119f57fe5b600080828481151561169b57fe5b04949350505050565b600a54600160a060020a03166340c10f19308360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561170357600080fd5b6102c65a03f1151561171457600080fd5b50505060405180515050600a54600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561177d57600080fd5b6102c65a03f1151561178e57600080fd5b505050604051805150505050565b60008282018381101561119f57fe5b6000828211156117b757fe5b50900390565b600080600b54600c541015156117d257600080fd5b600c546117e5908463ffffffff61179c16565b600c556117f18361186e565b905061119f84826116a4565b600080600160145b6000811115611865578185600183038151811061181e57fe5b01602001517f01000000000000000000000000000000000000000000000000000000000000009081900481020460ff16029290920191610100919091029060001901611805565b50909392505050565b6000806000806000611881600854610bcf565b935060028481548110151561189257fe5b906000526020600020906002020192506118c3670de0b6b3a764000061084e6007548961166290919063ffffffff16565b91506118cf82876109dc565b905060008360010154111561190e5761190b6118fe60035461084e86600101548661166290919063ffffffff16565b839063ffffffff61179c16565b91505b61191e828263ffffffff61179c16565b9695505050505050565b815481835581811511611954576002028160020283600052602060002091820191016119549190611959565b505050565b61100991905b8082111561160d576000808255600182015560020161195f5600a165627a7a723058208b0c86125ea897ca23e5366c10bb9986f7a193450fa18c1f1eb2f5dd086160500029

   Swarm Source:
bzzr://8b0c86125ea897ca23e5366c10bb9986f7a193450fa18c1f1eb2f5dd08616050

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.