Contract Overview |  333ETH_2
Balance: 3,045.008929483179890795 Ether
Ether Value: $471,763.23 (@ $154.93/ETH)
Transactions: 26609 txns
Token Tracker: �y� cannot to pay zero dividends (�y� canno...)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x2a39ff69a6ace3a189463a912c2e8e25236decd1at txn 0xa57a90c7a0d347855bb762f3186927970c74e17b4616c1f0a7f4a820bca94725
Token Balance:
 Latest 25 transactions from a total of 26609 transactions
(+6 PendingTxns)

TxHash Age From To Value [TxFee]
0x6df3b865d916161778e92aeb3772bada5d6fa536691bc1dd42e313504858748f(pending)0x0a78b1511ffab1bab9c8ffe4f2699a96b4db656c  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250 Ether(Pending)
0xf6ee07d0971eeed9c4e1eafbf14fd0bf0004753b99a31f99b8e80831445afb54(pending)0x32e26036dfac4c95feff9df273c39dcf3b35db93  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250 Ether(Pending)
0xeae09a7423223ba4408fd246e9b93fba794be9d683fcf980fe4acf3782309ab4(pending)0xa9aeec1016302297db92a642043bf264f8132281  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250 Ether(Pending)
0x8151382b46f2cd4e696533027954beddc517574f42d2bc0278a36894d45cb00d(pending)0xaae291def326cae5737c33183f274a81191185b5  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250.01 Ether(Pending)
0x36ca8432af3085fb1a3e0321a6e555ad0cc7ab919e07c3653aff26eba34ec342(pending)0x6651eaa66fff8dfe184a9cef124db7cda9d5c0f7  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250 Ether(Pending)
0xa1763908dace13a924ca35c3bb2e335a0895dae9c5c2cdd5b7a18b8e6bdecee1(pending)0x2fa4f0913f2c98953a877f5ab1264238e2261afe  IN  0x215ce36e90b1b64e6fa2e358305177f8fe5daf250 Ether(Pending)
0x7e0743b31601d80fc8d3721272e9c43d7b277f6c10b92a3e8fbba8f508af8f7a 19 secs ago0x8ef369950e90bae83aecd29439cc2c17f0455a1f  IN  333ETH_20 Ether0.000278238
0x59be0dd5ef5112b710bf6948ebe3be0da2f817407d78257c65439992e711bcf15 mins ago0xda4f6eb40fca6d152778ae1a3fccee99a6849fe8  IN  333ETH_20 Ether0.000139119
0x04d2642e3b45cda0a57845e18fe6d35b77a2f147953aec009848f187b945ebd47 mins ago0xb7bdd4b0e06d4c93ea7509bf4c306568aa486a2a  IN  333ETH_20.018849840255591 Ether0.000359915
0x5a0cf0e3d3b2255a750e0cb0545b0e80382dd4d0ae32fbb306138c1cf9f883958 mins ago0x2a5cc18412ab4422cf9251f2dde29d2c7f219338  IN  333ETH_20 Ether0.0005842998
0x07d7858059f3b166dc34603f17361292d7af1fcd7fdbebf7cd77ccf3e53a51c09 mins ago0x980aa9f0faf7d525cf5460aa1e941ad79b0d78b0  IN  333ETH_20 Ether0.000231865
0x139a9372f37294712ae2bb89e41686aaab02df04f7e65f6b6f1348def0e306a211 mins ago0xb7bdd4b0e06d4c93ea7509bf4c306568aa486a2a  IN  333ETH_20 Ether0.000231865
0x10bbc6d9915aa9f70ab09b18e6001b51288abf8ddca6749fe1ecb5030042596216 mins ago0xd5556f5e7e9f597267b937c027b80e115445cfc0  IN  333ETH_20 Ether0.000185492
0xcb8546d6da5ebfa9e0a79c101ee370f66085524fd2fe271881e621a5fffe754c18 mins ago0x1f467b12e75391ffb6cdaa45516647dfccba504f  IN  333ETH_20 Ether0.001901293
0x7bb3110cd2c8d69480e31db463fcc7cd1e5becbdb5acad608bb867401fbbec7020 mins ago0x4de473bcb9ac9d6d82adbf8ebd4d92df868e8990  IN  333ETH_20 Ether0.000417357
0xba0345a700aa18ddcf1ae084f1525aa19851fb28899408b1bfc46a9d2a3d0c1e20 mins ago0xd965309e477904e441adfe32fea80963b0e7c98c  IN  333ETH_20 Ether0.001252071
0xa060ed64f5d30967618583e81a008f2228de810c957c07f6762de2ddfd66ee4b20 mins ago0x35960c337e5b7f4e0d2fd47c23319b584ee02394  IN  333ETH_20 Ether0.000231865
0xeffb8c83182a117ea3474cd6389beadee4b29d0300d78be297ea4aca220d825620 mins ago0x5eed112f330b9f65294ffb2628ebd73e1aa75cbd  IN  333ETH_20 Ether0.00046373
0xc96a4331aa48114d92f2e0fcd419717d89d8d3310ef7386f9c72a8709228d1c422 mins ago0x77dfad293ef2dbd6bddd6e97dacf5ba037c4db1d  IN  333ETH_20 Ether0.00046373
0xa59be015b6b4dd53cc7bcf59e20161aae276201a895b487495fd9ec24e7bc69523 mins ago0xe28b58d470c0d025a61fa41105ddf06974c719c1  IN  333ETH_20 Ether0.000602849
0x90907d6c6b0ddc1cc75ddbf11788dc9a85aa022c8d3ad897d584983f60806c1f23 mins ago0x721cc46cbe56d846381bdc3eed76369b4c82739d  IN  333ETH_20 Ether0.001901293
0x1b2112402b7124af82d1ffd8b43712b5eea84fe51279cb15a3507e586dc2b0f125 mins ago0xc1383b941348513c1c054e3bcf51e5fb46237b91  IN  333ETH_20 Ether0.00046373
0x683828f5c46094bc0b4c4be68ae64106068863c0b03bd114f27ae54c1762e1da25 mins ago0xf94accc3574f7dd03966f0432dd5a9d6d78fd747  IN  333ETH_20 Ether0.000510103
0x1209c4f5595230115164f5fd4b5996f19fee3c728f80a3f7dd44e903d5ae237426 mins ago0x057492bec6fa40bf1dfcb4254c69ada379017198  IN  333ETH_20 Ether0.00046373
0x1fb5362c61ea4923cf547e42ec20b30ffd73673d05bf56e1cc2ad5fb351d049728 mins ago0x1dfd8acc9816be1486365a859475be15156a017d  IN  333ETH_20 Ether0.00046373
[ 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
0x7e0743b31601d80fc8d3721272e9c43d7b277f6c10b92a3e8fbba8f508af8f7a6734037 19 secs ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x8ef369950e90bae83aecd29439cc2c17f0455a1f0.002070814522222222 Ether
0x59be0dd5ef5112b710bf6948ebe3be0da2f817407d78257c65439992e711bcf167340095 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xda4f6eb40fca6d152778ae1a3fccee99a6849fe80.035704666666666666 Ether
0x04d2642e3b45cda0a57845e18fe6d35b77a2f147953aec009848f187b945ebd467339997 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xd3b9ca15996766d9856f3895cd67d186187113dd0.000942492012779552 Ether
0x04d2642e3b45cda0a57845e18fe6d35b77a2f147953aec009848f187b945ebd467339997 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xf4d27660abb9d9f3bbc0388cb721d4712e53999d0.001413738019169329 Ether
0x5a0cf0e3d3b2255a750e0cb0545b0e80382dd4d0ae32fbb306138c1cf9f8839567339948 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x2a5cc18412ab4422cf9251f2dde29d2c7f2193380.000805555555555555 Ether
0x07d7858059f3b166dc34603f17361292d7af1fcd7fdbebf7cd77ccf3e53a51c067339929 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x980aa9f0faf7d525cf5460aa1e941ad79b0d78b00.004451800833333333 Ether
0x139a9372f37294712ae2bb89e41686aaab02df04f7e65f6b6f1348def0e306a2673397911 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xb7bdd4b0e06d4c93ea7509bf4c306568aa486a2a0.009106438271604934 Ether
0x10bbc6d9915aa9f70ab09b18e6001b51288abf8ddca6749fe1ecb50300425962673395916 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xd5556f5e7e9f597267b937c027b80e115445cfc00.003872190405284138 Ether
0xcb8546d6da5ebfa9e0a79c101ee370f66085524fd2fe271881e621a5fffe754c673394718 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x1f467b12e75391ffb6cdaa45516647dfccba504f0.012425722222222222 Ether
0x7bb3110cd2c8d69480e31db463fcc7cd1e5becbdb5acad608bb867401fbbec70673394020 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x4de473bcb9ac9d6d82adbf8ebd4d92df868e89900.275754474447955388 Ether
0xba0345a700aa18ddcf1ae084f1525aa19851fb28899408b1bfc46a9d2a3d0c1e673394020 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xd965309e477904e441adfe32fea80963b0e7c98c0.068708333333333333 Ether
0xa060ed64f5d30967618583e81a008f2228de810c957c07f6762de2ddfd66ee4b673393920 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x35960c337e5b7f4e0d2fd47c23319b584ee023940.01815 Ether
0xeffb8c83182a117ea3474cd6389beadee4b29d0300d78be297ea4aca220d8256673393920 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x5eed112f330b9f65294ffb2628ebd73e1aa75cbd0.076736115791950335 Ether
0xc96a4331aa48114d92f2e0fcd419717d89d8d3310ef7386f9c72a8709228d1c4673392822 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x77dfad293ef2dbd6bddd6e97dacf5ba037c4db1d0.399999993476468356 Ether
0xa59be015b6b4dd53cc7bcf59e20161aae276201a895b487495fd9ec24e7bc695673391923 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xe28b58d470c0d025a61fa41105ddf06974c719c10.035615471161265431 Ether
0x90907d6c6b0ddc1cc75ddbf11788dc9a85aa022c8d3ad897d584983f60806c1f673391823 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x721cc46cbe56d846381bdc3eed76369b4c82739d0.017777777777777777 Ether
0x1b2112402b7124af82d1ffd8b43712b5eea84fe51279cb15a3507e586dc2b0f1673391325 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xc1383b941348513c1c054e3bcf51e5fb46237b911.024999998400971138 Ether
0x683828f5c46094bc0b4c4be68ae64106068863c0b03bd114f27ae54c1762e1da673391325 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xf94accc3574f7dd03966f0432dd5a9d6d78fd7470.010568942901234566 Ether
0x1209c4f5595230115164f5fd4b5996f19fee3c728f80a3f7dd44e903d5ae2374673391026 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x057492bec6fa40bf1dfcb4254c69ada3790171980.496954173628146546 Ether
0x1fb5362c61ea4923cf547e42ec20b30ffd73673d05bf56e1cc2ad5fb351d0497673390128 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x1dfd8acc9816be1486365a859475be15156a017d0.125301268931916575 Ether
0x16e74ad4213c9a9a7530c64b8dc1d0331433d68bf6fc06e4ed15cff92b864928673389829 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x620b802389a000d63a7d3f23a0b09a6e01370f450.125138888888888888 Ether
0xc90e40df78efc79357e79d446dc78ef37e513bbf4c10f883d460278e24ee1a7f673389231 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x88458123b58d329f8970dc41b0397e25bd16c6d30.034375 Ether
0x8aeb1e63a6326db93ad9fabfdfbcb54f3507a84da8bcd2b14b6d01f52aca78ea673386040 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250xd7a5ca4b439d77a5760fdfeba49a8b6592f5a3370.012 Ether
0xced87a0d42582dcd4a4c8832d41ad48cc22211c8561b39bd0ef2142ad2d1880f673381752 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x3d15a4acd68729f5ece411bc0d9a225cb943fb6f0.000431944444444444 Ether
0x7596507faca3737cfa04d0e176ad8172426e14bdce7c37797dd9b1715c290c2f673381153 mins ago0x215ce36e90b1b64e6fa2e358305177f8fe5daf250x07583747c5f15c3504aae8f3f5342d06094ba0bf0.152472738617554491 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact Match)
Contract Name: Revolution2
Compiler Text: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity 0.4.25;


/**
*
* ETH CRYPTOCURRENCY DISTRIBUTION PROJECT v 2.0
* Web              - https://333eth.io
* GitHub           - https://github.com/Revolution333/
* Twitter          - https://twitter.com/333eth_io
* Youtube          - https://www.youtube.com/c/333eth
* Discord          - https://discord.gg/P87buwT
* Telegram_channel - https://t.me/Ethereum333
* EN  Telegram_chat: https://t.me/Ethereum333_chat_en
* RU  Telegram_chat: https://t.me/Ethereum333_chat_ru
* KOR Telegram_chat: https://t.me/Ethereum333_chat_kor
* CN  Telegram_chat: https://t.me/Ethereum333_chat_cn
* Email:             mailto:support(at sign)333eth.io
* 
* 
*  - GAIN 3,33% - 1% PER 24 HOURS (interest is charges in equal parts every 10 min)
*  - Life-long payments
*  - The revolutionary reliability
*  - Minimal contribution 0.01 eth
*  - Currency and payment - ETH
*  - Contribution allocation schemes:
*    -- 87,5% payments
*    --  7,5% marketing
*    --  5,0% technical support
*
*   ---About the Project
*  Blockchain-enabled smart contracts have opened a new era of trustless relationships without 
*  intermediaries. This technology opens incredible financial possibilities. Our automated investment 
*  distribution model is written into a smart contract, uploaded to the Ethereum blockchain and can be 
*  freely accessed online. In order to insure our investors' complete security, full control over the 
*  project has been transferred from the organizers to the smart contract: nobody can influence the 
*  system's permanent autonomous functioning.
* 
* ---How to use:
*  1. Send from ETH wallet to the smart contract address 0x311f71389e3DE68f7B2097Ad02c6aD7B2dDE4C71
*     any amount from 0.01 ETH.
*  2. Verify your transaction in the history of your application or etherscan.io, specifying the address 
*     of your wallet.
*  3a. Claim your profit by sending 0 ether transaction (every 10 min, every day, every week, i don't care unless you're 
*      spending too much on GAS)
*  OR
*  3b. For reinvest, you need to deposit the amount that you want to reinvest and the 
*      accrued interest automatically summed to your new contribution.
*  
* RECOMMENDED GAS LIMIT: 200000
* RECOMMENDED GAS PRICE: https://ethgasstation.info/
* You can check the payments on the etherscan.io site, in the "Internal Txns" tab of your wallet.
*
* ---Refferral system:
*     from 0 to 10.000 ethers in the fund - remuneration to each contributor is 3.33%, 
*     from 10.000 to 100.000 ethers in the fund - remuneration will be 2%, 
*     from 100.000 ethers in the fund - each contributor will get 1%.
*
* ---It is not allowed to transfer from exchanges, only from your personal ETH wallet, for which you 
* have private keys.
* 
* Contracts reviewed and approved by pros!
* 
* Main contract - Revolution2. Scroll down to find it.
*/ 


library Math {
  function min(uint a, uint b) internal pure returns(uint) {
    if (a > b) {
      return b;
    }
    return a;
  }
}


library Zero {
  function requireNotZero(address addr) internal pure {
    require(addr != address(0), "require not zero address");
  }

  function requireNotZero(uint val) internal pure {
    require(val != 0, "require not zero value");
  }

  function notZero(address addr) internal pure returns(bool) {
    return !(addr == address(0));
  }

  function isZero(address addr) internal pure returns(bool) {
    return addr == address(0);
  }

  function isZero(uint a) internal pure returns(bool) {
    return a == 0;
  }

  function notZero(uint a) internal pure returns(bool) {
    return a != 0;
  }
}


library Percent {
  // Solidity automatically throws when dividing by 0
  struct percent {
    uint num;
    uint den;
  }
  
  // storage
  function mul(percent storage p, uint a) internal view returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function div(percent storage p, uint a) internal view returns (uint) {
    return a/p.num*p.den;
  }

  function sub(percent storage p, uint a) internal view returns (uint) {
    uint b = mul(p, a);
    if (b >= a) {
      return 0;
    }
    return a - b;
  }

  function add(percent storage p, uint a) internal view returns (uint) {
    return a + mul(p, a);
  }

  function toMemory(percent storage p) internal view returns (Percent.percent memory) {
    return Percent.percent(p.num, p.den);
  }

  // memory 
  function mmul(percent memory p, uint a) internal pure returns (uint) {
    if (a == 0) {
      return 0;
    }
    return a*p.num/p.den;
  }

  function mdiv(percent memory p, uint a) internal pure returns (uint) {
    return a/p.num*p.den;
  }

  function msub(percent memory p, uint a) internal pure returns (uint) {
    uint b = mmul(p, a);
    if (b >= a) {
      return 0;
    }
    return a - b;
  }

  function madd(percent memory p, uint a) internal pure returns (uint) {
    return a + mmul(p, a);
  }
}


library Address {
  function toAddress(bytes source) internal pure returns(address addr) {
    assembly { addr := mload(add(source,0x14)) }
    return addr;
  }

  function isNotContract(address addr) internal view returns(bool) {
    uint length;
    assembly { length := extcodesize(addr) }
    return length == 0;
  }
}


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

  /**
  * @dev Multiplies two numbers, reverts on overflow.
  */
  function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
    // benefit is lost if 'b' is also tested.
    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
    if (_a == 0) {
      return 0;
    }

    uint256 c = _a * _b;
    require(c / _a == _b);

    return c;
  }

  /**
  * @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
  */
  function div(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b > 0); // Solidity only automatically asserts when dividing by 0
    uint256 c = _a / _b;
    // assert(_a == _b * c + _a % _b); // There is no case in which this doesn't hold

    return c;
  }

  /**
  * @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
    require(_b <= _a);
    uint256 c = _a - _b;

    return c;
  }

  /**
  * @dev Adds two numbers, reverts on overflow.
  */
  function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
    uint256 c = _a + _b;
    require(c >= _a);

    return c;
  }

  /**
  * @dev Divides two numbers and returns the remainder (unsigned integer modulo),
  * reverts when dividing by zero.
  */
  function mod(uint256 a, uint256 b) internal pure returns (uint256) {
    require(b != 0);
    return a % b;
  }
}


contract Accessibility {
  address private owner;
  modifier onlyOwner() {
    require(msg.sender == owner, "access denied");
    _;
  }

  constructor() public {
    owner = msg.sender;
  }

  function disown() internal {
    delete owner;
  }
}


contract Rev1Storage {
  function investorShortInfo(address addr) public view returns(uint value, uint refBonus); 
}


contract Rev2Storage {
  function investorInfo(address addr) public view returns(uint investment, uint paymentTime); 
}


library PrivateEntrance {
  using PrivateEntrance for privateEntrance;
  using Math for uint;
  struct privateEntrance {
    Rev1Storage rev1Storage;
    Rev2Storage rev2Storage;
    uint investorMaxInvestment;
    uint endTimestamp;
    mapping(address=>bool) hasAccess;
  }

  function isActive(privateEntrance storage pe) internal view returns(bool) {
    return pe.endTimestamp > now;
  }

  function maxInvestmentFor(privateEntrance storage pe, address investorAddr) internal view returns(uint) {
    // check if investorAddr has access
    if (!pe.hasAccess[investorAddr]) {
      return 0;
    }

    // get investor max investment = investment from revolution 1
    (uint maxInvestment, ) = pe.rev1Storage.investorShortInfo(investorAddr);
    if (maxInvestment == 0) {
      return 0;
    }
    maxInvestment = Math.min(maxInvestment, pe.investorMaxInvestment);

    // get current investment from revolution 2
    (uint currInvestment, ) = pe.rev2Storage.investorInfo(investorAddr);
    
    if (currInvestment >= maxInvestment) {
      return 0;
    }

    return maxInvestment-currInvestment;
  }

  function provideAccessFor(privateEntrance storage pe, address[] addrs) internal {
    for (uint16 i; i < addrs.length; i++) {
      pe.hasAccess[addrs[i]] = true;
    }
  }
}


contract InvestorsStorage is Accessibility {
  struct Investor {
    uint investment;
    uint paymentTime;
  }
  uint public size;

  mapping (address => Investor) private investors;

  function isInvestor(address addr) public view returns (bool) {
    return investors[addr].investment > 0;
  }

  function investorInfo(address addr) public view returns(uint investment, uint paymentTime) {
    investment = investors[addr].investment;
    paymentTime = investors[addr].paymentTime;
  }

  function newInvestor(address addr, uint investment, uint paymentTime) public onlyOwner returns (bool) {
    Investor storage inv = investors[addr];
    if (inv.investment != 0 || investment == 0) {
      return false;
    }
    inv.investment = investment;
    inv.paymentTime = paymentTime;
    size++;
    return true;
  }

  function addInvestment(address addr, uint investment) public onlyOwner returns (bool) {
    if (investors[addr].investment == 0) {
      return false;
    }
    investors[addr].investment += investment;
    return true;
  }

  function setPaymentTime(address addr, uint paymentTime) public onlyOwner returns (bool) {
    if (investors[addr].investment == 0) {
      return false;
    }
    investors[addr].paymentTime = paymentTime;
    return true;
  }
}


library RapidGrowthProtection {
  using RapidGrowthProtection for rapidGrowthProtection;
  
  struct rapidGrowthProtection {
    uint startTimestamp;
    uint maxDailyTotalInvestment;
    uint8 activityDays;
    mapping(uint8 => uint) dailyTotalInvestment;
  }

  function maxInvestmentAtNow(rapidGrowthProtection storage rgp) internal view returns(uint) {
    uint day = rgp.currDay();
    if (day == 0 || day > rgp.activityDays) {
      return 0;
    }
    if (rgp.dailyTotalInvestment[uint8(day)] >= rgp.maxDailyTotalInvestment) {
      return 0;
    }
    return rgp.maxDailyTotalInvestment - rgp.dailyTotalInvestment[uint8(day)];
  }

  function isActive(rapidGrowthProtection storage rgp) internal view returns(bool) {
    uint day = rgp.currDay();
    return day != 0 && day <= rgp.activityDays;
  }

  function saveInvestment(rapidGrowthProtection storage rgp, uint investment) internal returns(bool) {
    uint day = rgp.currDay();
    if (day == 0 || day > rgp.activityDays) {
      return false;
    }
    if (rgp.dailyTotalInvestment[uint8(day)] + investment > rgp.maxDailyTotalInvestment) {
      return false;
    }
    rgp.dailyTotalInvestment[uint8(day)] += investment;
    return true;
  }

  function startAt(rapidGrowthProtection storage rgp, uint timestamp) internal { 
    rgp.startTimestamp = timestamp;

    // restart
    for (uint8 i = 1; i <= rgp.activityDays; i++) {
      if (rgp.dailyTotalInvestment[i] != 0) {
        delete rgp.dailyTotalInvestment[i];
      }
    }
  }

  function currDay(rapidGrowthProtection storage rgp) internal view returns(uint day) {
    if (rgp.startTimestamp > now) {
      return 0;
    }
    day = (now - rgp.startTimestamp) / 24 hours + 1; // +1 for skip zero day
  }
}








contract Revolution2 is Accessibility {
  using RapidGrowthProtection for RapidGrowthProtection.rapidGrowthProtection;
  using PrivateEntrance for PrivateEntrance.privateEntrance;
  using Percent for Percent.percent;
  using SafeMath for uint;
  using Math for uint;

  // easy read for investors
  using Address for *;
  using Zero for *; 
  
  RapidGrowthProtection.rapidGrowthProtection private m_rgp;
  PrivateEntrance.privateEntrance private m_privEnter;
  mapping(address => bool) private m_referrals;
  InvestorsStorage private m_investors;

  // automatically generates getters
  uint public constant minInvesment = 10 finney; //       0.01 eth
  uint public constant maxBalance = 333e5 ether; // 33 300 000 eth
  address public advertisingAddress;
  address public adminsAddress;
  uint public investmentsNumber;
  uint public waveStartup;

  // percents 
  Percent.percent private m_1_percent = Percent.percent(1, 100);           //   1/100  *100% = 1%
  Percent.percent private m_2_percent = Percent.percent(2, 100);           //   2/100  *100% = 2%
  Percent.percent private m_3_33_percent = Percent.percent(333, 10000);    // 333/10000*100% = 3.33%
  Percent.percent private m_adminsPercent = Percent.percent(5, 100);       //   5/100  *100% = 5%
  Percent.percent private m_advertisingPercent = Percent.percent(75, 1000);// 75/1000  *100% = 7.5%

  // more events for easy read from blockchain
  event LogPEInit(uint when, address rev1Storage, address rev2Storage, uint investorMaxInvestment, uint endTimestamp);
  event LogSendExcessOfEther(address indexed addr, uint when, uint value, uint investment, uint excess);
  event LogNewReferral(address indexed addr, address indexed referrerAddr, uint when, uint refBonus);
  event LogRGPInit(uint when, uint startTimestamp, uint maxDailyTotalInvestment, uint activityDays);
  event LogRGPInvestment(address indexed addr, uint when, uint investment, uint indexed day);
  event LogNewInvesment(address indexed addr, uint when, uint investment, uint value);
  event LogAutomaticReinvest(address indexed addr, uint when, uint investment);
  event LogPayDividends(address indexed addr, uint when, uint dividends);
  event LogNewInvestor(address indexed addr, uint when);
  event LogBalanceChanged(uint when, uint balance);
  event LogNextWave(uint when);
  event LogDisown(uint when);


  modifier balanceChanged {
    _;
    emit LogBalanceChanged(now, address(this).balance);
  }

  modifier notFromContract() {
    require(msg.sender.isNotContract(), "only externally accounts");
    _;
  }

  constructor() public {
    adminsAddress = msg.sender;
    advertisingAddress = msg.sender;
    nextWave();
  }

  function() public payable {
    // investor get him dividends
    if (msg.value.isZero()) {
      getMyDividends();
      return;
    }

    // sender do invest
    doInvest(msg.data.toAddress());
  }

  function doDisown() public onlyOwner {
    disown();
    emit LogDisown(now);
  }

  function init(address rev1StorageAddr, uint timestamp) public onlyOwner {
    // init Rapid Growth Protection
    m_rgp.startTimestamp = timestamp + 1;
    m_rgp.maxDailyTotalInvestment = 500 ether;
    m_rgp.activityDays = 21;
    emit LogRGPInit(
      now, 
      m_rgp.startTimestamp,
      m_rgp.maxDailyTotalInvestment,
      m_rgp.activityDays
    );


    // init Private Entrance
    m_privEnter.rev1Storage = Rev1Storage(rev1StorageAddr);
    m_privEnter.rev2Storage = Rev2Storage(address(m_investors));
    m_privEnter.investorMaxInvestment = 50 ether;
    m_privEnter.endTimestamp = timestamp;
    emit LogPEInit(
      now, 
      address(m_privEnter.rev1Storage), 
      address(m_privEnter.rev2Storage), 
      m_privEnter.investorMaxInvestment, 
      m_privEnter.endTimestamp
    );
  }

  function setAdvertisingAddress(address addr) public onlyOwner {
    addr.requireNotZero();
    advertisingAddress = addr;
  }

  function setAdminsAddress(address addr) public onlyOwner {
    addr.requireNotZero();
    adminsAddress = addr;
  }

  function privateEntranceProvideAccessFor(address[] addrs) public onlyOwner {
    m_privEnter.provideAccessFor(addrs);
  }

  function rapidGrowthProtectionmMaxInvestmentAtNow() public view returns(uint investment) {
    investment = m_rgp.maxInvestmentAtNow();
  }

  function investorsNumber() public view returns(uint) {
    return m_investors.size();
  }

  function balanceETH() public view returns(uint) {
    return address(this).balance;
  }

  function percent1() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_1_percent.num, m_1_percent.den);
  }

  function percent2() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_2_percent.num, m_2_percent.den);
  }

  function percent3_33() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_3_33_percent.num, m_3_33_percent.den);
  }

  function advertisingPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_advertisingPercent.num, m_advertisingPercent.den);
  }

  function adminsPercent() public view returns(uint numerator, uint denominator) {
    (numerator, denominator) = (m_adminsPercent.num, m_adminsPercent.den);
  }

  function investorInfo(address investorAddr) public view returns(uint investment, uint paymentTime, bool isReferral) {
    (investment, paymentTime) = m_investors.investorInfo(investorAddr);
    isReferral = m_referrals[investorAddr];
  }

  function investorDividendsAtNow(address investorAddr) public view returns(uint dividends) {
    dividends = calcDividends(investorAddr);
  }

  function dailyPercentAtNow() public view returns(uint numerator, uint denominator) {
    Percent.percent memory p = dailyPercent();
    (numerator, denominator) = (p.num, p.den);
  }

  function refBonusPercentAtNow() public view returns(uint numerator, uint denominator) {
    Percent.percent memory p = refBonusPercent();
    (numerator, denominator) = (p.num, p.den);
  }

  function getMyDividends() public notFromContract balanceChanged {
    // calculate dividends
    uint dividends = calcDividends(msg.sender);
    require (dividends.notZero(), "cannot to pay zero dividends");

    // update investor payment timestamp
    assert(m_investors.setPaymentTime(msg.sender, now));

    // check enough eth - goto next wave if needed
    if (address(this).balance <= dividends) {
      nextWave();
      dividends = address(this).balance;
    } 

    // transfer dividends to investor
    msg.sender.transfer(dividends);
    emit LogPayDividends(msg.sender, now, dividends);
  }

  function doInvest(address referrerAddr) public payable notFromContract balanceChanged {
    uint investment = msg.value;
    uint receivedEther = msg.value;
    require(investment >= minInvesment, "investment must be >= minInvesment");
    require(address(this).balance <= maxBalance, "the contract eth balance limit");

    if (m_rgp.isActive()) { 
      // use Rapid Growth Protection if needed
      uint rpgMaxInvest = m_rgp.maxInvestmentAtNow();
      rpgMaxInvest.requireNotZero();
      investment = Math.min(investment, rpgMaxInvest);
      assert(m_rgp.saveInvestment(investment));
      emit LogRGPInvestment(msg.sender, now, investment, m_rgp.currDay());
      
    } else if (m_privEnter.isActive()) {
      // use Private Entrance if needed
      uint peMaxInvest = m_privEnter.maxInvestmentFor(msg.sender);
      peMaxInvest.requireNotZero();
      investment = Math.min(investment, peMaxInvest);
    }

    // send excess of ether if needed
    if (receivedEther > investment) {
      uint excess = receivedEther - investment;
      msg.sender.transfer(excess);
      receivedEther = investment;
      emit LogSendExcessOfEther(msg.sender, now, msg.value, investment, excess);
    }

    // commission
    advertisingAddress.send(m_advertisingPercent.mul(receivedEther));
    adminsAddress.send(m_adminsPercent.mul(receivedEther));

    bool senderIsInvestor = m_investors.isInvestor(msg.sender);

    // ref system works only once and only on first invest
    if (referrerAddr.notZero() && !senderIsInvestor && !m_referrals[msg.sender] &&
      referrerAddr != msg.sender && m_investors.isInvestor(referrerAddr)) {
      
      m_referrals[msg.sender] = true;
      // add referral bonus to investor`s and referral`s investments
      uint refBonus = refBonusPercent().mmul(investment);
      assert(m_investors.addInvestment(referrerAddr, refBonus)); // add referrer bonus
      investment += refBonus;                                    // add referral bonus
      emit LogNewReferral(msg.sender, referrerAddr, now, refBonus);
    }

    // automatic reinvest - prevent burning dividends
    uint dividends = calcDividends(msg.sender);
    if (senderIsInvestor && dividends.notZero()) {
      investment += dividends;
      emit LogAutomaticReinvest(msg.sender, now, dividends);
    }

    if (senderIsInvestor) {
      // update existing investor
      assert(m_investors.addInvestment(msg.sender, investment));
      assert(m_investors.setPaymentTime(msg.sender, now));
    } else {
      // create new investor
      assert(m_investors.newInvestor(msg.sender, investment, now));
      emit LogNewInvestor(msg.sender, now);
    }

    investmentsNumber++;
    emit LogNewInvesment(msg.sender, now, investment, receivedEther);
  }

  function getMemInvestor(address investorAddr) internal view returns(InvestorsStorage.Investor memory) {
    (uint investment, uint paymentTime) = m_investors.investorInfo(investorAddr);
    return InvestorsStorage.Investor(investment, paymentTime);
  }

  function calcDividends(address investorAddr) internal view returns(uint dividends) {
    InvestorsStorage.Investor memory investor = getMemInvestor(investorAddr);

    // safe gas if dividends will be 0
    if (investor.investment.isZero() || now.sub(investor.paymentTime) < 10 minutes) {
      return 0;
    }
    
    // for prevent burning daily dividends if 24h did not pass - calculate it per 10 min interval
    // if daily percent is X, then 10min percent = X / (24h / 10 min) = X / 144

    // and we must to get numbers of 10 min interval after investor got payment:
    // (now - investor.paymentTime) / 10min 

    // finaly calculate dividends = ((now - investor.paymentTime) / 10min) * (X * investor.investment)  / 144) 

    Percent.percent memory p = dailyPercent();
    dividends = (now.sub(investor.paymentTime) / 10 minutes) * p.mmul(investor.investment) / 144;
  }

  function dailyPercent() internal view returns(Percent.percent memory p) {
    uint balance = address(this).balance;

    // (3) 3.33% if balance < 1 000 ETH
    // (2) 2% if 1 000 ETH <= balance <= 33 333 ETH
    // (1) 1% if 33 333 ETH < balance

    if (balance < 1000 ether) { 
      p = m_3_33_percent.toMemory(); // (3)
    } else if ( 1000 ether <= balance && balance <= 33333 ether) {
      p = m_2_percent.toMemory();    // (2)
    } else {
      p = m_1_percent.toMemory();    // (1)
    }
  }

  function refBonusPercent() internal view returns(Percent.percent memory p) {
    uint balance = address(this).balance;

    // (1) 1% if 100 000 ETH < balance
    // (2) 2% if 10 000 ETH <= balance <= 100 000 ETH
    // (3) 3.33% if balance < 10 000 ETH   
    
    if (balance < 10000 ether) { 
      p = m_3_33_percent.toMemory(); // (3)
    } else if ( 10000 ether <= balance && balance <= 100000 ether) {
      p = m_2_percent.toMemory();    // (2)
    } else {
      p = m_1_percent.toMemory();    // (1)
    }          
  }

  function nextWave() private {
    m_investors = new InvestorsStorage();
    investmentsNumber = 0;
    waveStartup = now;
    m_rgp.startAt(now);
    emit LogRGPInit(now , m_rgp.startTimestamp, m_rgp.maxDailyTotalInvestment, m_rgp.activityDays);
    emit LogNextWave(now);
  }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"addrs","type":"address[]"}],"name":"privateEntranceProvideAccessFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"percent2","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advertisingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"refBonusPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"rev1StorageAddr","type":"address"},{"name":"timestamp","type":"uint256"}],"name":"init","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"minInvesment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"investorsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percent1","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorDividendsAtNow","outputs":[{"name":"dividends","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"rapidGrowthProtectionmMaxInvestmentAtNow","outputs":[{"name":"investment","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"advertisingPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminsPercent","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdminsAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"investmentsNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"percent3_33","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dailyPercentAtNow","outputs":[{"name":"numerator","type":"uint256"},{"name":"denominator","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setAdvertisingAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"getMyDividends","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"referrerAddr","type":"address"}],"name":"doInvest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddr","type":"address"}],"name":"investorInfo","outputs":[{"name":"investment","type":"uint256"},{"name":"paymentTime","type":"uint256"},{"name":"isReferral","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"waveStartup","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"balanceETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"doDisown","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"rev1Storage","type":"address"},{"indexed":false,"name":"rev2Storage","type":"address"},{"indexed":false,"name":"investorMaxInvestment","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"}],"name":"LogPEInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"excess","type":"uint256"}],"name":"LogSendExcessOfEther","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"referrerAddr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"refBonus","type":"uint256"}],"name":"LogNewReferral","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"maxDailyTotalInvestment","type":"uint256"},{"indexed":false,"name":"activityDays","type":"uint256"}],"name":"LogRGPInit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":true,"name":"day","type":"uint256"}],"name":"LogRGPInvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"},{"indexed":false,"name":"value","type":"uint256"}],"name":"LogNewInvesment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"investment","type":"uint256"}],"name":"LogAutomaticReinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"dividends","type":"uint256"}],"name":"LogPayDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNewInvestor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"LogBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogNextWave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"when","type":"uint256"}],"name":"LogDisown","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60016080819052606460a08190526010919091556011819055600260c081905260e0829052601255601381905561014d61010081905261271061012081905260149190915560155560056101408190526101608290526016556017556101c0604052604b6101808190526103e86101a08190526018919091556019553480156200008857600080fd5b506000805433600160a060020a03199182168117909255600d8054821683179055600c80549091169091179055620000c8640100000000620000ce810204565b6200022d565b620000d86200021c565b604051809103906000f080158015620000f5573d6000803e3d6000fd5b50600b8054600160a060020a031916600160a060020a03929092169190911790556000600e5542600f8190556200013d90600190640100000000620001c4810262001d391704565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b80825560015b600283015460ff90811690821611620002175760ff81166000908152600384016020526040902054156200020e5760ff811660009081526003840160205260408120555b600101620001ca565b505050565b60405161047480620024d283390190565b612295806200023d6000396000f3006080604052600436106101485763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306127a1181146101a7578063074a1600146101fc5780631686531a1461022a578063341bae0e1461025b578063399ae724146102705780633d7ac9f81461029457806362d2c555146102bb578063653c3174146102d057806368f6e75f146102e557806373ad468a146102fa578063900334b11461030f57806390b0636f146103305780639396df321461034557806395a23c3a1461035a578063984d4a931461036f5780639ec6e05414610390578063b7c1a119146103a5578063b8fde2a4146103ba578063cb192f2c146103cf578063d50030ad146103f0578063d82fa3f114610405578063dbcbaca414610419578063eafecc7a1461045a578063ecbdbb321461046f578063fc7c41af14610484575b61015134610499565b156101635761015e6104a1565b6101a5565b6101a56101a06000368080601f016020809104026020016040519081016040528093929190818152602001838380828437506106c6945050505050565b6106cd565b005b3480156101b357600080fd5b50604080516020600480358082013583810280860185019096528085526101a595369593946024949385019291829185019084908082843750949750610fa79650505050505050565b34801561020857600080fd5b5061021161100b565b6040805192835260208301919091528051918290030190f35b34801561023657600080fd5b5061023f611015565b60408051600160a060020a039092168252519081900360200190f35b34801561026757600080fd5b50610211611024565b34801561027c57600080fd5b506101a5600160a060020a0360043516602435611049565b3480156102a057600080fd5b506102a96111ae565b60408051918252519081900360200190f35b3480156102c757600080fd5b5061023f6111b9565b3480156102dc57600080fd5b506102a96111c8565b3480156102f157600080fd5b50610211611258565b34801561030657600080fd5b506102a9611262565b34801561031b57600080fd5b506102a9600160a060020a0360043516611271565b34801561033c57600080fd5b506102a9611282565b34801561035157600080fd5b50610211611293565b34801561036657600080fd5b5061021161129d565b34801561037b57600080fd5b506101a5600160a060020a03600435166112a7565b34801561039c57600080fd5b506102a9611338565b3480156103b157600080fd5b5061021161133e565b3480156103c657600080fd5b50610211611348565b3480156103db57600080fd5b506101a5600160a060020a036004351661135b565b3480156103fc57600080fd5b506101a56104a1565b6101a5600160a060020a03600435166106cd565b34801561042557600080fd5b5061043a600160a060020a03600435166113ec565b604080519384526020840192909252151582820152519081900360600190f35b34801561046657600080fd5b506102a96114b2565b34801561047b57600080fd5b506102a96114b8565b34801561049057600080fd5b506101a56114bd565b80155b919050565b60006104ac3361154a565b1515610502576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b61050b33611556565b90506105168161160a565b151561056c576040805160e560020a62461bcd02815260206004820152601c60248201527f63616e6e6f7420746f20706179207a65726f206469766964656e647300000000604482015290519081900360640190fd5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b505050506040513d602081101561060257600080fd5b5051151561060c57fe5b303181106106205761061c61160f565b5030315b604051339082156108fc029083906000818181858888f1935050505015801561064d573d6000803e3d6000fd5b506040805142815260208101839052815133927f6710e0cad56444677ac916513b384a4acc6501cfb5219f59657ad4ddffef9d60928290030190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a150565b6014015190565b6000808080808080806106df3361154a565b1515610735576040805160e560020a62461bcd02815260206004820152601860248201527f6f6e6c792065787465726e616c6c79206163636f756e74730000000000000000604482015290519081900360640190fd5b349750879650662386f26fc100008710156107c0576040805160e560020a62461bcd02815260206004820152602260248201527f696e766573746d656e74206d757374206265203e3d206d696e496e7665736d6560448201527f6e74000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6a1b8b8c9e000e82a480000030311115610824576040805160e560020a62461bcd02815260206004820152601e60248201527f74686520636f6e7472616374206574682062616c616e6365206c696d69740000604482015290519081900360640190fd5b61082e60016116ff565b156108b65761083d600161172a565b9550610848866117a4565b61085288876117fb565b975061086560018963ffffffff61181316565b151561086d57fe5b6108776001611893565b60408051428152602081018b9052815133927f21cd51cc98547f9914bc0b314a40e645408acad21d1289eecb4dfb534fda7cfc928290030190a36108ee565b6108c060056118bd565b156108ee576108d660053363ffffffff6118c616565b94506108e1856117a4565b6108eb88866117fb565b97505b87871115610976576040518888039450339085156108fc029086906000818181858888f19350505050158015610928573d6000803e3d6000fd5b50604080514281523460208201528082018a905260608101869052905189985033917faac472d912a7451062b64c942775db41d65cce271603099e1c4760e072050951919081900360800190a25b600c54600160a060020a03166108fc61099660188a63ffffffff611a5b16565b6040518115909202916000818181858888f15050600d54600160a060020a031692506108fc91506109d0905060168a63ffffffff611a5b16565b6040518115909202916000818181858888f15050600b54604080517fcee2a9cf0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a03909216945063cee2a9cf935060248082019350602092918290030181600087803b158015610a4b57600080fd5b505af1158015610a5f573d6000803e3d6000fd5b505050506040513d6020811015610a7557600080fd5b50519250610a8b600160a060020a038a16611a86565b8015610a95575082155b8015610ab15750336000908152600a602052604090205460ff16155b8015610ac65750600160a060020a0389163314155b8015610b625750600b54604080517fcee2a9cf000000000000000000000000000000000000000000000000000000008152600160a060020a038c811660048301529151919092169163cee2a9cf9160248083019260209291908290030181600087803b158015610b3557600080fd5b505af1158015610b49573d6000803e3d6000fd5b505050506040513d6020811015610b5f57600080fd5b50515b15610c8b57336000908152600a60205260409020805460ff19166001179055610b9988610b8d611a94565b9063ffffffff611b0516565b600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152600160a060020a038d811660048301526024820185905291519395509116916320987e64916044808201926020929091908290030181600087803b158015610c0a57600080fd5b505af1158015610c1e573d6000803e3d6000fd5b505050506040513d6020811015610c3457600080fd5b50511515610c3e57fe5b6040805142815260208101849052815199840199600160a060020a038c169233927fc04fb14bddd876003a335c37b1fe6524ac1dbf74eb64dd08cd085fba4b97d592929081900390910190a35b610c9433611556565b9050828015610ca75750610ca78161160a565b15610ceb57604080514281526020810183905281519983019933927f149822e3a65d38c9b6f40e835864c61ef5ca0866219afc2db638e3f85ae78866928290030190a25b8215610e3757600b54604080517f20987e64000000000000000000000000000000000000000000000000000000008152336004820152602481018b90529051600160a060020a03909216916320987e64916044808201926020929091908290030181600087803b158015610d5e57600080fd5b505af1158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b50511515610d9257fe5b600b54604080517f440135850000000000000000000000000000000000000000000000000000000081523360048201524260248201529051600160a060020a03909216916344013585916044808201926020929091908290030181600087803b158015610dfe57600080fd5b505af1158015610e12573d6000803e3d6000fd5b505050506040513d6020811015610e2857600080fd5b50511515610e3257fe5b610f15565b600b54604080517f41b2121c000000000000000000000000000000000000000000000000000000008152336004820152602481018b90524260448201529051600160a060020a03909216916341b2121c916064808201926020929091908290030181600087803b158015610eaa57600080fd5b505af1158015610ebe573d6000803e3d6000fd5b505050506040513d6020811015610ed457600080fd5b50511515610ede57fe5b60408051428152905133917fc8616cf56c542aa2540734215ee474180fc3b9cc7c2fad288000504632cacf18919081900360200190a25b600e8054600101905560408051428152602081018a9052808201899052905133917fd5a986028ae9e04f72859f7d3c1d8ae8b649c26be5b99d4c2d98ca4a19a0502e919081900360600190a2604080514281523031602082015281517f32367fddaa1baa1c6a0fc5c3e8284df724bacc7b50e847c32c9f9765f9f96137929181900390910190a1505050505050505050565b600054600160a060020a03163314610ff7576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061224a833981519152604482015290519081900360640190fd5b61100860058263ffffffff611b2816565b50565b6012546013549091565b600c54600160a060020a031681565b60008061102f611dae565b611037611a94565b80516020909101519094909350915050565b600054600160a060020a03163314611099576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061224a833981519152604482015290519081900360640190fd5b600180820190819055681b1ae4d6e2ef50000060028190556003805460ff1916601517908190556040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a160058054600160a060020a0380851673ffffffffffffffffffffffffffffffffffffffff199283161792839055600b546006805490931690821617918290556802b5e3af16b1880000600781905560088590556040805142815294831660208601529290911683830152606083015260808201839052517f7e13d111fea1199cb6fb21cb38766240cfad970317820e8e5713da7a708285309181900360a00190a15050565b662386f26fc1000081565b600d54600160a060020a031681565b600b54604080517f949d225d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163949d225d91600480830192602092919082900301818787803b15801561122757600080fd5b505af115801561123b573d6000803e3d6000fd5b505050506040513d602081101561125157600080fd5b5051905090565b6010546011549091565b6a1b8b8c9e000e82a480000081565b600061127c82611556565b92915050565b600061128e600161172a565b905090565b6018546019549091565b6016546017549091565b600054600160a060020a031633146112f7576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061224a833981519152604482015290519081900360640190fd5b61130981600160a060020a0316611b91565b600d805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600e5481565b6014546015549091565b600080611353611dae565b611037611bf1565b600054600160a060020a031633146113ab576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061224a833981519152604482015290519081900360640190fd5b6113bd81600160a060020a0316611b91565b600c805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a038481166004830152825160009485948594939091169263dbcbaca4926024808301939282900301818787803b15801561145657600080fd5b505af115801561146a573d6000803e3d6000fd5b505050506040513d604081101561148057600080fd5b508051602091820151600160a060020a039096166000908152600a909252604090912054909560ff9091169350915050565b600f5481565b303190565b600054600160a060020a0316331461150d576040805160e560020a62461bcd02815260206004820152600d602482015260008051602061224a833981519152604482015290519081900360640190fd5b611515611c45565b6040805142815290517f5189687a7ec9d4aebe2f548f952ffbbad19e4cd545c4a05b5e2369cd272dd5519181900360200190a1565b803b8015905b50919050565b6000611560611dae565b611568611dae565b61157184611c64565b91506115808260000151610499565b806115a257506102586115a0836020015142611d2290919063ffffffff16565b105b156115b05760009250611603565b6115b8611bf1565b82519091506090906115d190839063ffffffff611b0516565b6102586115eb856020015142611d2290919063ffffffff16565b8115156115f457fe5b04028115156115ff57fe5b0492505b5050919050565b151590565b611617611dc5565b604051809103906000f080158015611633573d6000803e3d6000fd5b50600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556000600e5542600f81905561167890600190611d39565b6001546002546003546040805142815260208101949094528381019290925260ff166060830152517f16171a4e996b33ebb6320397242a4168f60c16e87fbd8b58f1744d68c4179caf9181900360800190a16040805142815290517fc66870ef5f6257a76295d443e9221488043ec691f830f6c6128755c3518e3c759181900360200190a1565b60008061170b83611893565b905080158015906117235750600283015460ff168111155b9392505050565b60008061173683611893565b905080158061174b5750600283015460ff1681115b156117595760009150611550565b600183015460ff82166000908152600385016020526040902054106117815760009150611550565b60ff81166000908152600384016020526040902054600184015403915050919050565b801515611008576040805160e560020a62461bcd02815260206004820152601660248201527f72657175697265206e6f74207a65726f2076616c756500000000000000000000604482015290519081900360640190fd5b60008183111561180c57508061127c565b5090919050565b60008061181f84611893565b90508015806118345750600284015460ff1681115b15611842576000915061188c565b600184015460ff821660009081526003860160205260409020548401111561186d576000915061188c565b60ff811660009081526003850160205260409020805484019055600191505b5092915050565b600042826000015411156118a95750600061049c565b815462015180904203046001019050919050565b60030154421090565b600160a060020a03811660009081526004830160205260408120548190819060ff1615156118f75760009250611a53565b8454604080517f993d3489000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152825193169263993d3489926024808401939192918290030181600087803b15801561195a57600080fd5b505af115801561196e573d6000803e3d6000fd5b505050506040513d604081101561198457600080fd5b505191508115156119985760009250611a53565b6119a68286600201546117fb565b6001860154604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a03888116600483015282519496509092169263dbcbaca49260248082019392918290030181600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050506040513d6040811015611a3957600080fd5b50519050818110611a4d5760009250611a53565b80820392505b505092915050565b6000811515611a6c5750600061127c565b600183015483548302811515611a7e57fe5b049392505050565b600160a060020a0316151590565b611a9c611dae565b303169021e19e0c9bab2400000811015611ac157611aba6014611d89565b9150611b01565b8069021e19e0c9bab240000011158015611ae5575069152d02c7e14af68000008111155b15611af457611aba6012611d89565b611afe6010611d89565b91505b5090565b6000811515611b165750600061127c565b602083015183518302811515611a7e57fe5b60005b81518161ffff161015611b8c576001836004016000848461ffff16815181101515611b5257fe5b602090810291909101810151600160a060020a03168252810191909152604001600020805460ff1916911515919091179055600101611b2b565b505050565b600160a060020a0381161515611008576040805160e560020a62461bcd02815260206004820152601860248201527f72657175697265206e6f74207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b611bf9611dae565b3031683635c9adc5dea00000811015611c1657611aba6014611d89565b80683635c9adc5dea0000011158015611ae5575069070efc4d0e326fb400008111611af457611aba6012611d89565b6000805473ffffffffffffffffffffffffffffffffffffffff19169055565b611c6c611dae565b600b54604080517fdbcbaca4000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301528251600094859492169263dbcbaca492602480830193919282900301818787803b158015611cd357600080fd5b505af1158015611ce7573d6000803e3d6000fd5b505050506040513d6040811015611cfd57600080fd5b5080516020918201516040805180820190915291825291810191909152949350505050565b60008083831115611d3257600080fd5b5050900390565b80825560015b600283015460ff90811690821611611b8c5760ff8116600090815260038401602052604090205415611d815760ff811660009081526003840160205260408120555b600101611d3f565b611d91611dae565b506040805180820190915281548152600190910154602082015290565b604080518082019091526000808252602082015290565b60405161047480611dd6833901905600608060405260008054600160a060020a0319163317905561044f806100256000396000f3006080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166320987e64811461007c57806341b2121c146100b457806344013585146100db578063949d225d146100ff578063cee2a9cf14610126578063dbcbaca414610147575b600080fd5b34801561008857600080fd5b506100a0600160a060020a0360043516602435610181565b604080519115158252519081900360200190f35b3480156100c057600080fd5b506100a0600160a060020a036004351660243560443561024a565b3480156100e757600080fd5b506100a0600160a060020a0360043516602435610316565b34801561010b57600080fd5b506101146103de565b60408051918252519081900360200190f35b34801561013257600080fd5b506100a0600160a060020a03600435166103e4565b34801561015357600080fd5b50610168600160a060020a0360043516610400565b6040805192835260208301919091528051918290030190f35b60008054600160a060020a031633146101fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561022257506000610244565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a031633146102c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b50600160a060020a038416600090815260026020526040902080541515806102ec575083155b156102fa576000915061030e565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a0316331461039057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156103b757506000610244565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a03166000908152600260205260408120541190565b600160a060020a03166000908152600260205260409020805460019091015490915600a165627a7a723058206b0c9e67bd5a5971ca788f8b14c9e3c6e8703d405b71c82597482e605ceb217500296163636573732064656e69656400000000000000000000000000000000000000a165627a7a72305820bc3b957c469f1df1b8dad362cb714a7444761a7dc4b430a4c6ca7924ab6eea3a0029608060405260008054600160a060020a0319163317905561044f806100256000396000f3006080604052600436106100775763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166320987e64811461007c57806341b2121c146100b457806344013585146100db578063949d225d146100ff578063cee2a9cf14610126578063dbcbaca414610147575b600080fd5b34801561008857600080fd5b506100a0600160a060020a0360043516602435610181565b604080519115158252519081900360200190f35b3480156100c057600080fd5b506100a0600160a060020a036004351660243560443561024a565b3480156100e757600080fd5b506100a0600160a060020a0360043516602435610316565b34801561010b57600080fd5b506101146103de565b60408051918252519081900360200190f35b34801561013257600080fd5b506100a0600160a060020a03600435166103e4565b34801561015357600080fd5b50610168600160a060020a0360043516610400565b6040805192835260208301919091528051918290030190f35b60008054600160a060020a031633146101fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316600090815260026020526040902054151561022257506000610244565b50600160a060020a038216600090815260026020526040902080548201905560015b92915050565b600080548190600160a060020a031633146102c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b50600160a060020a038416600090815260026020526040902080541515806102ec575083155b156102fa576000915061030e565b838155600180820184905580548101815591505b509392505050565b60008054600160a060020a0316331461039057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6163636573732064656e69656400000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526002602052604090205415156103b757506000610244565b50600160a060020a0382166000908152600260205260409020600190810182905592915050565b60015481565b600160a060020a03166000908152600260205260408120541190565b600160a060020a03166000908152600260205260409020805460019091015490915600a165627a7a723058206b0c9e67bd5a5971ca788f8b14c9e3c6e8703d405b71c82597482e605ceb21750029

   Swarm Source:
bzzr://6b0c9e67bd5a5971ca788f8b14c9e3c6e8703d405b71c82597482e605ceb2175

 

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.