ETH Price: $2,524.80 (+0.31%)

Contract

0xD40775E917492a9F8Afd740d52770d27682Be02d
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw93310862020-01-22 11:18:491682 days ago1579691929IN
0xD40775E9...7682Be02d
0 ETH0.0006255728
Withdraw93310222020-01-22 11:05:561682 days ago1579691156IN
0xD40775E9...7682Be02d
0 ETH0.0004468420
Withdraw81579282019-07-15 21:17:431873 days ago1563225463IN
0xD40775E9...7682Be02d
0 ETH0.0021876420
Withdraw80665062019-07-01 15:46:021887 days ago1561995962IN
0xD40775E9...7682Be02d
0 ETH0.002246141
Withdraw73395052019-03-10 5:18:362000 days ago1552195116IN
0xD40775E9...7682Be02d
0 ETH0.00011995
Withdraw65430522018-10-19 8:08:402142 days ago1539936520IN
0xD40775E9...7682Be02d
0 ETH0.0002414511
Withdraw65285602018-10-16 23:25:232145 days ago1539732323IN
0xD40775E9...7682Be02d
0 ETH0.000139562
Withdraw62293822018-08-28 14:54:392194 days ago1535468079IN
0xD40775E9...7682Be02d
0 ETH0.0016434930
Withdraw60585302018-07-30 17:48:122223 days ago1532972892IN
0xD40775E9...7682Be02d
0 ETH0.000047962
Withdraw59350172018-07-09 20:22:162244 days ago1531167736IN
0xD40775E9...7682Be02d
0 ETH0.000359715
Withdraw58978582018-07-03 10:45:402250 days ago1530614740IN
0xD40775E9...7682Be02d
0 ETH0.0014654421
Withdraw57287852018-06-04 4:05:002279 days ago1528085100IN
0xD40775E9...7682Be02d
0 ETH0.000348915
Withdraw57284602018-06-04 2:43:212280 days ago1528080201IN
0xD40775E9...7682Be02d
0 ETH0.000219510
Withdraw57284402018-06-04 2:38:402280 days ago1528079920IN
0xD40775E9...7682Be02d
0 ETH0.0006365529
Withdraw57232172018-06-03 4:17:102280 days ago1527999430IN
0xD40775E9...7682Be02d
0 ETH0.0007669614
Withdraw57201982018-06-02 15:21:072281 days ago1527952867IN
0xD40775E9...7682Be02d
0 ETH0.0012623
Withdraw57089802018-05-31 15:31:072283 days ago1527780667IN
0xD40775E9...7682Be02d
0 ETH0.0033965462
Withdraw57043982018-05-30 20:06:102284 days ago1527710770IN
0xD40775E9...7682Be02d
0 ETH0.0027913240
Withdraw56980022018-05-29 16:48:032285 days ago1527612483IN
0xD40775E9...7682Be02d
0 ETH0.0027391550
Withdraw56965492018-05-29 10:28:572285 days ago1527589737IN
0xD40775E9...7682Be02d
0 ETH0.0002853513
Withdraw56938782018-05-28 23:08:412286 days ago1527548921IN
0xD40775E9...7682Be02d
0 ETH0.000273915
Withdraw56910122018-05-28 11:06:362286 days ago1527505596IN
0xD40775E9...7682Be02d
0 ETH0.0027391550
Withdraw56832082018-05-27 2:04:372288 days ago1527386677IN
0xD40775E9...7682Be02d
0 ETH0.000109562
Withdraw56786332018-05-26 6:56:012288 days ago1527317761IN
0xD40775E9...7682Be02d
0 ETH0.0006978310
Withdraw56770492018-05-26 0:14:112289 days ago1527293651IN
0xD40775E9...7682Be02d
0 ETH0.000558268
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
50782072018-02-12 18:00:382391 days ago1518458438
0xD40775E9...7682Be02d
299.969 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PresalePool

Compiler Version
v0.4.19+commit.c4cbbb05

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

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

pragma solidity ^0.4.19;

// Wolf Crypto pooling contract for Electrify.Asia
// written by @iamdefinitelyahuman

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 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;
  }
}


contract ERC20 {
  function balanceOf(address _owner) constant returns (uint256 balance) {}
  function transfer(address _to, uint256 _value) returns (bool success) {}
}


contract WhiteList {
   function checkMemberLevel (address addr) view public returns (uint) {}
}


contract PresalePool {

  // SafeMath is a library to ensure that math operations do not have overflow errors
  // https://zeppelin-solidity.readthedocs.io/en/latest/safemath.html
  using SafeMath for uint;
  
  // The contract has 3 stages:
  // 1 - The initial state. The owner is able to add addresses to the whitelist, and any whitelisted addresses can deposit or withdraw eth to the contract.
  // 2 - The owner has closed the contract for further deposits. Whitelisted addresses can still withdraw eth from the contract.
  // 3 - The eth is sent from the contract to the receiver. Unused eth can be claimed by contributors immediately. Once tokens are sent to the contract,
  //     the owner enables withdrawals and contributors can withdraw their tokens.
  uint8 public contractStage = 1;
  
  // These variables are set at the time of contract creation
  // address that creates the contract
  address public owner;
  // maximum eth amount (in wei) that can be sent by a whitelisted address
  uint[] public contributionCaps;
  // the % of tokens kept by the contract owner
  uint public feePct;
  // the address that the pool will be paid out to
  address public receiverAddress;
  
  // These constant variables do not change with each contract deployment
  // minimum eth amount (in wei) that can be sent by a whitelisted address
  uint constant public contributionMin = 100000000000000000;
  // maximum gas price allowed for deposits in stage 1
  uint constant public maxGasPrice = 50000000000;
  // whitelisting contract
  WhiteList constant public whitelistContract = WhiteList(0x8D95B038cA80A986425FA240C3C17Fb2B6e9bc63);
  
  
  // These variables are all initially set to 0 and will be set at some point during the contract
  // epoch time that the next contribution caps become active
  uint public nextCapTime;
  // pending contribution caps
  uint [] public nextContributionCaps;
  // block number of the last change to the receiving address (set if receiving address is changed, stage 1 or 2)
  uint public addressChangeBlock;
  // amount of eth (in wei) present in the contract when it was submitted
  uint public finalBalance;
  // array containing eth amounts to be refunded in stage 3
  uint[] public ethRefundAmount;
  // default token contract to be used for withdrawing tokens in stage 3
  address public activeToken;
  
  // data structure for holding the contribution amount, cap, eth refund status, and token withdrawal status for each whitelisted address
  struct Contributor {
    bool authorized;
    uint ethRefund;
    uint balance;
    uint cap;
    mapping (address => uint) tokensClaimed;
  }
  // mapping that holds the contributor struct for each whitelisted address
  mapping (address => Contributor) whitelist;
  
  // data structure for holding information related to token withdrawals.
  struct TokenAllocation {
    ERC20 token;
    uint[] pct;
    uint balanceRemaining;
  }
  // mapping that holds the token allocation struct for each token address
  mapping (address => TokenAllocation) distributionMap;
  
  
  // modifier for functions that can only be accessed by the contract creator
  modifier onlyOwner () {
    require (msg.sender == owner);
    _;
  }
  
  // modifier to prevent re-entrancy exploits during contract > contract interaction
  bool locked;
  modifier noReentrancy() {
    require(!locked);
    locked = true;
    _;
    locked = false;
  }
  
  // Events triggered throughout contract execution
  // These can be watched via geth filters to keep up-to-date with the contract
  event ContributorBalanceChanged (address contributor, uint totalBalance);
  event ReceiverAddressSet ( address _addr);
  event PoolSubmitted (address receiver, uint amount);
  event WithdrawalsOpen (address tokenAddr);
  event TokensWithdrawn (address receiver, uint amount);
  event EthRefundReceived (address sender, uint amount);
  event EthRefunded (address receiver, uint amount);
  event ERC223Received (address token, uint value);
   
  // These are internal functions used for calculating fees, eth and token allocations as %
  // returns a value as a % accurate to 20 decimal points
  function _toPct (uint numerator, uint denominator ) internal pure returns (uint) {
    return numerator.mul(10 ** 20) / denominator;
  }
  
  // returns % of any number, where % given was generated with toPct
  function _applyPct (uint numerator, uint pct) internal pure returns (uint) {
    return numerator.mul(pct) / (10 ** 20);
  }
  
  // This function is called at the time of contract creation,
  // it sets the initial variables and whitelists the contract owner.
  function PresalePool(address receiverAddr, uint[] capAmounts, uint fee) public {
    require (fee < 100);
    require (capAmounts.length>1 && capAmounts.length<256);
    for (uint8 i=1; i<capAmounts.length; i++) {
      require (capAmounts[i] <= capAmounts[0]);
    }
    owner = msg.sender;
    receiverAddress = receiverAddr;
    contributionCaps = capAmounts;
    feePct = _toPct(fee,100);
    whitelist[msg.sender].authorized = true;
  }
  
  // This function is called whenever eth is sent into the contract.
  // The send will fail unless the contract is in stage one and the sender has been whitelisted.
  // The amount sent is added to the balance in the Contributor struct associated with the sending address.
  function () payable public {
    if (contractStage == 1) {
      _ethDeposit();
    } else if (contractStage == 3) {
      _ethRefund();
    } else revert();
  }
  
  // Internal function for handling eth deposits during contract stage one.
  function _ethDeposit () internal {
    assert (contractStage == 1);
    require (tx.gasprice <= maxGasPrice);
    require (this.balance <= contributionCaps[0]);
    var c = whitelist[msg.sender];
    uint newBalance = c.balance.add(msg.value);
    require (newBalance >= contributionMin);
    require (newBalance <= _checkCap(msg.sender));
    c.balance = newBalance;
    ContributorBalanceChanged(msg.sender, newBalance);
  }
  
  // Internal function for handling eth refunds during stage three.
  function _ethRefund () internal {
    assert (contractStage == 3);
    require (msg.sender == owner || msg.sender == receiverAddress);
    require (msg.value >= contributionMin);
    ethRefundAmount.push(msg.value);
    EthRefundReceived(msg.sender, msg.value);
  }
  
  // This function is called to withdraw eth or tokens from the contract.
  // It can only be called by addresses that are whitelisted and show a balance greater than 0.
  // If called during stages one or two, the full eth balance deposited into the contract is returned and the contributor's balance reset to 0.
  // If called during stage three, the contributor's unused eth will be returned, as well as any available tokens.
  // The token address may be provided optionally to withdraw tokens that are not currently the default token (airdrops).
  function withdraw (address tokenAddr) public {
    var c = whitelist[msg.sender];
    require (c.balance > 0);
    if (contractStage < 3) {
      uint amountToTransfer = c.balance;
      c.balance = 0;
      msg.sender.transfer(amountToTransfer);
      ContributorBalanceChanged(msg.sender, 0);
    } else {
      _withdraw(msg.sender,tokenAddr);
    }  
  }
  
  // This function allows the contract owner to force a withdrawal to any contributor.
  function withdrawFor (address contributor, address tokenAddr) public onlyOwner {
    require (contractStage == 3);
    require (whitelist[contributor].balance > 0);
    _withdraw(contributor,tokenAddr);
  }
  
  // This internal function handles withdrawals during stage three.
  // The associated events will fire to notify when a refund or token allocation is claimed.
  function _withdraw (address receiver, address tokenAddr) internal {
    assert (contractStage == 3);
    var c = whitelist[receiver];
    if (tokenAddr == 0x00) {
      tokenAddr = activeToken;
    }
    var d = distributionMap[tokenAddr];
    require ( (ethRefundAmount.length > c.ethRefund) || d.pct.length > c.tokensClaimed[tokenAddr] );
    if (ethRefundAmount.length > c.ethRefund) {
      uint pct = _toPct(c.balance,finalBalance);
      uint ethAmount = 0;
      for (uint i=c.ethRefund; i<ethRefundAmount.length; i++) {
        ethAmount = ethAmount.add(_applyPct(ethRefundAmount[i],pct));
      }
      c.ethRefund = ethRefundAmount.length;
      if (ethAmount > 0) {
        receiver.transfer(ethAmount);
        EthRefunded(receiver,ethAmount);
      }
    }
    if (d.pct.length > c.tokensClaimed[tokenAddr]) {
      uint tokenAmount = 0;
      for (i=c.tokensClaimed[tokenAddr]; i<d.pct.length; i++) {
        tokenAmount = tokenAmount.add(_applyPct(c.balance,d.pct[i]));
      }
      c.tokensClaimed[tokenAddr] = d.pct.length;
      if (tokenAmount > 0) {
        require(d.token.transfer(receiver,tokenAmount));
        d.balanceRemaining = d.balanceRemaining.sub(tokenAmount);
        TokensWithdrawn(receiver,tokenAmount);
      }  
    }
    
  }
  
  // This function can only be executed by the owner, it adds an address to the whitelist.
  // To execute, the contract must be in stage 1, the address cannot already be whitelisted, and the address cannot be a contract itself.
  // Blocking contracts from being whitelisted prevents attacks from unexpected contract to contract interaction - very important!
  function authorize (address addr, uint cap) public onlyOwner {
    require (contractStage == 1);
    _checkWhitelistContract(addr);
    require (!whitelist[addr].authorized);
    require ((cap > 0 && cap < contributionCaps.length) || (cap >= contributionMin && cap <= contributionCaps[0]) );
    uint size;
    assembly { size := extcodesize(addr) }
    require (size == 0);
    whitelist[addr].cap = cap;
    whitelist[addr].authorized = true;
  }
  
  // This function is used by the owner to authorize many addresses in a single call.
  // Each address will be given the same cap, and the cap must be one of the standard levels.
  function authorizeMany (address[] addr, uint cap) public onlyOwner {
    require (addr.length < 255);
    require (cap > 0 && cap < contributionCaps.length);
    for (uint8 i=0; i<addr.length; i++) {
      authorize(addr[i], cap);
    }
  }
  
  // This function is called by the owner to remove an address from the whitelist.
  // It may only be executed during stages 1 and 2.  Any eth sent by the address is refunded and their personal cap is set to 0.
  // It will throw if the address is still authorised in the whitelist contract.
  function revoke (address addr) public onlyOwner {
    require (contractStage < 3);
    require (whitelist[addr].authorized);
    require (whitelistContract.checkMemberLevel(addr) == 0);
    whitelist[addr].authorized = false;
    if (whitelist[addr].balance > 0) {
      uint amountToTransfer = whitelist[addr].balance;
      whitelist[addr].balance = 0;
      addr.transfer(amountToTransfer);
      ContributorBalanceChanged(addr, 0);
    }
  }
  
  // This function is called by the owner to modify the contribution cap of a whitelisted address.
  // If the current contribution balance exceeds the new cap, the excess balance is refunded.
  function modifyIndividualCap (address addr, uint cap) public onlyOwner {
    require (contractStage < 3);
    require (cap < contributionCaps.length || (cap >= contributionMin && cap <= contributionCaps[0]) );
    _checkWhitelistContract(addr);
    var c = whitelist[addr];
    require (c.authorized);
    uint amount = c.balance;
    c.cap = cap;
    uint capAmount = _checkCap(addr);
    if (amount > capAmount) {
      c.balance = capAmount;
      addr.transfer(amount.sub(capAmount));
      ContributorBalanceChanged(addr, capAmount);
    }
  }
  
  // This function is called by the owner to modify the cap for a contribution level.
  // The cap cannot be decreased below the current balance or increased past the contract limit.
  function modifyLevelCap (uint level, uint cap) public onlyOwner {
    require (contractStage < 3);
    require (level > 0 && level < contributionCaps.length);
    require (this.balance <= cap && contributionCaps[0] >= cap);
    contributionCaps[level] = cap;
    nextCapTime = 0;
  }
  
  // This function changes every level cap at once, with an optional delay.
  // Modifying the caps immediately will cancel any delayed cap change.
  function modifyAllLevelCaps (uint[] cap, uint time) public onlyOwner {
    require (contractStage < 3);
    require (cap.length == contributionCaps.length-1);
    require (time == 0 || time>block.timestamp);
    if (time == 0) {
      for (uint8 i = 0; i < cap.length; i++) {
        modifyLevelCap(i+1, cap[i]);
      }
    } else {
      nextContributionCaps = contributionCaps;
      nextCapTime = time;
      for (i = 0; i < cap.length; i++) {
        require (contributionCaps[i+1] <= cap[i] && contributionCaps[0] >= cap[i]);
        nextContributionCaps[i+1] = cap[i];
      }
    }
  }
  
  // This function can be called during stages one or two to modify the maximum balance of the contract.
  // It can only be called by the owner. The amount cannot be set to lower than the current balance of the contract.
  function modifyMaxContractBalance (uint amount) public onlyOwner {
    require (contractStage < 3);
    require (amount >= contributionMin);
    require (amount >= this.balance);
    contributionCaps[0] = amount;
    nextCapTime = 0;
    for (uint8 i=1; i<contributionCaps.length; i++) {
      if (contributionCaps[i]>amount) contributionCaps[i]=amount;
    }
  }
  
  // This internal function returns the cap amount of a whitelisted address.
  function _checkCap (address addr) internal returns (uint) {
    _checkWhitelistContract(addr);
    var c = whitelist[addr];
    if (!c.authorized) return 0;
    if (nextCapTime>0 && block.timestamp>nextCapTime) {
      contributionCaps = nextContributionCaps;
      nextCapTime = 0;
    }
    if (c.cap<contributionCaps.length) return contributionCaps[c.cap];
    return c.cap; 
  }
  
  // This internal function checks if an address is whitelisted in the whitelist contract.
  function _checkWhitelistContract (address addr) internal {
    var c = whitelist[addr];
    if (!c.authorized) {
      var level = whitelistContract.checkMemberLevel(addr);
      if (level == 0 || level >= contributionCaps.length) return;
      c.cap = level;
      c.authorized = true;
    }
  }
  
  // This callable function returns the total pool cap, current balance and remaining balance to be filled.
  function checkPoolBalance () view public returns (uint poolCap, uint balance, uint remaining) {
    if (contractStage == 1) {
      remaining = contributionCaps[0].sub(this.balance);
    } else {
      remaining = 0;
    }
    return (contributionCaps[0],this.balance,remaining);
  }
  
  // This callable function returns the balance, contribution cap, and remaining available balance of any contributor.
  function checkContributorBalance (address addr) view public returns (uint balance, uint cap, uint remaining) {
    var c = whitelist[addr];
    if (!c.authorized) {
      cap = whitelistContract.checkMemberLevel(addr);
      if (cap == 0) return (0,0,0);
    } else {
      cap = c.cap;
    }
    balance = c.balance;
    if (contractStage == 1) {
      if (cap<contributionCaps.length) { 
        if (nextCapTime == 0 || nextCapTime > block.timestamp) {
          cap = contributionCaps[cap];
        } else {
          cap = nextContributionCaps[cap];
        }
      }
      remaining = cap.sub(balance);
      if (contributionCaps[0].sub(this.balance) < remaining) remaining = contributionCaps[0].sub(this.balance);
    } else {
      remaining = 0;
    }
    return (balance, cap, remaining);
  }
  
  // This callable function returns the token balance that a contributor can currently claim.
  function checkAvailableTokens (address addr, address tokenAddr) view public returns (uint tokenAmount) {
    var c = whitelist[addr];
    var d = distributionMap[tokenAddr];
    for (uint i = c.tokensClaimed[tokenAddr]; i < d.pct.length; i++) {
      tokenAmount = tokenAmount.add(_applyPct(c.balance, d.pct[i]));
    }
    return tokenAmount;
  }
  
  // This function closes further contributions to the contract, advancing it to stage two.
  // It can only be called by the owner.  After this call has been made, whitelisted addresses
  // can still remove their eth from the contract but cannot contribute any more.
  function closeContributions () public onlyOwner {
    require (contractStage == 1);
    contractStage = 2;
  }
  
  // This function reopens the contract to contributions and further whitelisting, returning it to stage one.
  // It can only be called by the owner during stage two.
  function reopenContributions () public onlyOwner {
    require (contractStage == 2);
    contractStage = 1;
  }
  
  // This function sets the receiving address that the contract will send the pooled eth to.
  // It can only be called by the contract owner if the receiver address has not already been set.
  // After making this call, the contract will be unable to send the pooled eth for 6000 blocks.
  // This limitation is so that if the owner acts maliciously in making the change, all whitelisted
  // addresses have ~24 hours to withdraw their eth from the contract.
  function setReceiverAddress (address addr) public onlyOwner {
    require (addr != 0x00 && receiverAddress == 0x00);
    require (contractStage < 3);
    receiverAddress = addr;
    addressChangeBlock = block.number;
    ReceiverAddressSet(addr);
  }

  // This function sends the pooled eth to the receiving address, calculates the % of unused eth to be returned,
  // and advances the contract to stage three. It can only be called by the contract owner during stages one or two.
  // The amount to send (given in wei) must be specified during the call. As this function can only be executed once,
  // it is VERY IMPORTANT not to get the amount wrong.
  function submitPool (uint amountInWei) public onlyOwner noReentrancy {
    require (contractStage < 3);
    require (receiverAddress != 0x00);
    require (block.number >= addressChangeBlock.add(6000));
    require (contributionMin <= amountInWei && amountInWei <= this.balance);
    finalBalance = this.balance;
    require (receiverAddress.call.value(amountInWei).gas(msg.gas.sub(5000))());
    ethRefundAmount.push(this.balance);
    contractStage = 3;
    PoolSubmitted(receiverAddress, amountInWei);
  }
  
  // This function opens the contract up for token withdrawals.
  // It can only be called by the owner during stage 3.  The owner specifies the address of an ERC20 token
  // contract that this contract has a balance in, and optionally a bool to prevent this token from being
  // the default withdrawal (in the event of an airdrop, for example).
  function enableTokenWithdrawals (address tokenAddr, bool notDefault) public onlyOwner noReentrancy {
    require (contractStage == 3);
    if (notDefault) {
      require (activeToken != 0x00);
    } else {
      activeToken = tokenAddr;
    }
    var d = distributionMap[tokenAddr];    
    if (d.pct.length==0) d.token = ERC20(tokenAddr);
    uint amount = d.token.balanceOf(this).sub(d.balanceRemaining);
    require (amount > 0);
    if (feePct > 0) {
      require (d.token.transfer(owner,_applyPct(amount,feePct)));
    }
    amount = d.token.balanceOf(this).sub(d.balanceRemaining);
    d.balanceRemaining = d.token.balanceOf(this);
    d.pct.push(_toPct(amount,finalBalance));
  }
  
  // This is a standard function required for ERC223 compatibility.
  function tokenFallback (address from, uint value, bytes data) public {
    ERC223Received (from, value);
  }
  
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"checkPoolBalance","outputs":[{"name":"poolCap","type":"uint256"},{"name":"balance","type":"uint256"},{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractStage","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"receiverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amountInWei","type":"uint256"}],"name":"submitPool","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxGasPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"nextContributionCaps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"},{"name":"notDefault","type":"bool"}],"name":"enableTokenWithdrawals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddr","type":"address"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ethRefundAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contributionCaps","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"},{"name":"tokenAddr","type":"address"}],"name":"checkAvailableTokens","outputs":[{"name":"tokenAmount","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"revoke","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"addressChangeBlock","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"}],"name":"setReceiverAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"whitelistContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"level","type":"uint256"},{"name":"cap","type":"uint256"}],"name":"modifyLevelCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"activeToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"closeContributions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"feePct","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"modifyMaxContractBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"contributor","type":"address"},{"name":"tokenAddr","type":"address"}],"name":"withdrawFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address[]"},{"name":"cap","type":"uint256"}],"name":"authorizeMany","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"checkContributorBalance","outputs":[{"name":"balance","type":"uint256"},{"name":"cap","type":"uint256"},{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contributionMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"cap","type":"uint256"}],"name":"modifyIndividualCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"addr","type":"address"},{"name":"cap","type":"uint256"}],"name":"authorize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reopenContributions","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nextCapTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"cap","type":"uint256[]"},{"name":"time","type":"uint256"}],"name":"modifyAllLevelCaps","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"receiverAddr","type":"address"},{"name":"capAmounts","type":"uint256[]"},{"name":"fee","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"contributor","type":"address"},{"indexed":false,"name":"totalBalance","type":"uint256"}],"name":"ContributorBalanceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_addr","type":"address"}],"name":"ReceiverAddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"PoolSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenAddr","type":"address"}],"name":"WithdrawalsOpen","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EthRefundReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"EthRefunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ERC223Received","type":"event"}]

606060405260016000806101000a81548160ff021916908360ff16021790555034156200002b57600080fd5b60405162003a9438038062003a948339810160405280805190602001909190805182019190602001805190602001909190505060006064821015156200007057600080fd5b600183511180156200008457506101008351105b15156200009057600080fd5b600190505b82518160ff161015620000f457826000815181101515620000b257fe5b90602001906020020151838260ff16815181101515620000ce57fe5b9060200190602002015111151515620000e657600080fd5b808060010191505062000095565b33600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600190805190602001906200018e9291906200029c565b50620001b08260646200021b6401000000000262002f49176401000000009004565b6002819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055505050505062000316565b6000816200024a68056bc75e2d63100000856200025d6401000000000262003664179091906401000000009004565b8115156200025457fe5b04905092915050565b600080600084141562000274576000915062000295565b82840290508284828115156200028657fe5b041415156200029157fe5b8091505b5092915050565b828054828255906000526020600020908101928215620002db579160200282015b82811115620002da578251825591602001919060010190620002bd565b5b509050620002ea9190620002ee565b5090565b6200031391905b808211156200030f576000816000905550600101620002f5565b5090565b90565b61376e80620003266000396000f300606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063021bc974146101ec5780630370ca411461022357806316fed3e2146102525780632129e25a146102a757806333e7ed61146102d05780633de39c11146102f35780634a5df2501461031c5780634fbc7e111461035357806351cff8d91461039757806352f1e07b146103d0578063732c227f14610407578063737c2d8c1461043e57806374a8f103146104aa5780637c02e1ea146104e35780638279c7db1461050c57806384900b041461054557806386a17f291461059a5780638796d43d146105c65780638c60e8061461061b5780638da5cb5b14610630578063a02cf93714610685578063abccb043146106ae578063adb5735c146106d1578063aee0abaa14610729578063b9c009f01461078c578063bcc13d1d146107e7578063be18903514610810578063c0ee0b8a14610852578063c1dbd9b2146108d7578063cd33670714610919578063ece2ea401461092e578063fb73a59314610957575b60016000809054906101000a900460ff1660ff1614156101bd576101b86109ba565b6101ea565b60036000809054906101000a900460ff1660ff1614156101e4576101df610b2f565b6101e9565b600080fd5b5b005b34156101f757600080fd5b6101ff610cad565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561022e57600080fd5b610236610d5d565b604051808260ff1660ff16815260200191505060405180910390f35b341561025d57600080fd5b610265610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102b257600080fd5b6102ba610d95565b6040518082815260200191505060405180910390f35b34156102db57600080fd5b6102f16004808035906020019091905050610d9b565b005b34156102fe57600080fd5b610306611089565b6040518082815260200191505060405180910390f35b341561032757600080fd5b61033d6004808035906020019091905050611092565b6040518082815260200191505060405180910390f35b341561035e57600080fd5b610395600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506110b6565b005b34156103a257600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611708565b005b34156103db57600080fd5b6103f1600480803590602001909190505061184b565b6040518082815260200191505060405180910390f35b341561041257600080fd5b610428600480803590602001909190505061186f565b6040518082815260200191505060405180910390f35b341561044957600080fd5b610494600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611893565b6040518082815260200191505060405180910390f35b34156104b557600080fd5b6104e1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119c6565b005b34156104ee57600080fd5b6104f6611d62565b6040518082815260200191505060405180910390f35b341561051757600080fd5b610543600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d68565b005b341561055057600080fd5b610558611efc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a557600080fd5b6105c46004808035906020019091908035906020019091905050611f14565b005b34156105d157600080fd5b6105d9612027565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062657600080fd5b61062e61204d565b005b341561063b57600080fd5b6106436120e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069057600080fd5b61069861210c565b6040518082815260200191505060405180910390f35b34156106b957600080fd5b6106cf6004808035906020019091905050612112565b005b34156106dc57600080fd5b610727600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612262565b005b341561073457600080fd5b61078a60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001909190505061233d565b005b341561079757600080fd5b6107c3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612410565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156107f257600080fd5b6107fa6126bd565b6040518082815260200191505060405180910390f35b341561081b57600080fd5b610850600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506126c9565b005b341561085d57600080fd5b6108d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506128ee565b005b34156108e257600080fd5b610917600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061295e565b005b341561092457600080fd5b61092c612b53565b005b341561093957600080fd5b610941612bec565b6040518082815260200191505060405180910390f35b341561096257600080fd5b6109b8600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019091905050612bf2565b005b60008060016000809054906101000a900460ff1660ff161415156109da57fe5b640ba43b74003a111515156109ee57600080fd5b600160008154811015156109fe57fe5b9060005260206000209001543073ffffffffffffffffffffffffffffffffffffffff163111151515610a2f57600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150610a87348360020154612dfa90919063ffffffff16565b905067016345785d8a00008110151515610aa057600080fd5b610aa933612e18565b8111151515610ab757600080fd5b8082600201819055507fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f43382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60036000809054906101000a900460ff1660ff16141515610b4c57fe5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610c0057600080fd5b67016345785d8a00003410151515610c1757600080fd5b60088054806001018281610c2b919061369f565b9160005260206000209001600034909190915055507fa6b266978e1d6bcae9b5baa4078b3b92fc622b302cca549cf2ebf2e4723aca3c3334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600080600060016000809054906101000a900460ff1660ff161415610d1857610d113073ffffffffffffffffffffffffffffffffffffffff163160016000815481101515610cf757fe5b906000526020600020900154612eff90919063ffffffff16565b9050610d1d565b600090505b60016000815481101515610d2d57fe5b9060005260206000209001543073ffffffffffffffffffffffffffffffffffffffff163182925092509250909192565b6000809054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610df757600080fd5b600c60009054906101000a900460ff16151515610e1357600080fd5b6001600c60006101000a81548160ff02191690831515021790555060036000809054906101000a900460ff1660ff16101515610e4e57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610e9657600080fd5b610ead611770600654612dfa90919063ffffffff16565b4310151515610ebb57600080fd5b8067016345785d8a000011158015610eea57503073ffffffffffffffffffffffffffffffffffffffff16318111155b1515610ef557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681610f626113885a612eff90919063ffffffff16565b90604051600060405180830381858888f193505050501515610f8357600080fd5b60088054806001018281610f97919061369f565b916000526020600020900160003073ffffffffffffffffffffffffffffffffffffffff16319091909150555060036000806101000a81548160ff021916908360ff1602179055507f166428c0f697cf2ebca7e4045ddec0f48bb4914f5ffac8765da1551e2881a519600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600c60006101000a81548160ff02191690831515021790555050565b640ba43b740081565b6005818154811015156110a157fe5b90600052602060002090016000915090505481565b600080600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561111557600080fd5b600c60009054906101000a900460ff1615151561113157600080fd5b6001600c60006101000a81548160ff02191690831515021790555060036000809054906101000a900460ff1660ff1614151561116c57600080fd5b82156111bf576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156111ba57600080fd5b611201565b83600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915060008260010180549050141561129657838260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61138e82600201548360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561136557600080fd5b6102c65a03f1151561137657600080fd5b50505060405180519050612eff90919063ffffffff16565b905060008111151561139f57600080fd5b600060025411156114cd578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141984600254612f18565b6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114a657600080fd5b6102c65a03f115156114b757600080fd5b5050506040518051905015156114cc57600080fd5b5b6115c582600201548360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b50505060405180519050612eff90919063ffffffff16565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561168e57600080fd5b6102c65a03f1151561169f57600080fd5b5050506040518051905082600201819055508160010180548060010182816116c7919061369f565b916000526020600020900160006116e084600754612f49565b909190915055506000600c60006101000a81548160ff02191690831515021790555050505050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506000826002015411151561175f57600080fd5b60036000809054906101000a900460ff1660ff16101561183b5781600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156117ca57600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f4336000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1611846565b6118453384612f7a565b5b505050565b60088181548110151561185a57fe5b90600052602060002090016000915090505481565b60018181548110151561187e57fe5b90600052602060002090016000915090505481565b600080600080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508260040160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b81600101805490508110156119ba576119ab61199c8460020154846001018481548110151561198b57fe5b906000526020600020900154612f18565b85612dfa90919063ffffffff16565b93508080600101915050611960565b83935050505092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2357600080fd5b60036000809054906101000a900460ff1660ff16101515611a4357600080fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515611a9e57600080fd5b6000738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611b5757600080fd5b6102c65a03f11515611b6857600080fd5b50505060405180519050141515611b7e57600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115611d5e57600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611cf157600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f4826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5050565b60065481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dc457600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611e2357506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515611e2e57600080fd5b60036000809054906101000a900460ff1660ff16101515611e4e57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436006819055507f17528c7f18bea16a4db7e968a53fe806a68a29800c78185e7d52d343dd8004ba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b738d95b038ca80a986425fa240c3c17fb2b6e9bc6381565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7057600080fd5b60036000809054906101000a900460ff1660ff16101515611f9057600080fd5b600082118015611fa4575060018054905082105b1515611faf57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff163111158015611ff157508060016000815481101515611fe257fe5b90600052602060002090015410155b1515611ffc57600080fd5b8060018381548110151561200c57fe5b90600052602060002090018190555060006004819055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a957600080fd5b60016000809054906101000a900460ff1660ff161415156120c957600080fd5b60026000806101000a81548160ff021916908360ff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561216f57600080fd5b60036000809054906101000a900460ff1660ff1610151561218f57600080fd5b67016345785d8a000082101515156121a657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163182101515156121cc57600080fd5b81600160008154811015156121dd57fe5b9060005260206000209001819055506000600481905550600190505b6001805490508160ff16101561225e578160018260ff1681548110151561221c57fe5b9060005260206000209001541115612251578160018260ff1681548110151561224157fe5b9060005260206000209001819055505b80806001019150506121f9565b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122be57600080fd5b60036000809054906101000a900460ff1660ff161415156122de57600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015411151561232f57600080fd5b6123398282612f7a565b5050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561239a57600080fd5b60ff83511015156123aa57600080fd5b6000821180156123be575060018054905082105b15156123c957600080fd5b600090505b82518160ff16101561240b576123fe838260ff168151811015156123ee57fe5b906020019060200201518361295e565b80806001019150506123ce565b505050565b600080600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff16151561256a57738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840866000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561252657600080fd5b6102c65a03f1151561253757600080fd5b50505060405180519050925060008314156125655760008060008292508191508090509350935093506126b5565b612572565b806003015492505b8060020154935060016000809054906101000a900460ff1660ff1614156126a6576001805490508310156125f857600060045414806125b2575042600454115b156125d9576001838154811015156125c657fe5b90600052602060002090015492506125f7565b6005838154811015156125e857fe5b90600052602060002090015492505b5b61260b8484612eff90919063ffffffff16565b9150816126533073ffffffffffffffffffffffffffffffffffffffff16316001600081548110151561263957fe5b906000526020600020900154612eff90919063ffffffff16565b10156126a15761269e3073ffffffffffffffffffffffffffffffffffffffff16316001600081548110151561268457fe5b906000526020600020900154612eff90919063ffffffff16565b91505b6126ab565b600091505b8383839350935093505b509193909250565b67016345785d8a000081565b60008060008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272957600080fd5b60036000809054906101000a900460ff1660ff1610151561274957600080fd5b60018054905084108061278b575067016345785d8a0000841015801561278a57506001600081548110151561277a57fe5b9060005260206000209001548411155b5b151561279657600080fd5b61279f856134e9565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508260000160009054906101000a900460ff1615156127fd57600080fd5b8260020154915083836003018190555061281685612e18565b9050808211156128e7578083600201819055508473ffffffffffffffffffffffffffffffffffffffff166108fc6128568385612eff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561287b57600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f48582604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5050505050565b7f121b68c1c3978d37f853f81c5ba5a0d2d36bb308e0765a3d6eb906c01ebdfe888383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129bb57600080fd5b60016000809054906101000a900460ff1660ff161415156129db57600080fd5b6129e4836134e9565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151515612a4057600080fd5b600082118015612a54575060018054905082105b80612a8e575067016345785d8a00008210158015612a8d575060016000815481101515612a7d57fe5b9060005260206000209001548211155b5b1515612a9957600080fd5b823b9050600081141515612aac57600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612baf57600080fd5b60026000809054906101000a900460ff1660ff16141515612bcf57600080fd5b60016000806101000a81548160ff021916908360ff160217905550565b60045481565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4f57600080fd5b60036000809054906101000a900460ff1660ff16101515612c6f57600080fd5b60018080549050038351141515612c8557600080fd5b6000821480612c9357504282115b1515612c9e57600080fd5b6000821415612cf457600090505b82518160ff161015612cef57612ce26001820160ff16848360ff16815181101515612cd357fe5b90602001906020020151611f14565b8080600101915050612cac565b612df5565b60016005908054612d069291906136cb565b5081600481905550600090505b82518160ff161015612df457828160ff16815181101515612d3057fe5b90602001906020020151600180830160ff16815481101515612d4e57fe5b90600052602060002090015411158015612d9d5750828160ff16815181101515612d7457fe5b9060200190602002015160016000815481101515612d8e57fe5b90600052602060002090015410155b1515612da857600080fd5b828160ff16815181101515612db957fe5b9060200190602002015160056001830160ff16815481101515612dd857fe5b9060005260206000209001819055508080600101915050612d13565b5b505050565b6000808284019050838110151515612e0e57fe5b8091505092915050565b600080612e24836134e9565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515612e865760009150612ef9565b6000600454118015612e99575060045442115b15612eba5760056001908054612eb09291906136cb565b5060006004819055505b60018054905081600301541015612ef15760018160030154815481101515612ede57fe5b9060005260206000209001549150612ef9565b806003015491505b50919050565b6000828211151515612f0d57fe5b818303905092915050565b600068056bc75e2d63100000612f37838561366490919063ffffffff16565b811515612f4057fe5b04905092915050565b600081612f6868056bc75e2d631000008561366490919063ffffffff16565b811515612f7157fe5b04905092915050565b60008060008060008060036000809054906101000a900460ff1660ff16141515612fa057fe5b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020955060008773ffffffffffffffffffffffffffffffffffffffff16141561302657600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696505b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209450856001015460088054905011806130c557508560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548560010180549050115b15156130d057600080fd5b85600101546008805490501115613215576130f18660020154600754612f49565b935060009250856001015491505b6008805490508210156131515761314261313360088481548110151561312157fe5b90600052602060002090015486612f18565b84612dfa90919063ffffffff16565b925081806001019250506130ff565b60088054905086600101819055506000831115613214578773ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156131a857600080fd5b7fffab3269bdaceca4d1bbc53e74b982ac2b306687e17e21f1e499e7fdf6751ac88884604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b8560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856001018054905011156134df57600090508560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b8460010180549050821015613308576132f96132ea876002015487600101858154811015156132d957fe5b906000526020600020900154612f18565b82612dfa90919063ffffffff16565b905081806001019250506132ae565b84600101805490508660040160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156134de578460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561342d57600080fd5b6102c65a03f1151561343e57600080fd5b50505060405180519050151561345357600080fd5b61346a818660020154612eff90919063ffffffff16565b85600201819055507f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8882604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b5050505050505050565b600080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900460ff16151561365e57738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156135fc57600080fd5b6102c65a03f1151561360d57600080fd5b505050604051805190509050600081148061362d57506001805490508110155b156136375761365f565b80826003018190555060018260000160006101000a81548160ff0219169083151502179055505b5b505050565b60008060008414156136795760009150613698565b828402905082848281151561368a57fe5b0414151561369457fe5b8091505b5092915050565b8154818355818115116136c6578183600052602060002091820191016136c5919061371d565b5b505050565b82805482825590600052602060002090810192821561370c5760005260206000209182015b8281111561370b5782548255916001019190600101906136f0565b5b509050613719919061371d565b5090565b61373f91905b8082111561373b576000816000905550600101613723565b5090565b905600a165627a7a72305820d6fd230365bcf15b9914e72c0b911b07633a708fc5577ef2202abd3568b75c19002900000000000000000000000035605229648744ecb2e4f008deb870bbcb08222600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000001043561a882930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x606060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063021bc974146101ec5780630370ca411461022357806316fed3e2146102525780632129e25a146102a757806333e7ed61146102d05780633de39c11146102f35780634a5df2501461031c5780634fbc7e111461035357806351cff8d91461039757806352f1e07b146103d0578063732c227f14610407578063737c2d8c1461043e57806374a8f103146104aa5780637c02e1ea146104e35780638279c7db1461050c57806384900b041461054557806386a17f291461059a5780638796d43d146105c65780638c60e8061461061b5780638da5cb5b14610630578063a02cf93714610685578063abccb043146106ae578063adb5735c146106d1578063aee0abaa14610729578063b9c009f01461078c578063bcc13d1d146107e7578063be18903514610810578063c0ee0b8a14610852578063c1dbd9b2146108d7578063cd33670714610919578063ece2ea401461092e578063fb73a59314610957575b60016000809054906101000a900460ff1660ff1614156101bd576101b86109ba565b6101ea565b60036000809054906101000a900460ff1660ff1614156101e4576101df610b2f565b6101e9565b600080fd5b5b005b34156101f757600080fd5b6101ff610cad565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561022e57600080fd5b610236610d5d565b604051808260ff1660ff16815260200191505060405180910390f35b341561025d57600080fd5b610265610d6f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102b257600080fd5b6102ba610d95565b6040518082815260200191505060405180910390f35b34156102db57600080fd5b6102f16004808035906020019091905050610d9b565b005b34156102fe57600080fd5b610306611089565b6040518082815260200191505060405180910390f35b341561032757600080fd5b61033d6004808035906020019091905050611092565b6040518082815260200191505060405180910390f35b341561035e57600080fd5b610395600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803515159060200190919050506110b6565b005b34156103a257600080fd5b6103ce600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611708565b005b34156103db57600080fd5b6103f1600480803590602001909190505061184b565b6040518082815260200191505060405180910390f35b341561041257600080fd5b610428600480803590602001909190505061186f565b6040518082815260200191505060405180910390f35b341561044957600080fd5b610494600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611893565b6040518082815260200191505060405180910390f35b34156104b557600080fd5b6104e1600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506119c6565b005b34156104ee57600080fd5b6104f6611d62565b6040518082815260200191505060405180910390f35b341561051757600080fd5b610543600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611d68565b005b341561055057600080fd5b610558611efc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105a557600080fd5b6105c46004808035906020019091908035906020019091905050611f14565b005b34156105d157600080fd5b6105d9612027565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561062657600080fd5b61062e61204d565b005b341561063b57600080fd5b6106436120e6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561069057600080fd5b61069861210c565b6040518082815260200191505060405180910390f35b34156106b957600080fd5b6106cf6004808035906020019091905050612112565b005b34156106dc57600080fd5b610727600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612262565b005b341561073457600080fd5b61078a60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001909190505061233d565b005b341561079757600080fd5b6107c3600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612410565b60405180848152602001838152602001828152602001935050505060405180910390f35b34156107f257600080fd5b6107fa6126bd565b6040518082815260200191505060405180910390f35b341561081b57600080fd5b610850600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506126c9565b005b341561085d57600080fd5b6108d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506128ee565b005b34156108e257600080fd5b610917600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061295e565b005b341561092457600080fd5b61092c612b53565b005b341561093957600080fd5b610941612bec565b6040518082815260200191505060405180910390f35b341561096257600080fd5b6109b8600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019091905050612bf2565b005b60008060016000809054906101000a900460ff1660ff161415156109da57fe5b640ba43b74003a111515156109ee57600080fd5b600160008154811015156109fe57fe5b9060005260206000209001543073ffffffffffffffffffffffffffffffffffffffff163111151515610a2f57600080fd5b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209150610a87348360020154612dfa90919063ffffffff16565b905067016345785d8a00008110151515610aa057600080fd5b610aa933612e18565b8111151515610ab757600080fd5b8082600201819055507fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f43382604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b60036000809054906101000a900460ff1660ff16141515610b4c57fe5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610bf55750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515610c0057600080fd5b67016345785d8a00003410151515610c1757600080fd5b60088054806001018281610c2b919061369f565b9160005260206000209001600034909190915055507fa6b266978e1d6bcae9b5baa4078b3b92fc622b302cca549cf2ebf2e4723aca3c3334604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1565b600080600060016000809054906101000a900460ff1660ff161415610d1857610d113073ffffffffffffffffffffffffffffffffffffffff163160016000815481101515610cf757fe5b906000526020600020900154612eff90919063ffffffff16565b9050610d1d565b600090505b60016000815481101515610d2d57fe5b9060005260206000209001543073ffffffffffffffffffffffffffffffffffffffff163182925092509250909192565b6000809054906101000a900460ff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610df757600080fd5b600c60009054906101000a900460ff16151515610e1357600080fd5b6001600c60006101000a81548160ff02191690831515021790555060036000809054906101000a900460ff1660ff16101515610e4e57600080fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610e9657600080fd5b610ead611770600654612dfa90919063ffffffff16565b4310151515610ebb57600080fd5b8067016345785d8a000011158015610eea57503073ffffffffffffffffffffffffffffffffffffffff16318111155b1515610ef557600080fd5b3073ffffffffffffffffffffffffffffffffffffffff1631600781905550600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681610f626113885a612eff90919063ffffffff16565b90604051600060405180830381858888f193505050501515610f8357600080fd5b60088054806001018281610f97919061369f565b916000526020600020900160003073ffffffffffffffffffffffffffffffffffffffff16319091909150555060036000806101000a81548160ff021916908360ff1602179055507f166428c0f697cf2ebca7e4045ddec0f48bb4914f5ffac8765da1551e2881a519600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16000600c60006101000a81548160ff02191690831515021790555050565b640ba43b740081565b6005818154811015156110a157fe5b90600052602060002090016000915090505481565b600080600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561111557600080fd5b600c60009054906101000a900460ff1615151561113157600080fd5b6001600c60006101000a81548160ff02191690831515021790555060036000809054906101000a900460ff1660ff1614151561116c57600080fd5b82156111bf576000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156111ba57600080fd5b611201565b83600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020915060008260010180549050141561129657838260000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b61138e82600201548360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561136557600080fd5b6102c65a03f1151561137657600080fd5b50505060405180519050612eff90919063ffffffff16565b905060008111151561139f57600080fd5b600060025411156114cd578160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661141984600254612f18565b6000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15156114a657600080fd5b6102c65a03f115156114b757600080fd5b5050506040518051905015156114cc57600080fd5b5b6115c582600201548360000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561159c57600080fd5b6102c65a03f115156115ad57600080fd5b50505060405180519050612eff90919063ffffffff16565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561168e57600080fd5b6102c65a03f1151561169f57600080fd5b5050506040518051905082600201819055508160010180548060010182816116c7919061369f565b916000526020600020900160006116e084600754612f49565b909190915055506000600c60006101000a81548160ff02191690831515021790555050505050565b600080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091506000826002015411151561175f57600080fd5b60036000809054906101000a900460ff1660ff16101561183b5781600201549050600082600201819055503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156117ca57600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f4336000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1611846565b6118453384612f7a565b5b505050565b60088181548110151561185a57fe5b90600052602060002090016000915090505481565b60018181548110151561187e57fe5b90600052602060002090016000915090505481565b600080600080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209250600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508260040160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b81600101805490508110156119ba576119ab61199c8460020154846001018481548110151561198b57fe5b906000526020600020900154612f18565b85612dfa90919063ffffffff16565b93508080600101915050611960565b83935050505092915050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a2357600080fd5b60036000809054906101000a900460ff1660ff16101515611a4357600080fd5b600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff161515611a9e57600080fd5b6000738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1515611b5757600080fd5b6102c65a03f11515611b6857600080fd5b50505060405180519050141515611b7e57600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff0219169083151502179055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201541115611d5e57600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015490506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611cf157600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f4826000604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5050565b60065481565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611dc457600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015611e2357506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b1515611e2e57600080fd5b60036000809054906101000a900460ff1660ff16101515611e4e57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550436006819055507f17528c7f18bea16a4db7e968a53fe806a68a29800c78185e7d52d343dd8004ba81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b738d95b038ca80a986425fa240c3c17fb2b6e9bc6381565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7057600080fd5b60036000809054906101000a900460ff1660ff16101515611f9057600080fd5b600082118015611fa4575060018054905082105b1515611faf57600080fd5b803073ffffffffffffffffffffffffffffffffffffffff163111158015611ff157508060016000815481101515611fe257fe5b90600052602060002090015410155b1515611ffc57600080fd5b8060018381548110151561200c57fe5b90600052602060002090018190555060006004819055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120a957600080fd5b60016000809054906101000a900460ff1660ff161415156120c957600080fd5b60026000806101000a81548160ff021916908360ff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561216f57600080fd5b60036000809054906101000a900460ff1660ff1610151561218f57600080fd5b67016345785d8a000082101515156121a657600080fd5b3073ffffffffffffffffffffffffffffffffffffffff163182101515156121cc57600080fd5b81600160008154811015156121dd57fe5b9060005260206000209001819055506000600481905550600190505b6001805490508160ff16101561225e578160018260ff1681548110151561221c57fe5b9060005260206000209001541115612251578160018260ff1681548110151561224157fe5b9060005260206000209001819055505b80806001019150506121f9565b5050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156122be57600080fd5b60036000809054906101000a900460ff1660ff161415156122de57600080fd5b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015411151561232f57600080fd5b6123398282612f7a565b5050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561239a57600080fd5b60ff83511015156123aa57600080fd5b6000821180156123be575060018054905082105b15156123c957600080fd5b600090505b82518160ff16101561240b576123fe838260ff168151811015156123ee57fe5b906020019060200201518361295e565b80806001019150506123ce565b505050565b600080600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff16151561256a57738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840866000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561252657600080fd5b6102c65a03f1151561253757600080fd5b50505060405180519050925060008314156125655760008060008292508191508090509350935093506126b5565b612572565b806003015492505b8060020154935060016000809054906101000a900460ff1660ff1614156126a6576001805490508310156125f857600060045414806125b2575042600454115b156125d9576001838154811015156125c657fe5b90600052602060002090015492506125f7565b6005838154811015156125e857fe5b90600052602060002090015492505b5b61260b8484612eff90919063ffffffff16565b9150816126533073ffffffffffffffffffffffffffffffffffffffff16316001600081548110151561263957fe5b906000526020600020900154612eff90919063ffffffff16565b10156126a15761269e3073ffffffffffffffffffffffffffffffffffffffff16316001600081548110151561268457fe5b906000526020600020900154612eff90919063ffffffff16565b91505b6126ab565b600091505b8383839350935093505b509193909250565b67016345785d8a000081565b60008060008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561272957600080fd5b60036000809054906101000a900460ff1660ff1610151561274957600080fd5b60018054905084108061278b575067016345785d8a0000841015801561278a57506001600081548110151561277a57fe5b9060005260206000209001548411155b5b151561279657600080fd5b61279f856134e9565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002092508260000160009054906101000a900460ff1615156127fd57600080fd5b8260020154915083836003018190555061281685612e18565b9050808211156128e7578083600201819055508473ffffffffffffffffffffffffffffffffffffffff166108fc6128568385612eff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050151561287b57600080fd5b7fbd5304e38e372b10ebf161f6b67eeaf9f4e25653126622b0e2497484850d10f48582604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5050505050565b7f121b68c1c3978d37f853f81c5ba5a0d2d36bb308e0765a3d6eb906c01ebdfe888383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a1505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156129bb57600080fd5b60016000809054906101000a900460ff1660ff161415156129db57600080fd5b6129e4836134e9565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900460ff16151515612a4057600080fd5b600082118015612a54575060018054905082105b80612a8e575067016345785d8a00008210158015612a8d575060016000815481101515612a7d57fe5b9060005260206000209001548211155b5b1515612a9957600080fd5b823b9050600081141515612aac57600080fd5b81600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506001600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548160ff021916908315150217905550505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612baf57600080fd5b60026000809054906101000a900460ff1660ff16141515612bcf57600080fd5b60016000806101000a81548160ff021916908360ff160217905550565b60045481565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c4f57600080fd5b60036000809054906101000a900460ff1660ff16101515612c6f57600080fd5b60018080549050038351141515612c8557600080fd5b6000821480612c9357504282115b1515612c9e57600080fd5b6000821415612cf457600090505b82518160ff161015612cef57612ce26001820160ff16848360ff16815181101515612cd357fe5b90602001906020020151611f14565b8080600101915050612cac565b612df5565b60016005908054612d069291906136cb565b5081600481905550600090505b82518160ff161015612df457828160ff16815181101515612d3057fe5b90602001906020020151600180830160ff16815481101515612d4e57fe5b90600052602060002090015411158015612d9d5750828160ff16815181101515612d7457fe5b9060200190602002015160016000815481101515612d8e57fe5b90600052602060002090015410155b1515612da857600080fd5b828160ff16815181101515612db957fe5b9060200190602002015160056001830160ff16815481101515612dd857fe5b9060005260206000209001819055508080600101915050612d13565b5b505050565b6000808284019050838110151515612e0e57fe5b8091505092915050565b600080612e24836134e9565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060000160009054906101000a900460ff161515612e865760009150612ef9565b6000600454118015612e99575060045442115b15612eba5760056001908054612eb09291906136cb565b5060006004819055505b60018054905081600301541015612ef15760018160030154815481101515612ede57fe5b9060005260206000209001549150612ef9565b806003015491505b50919050565b6000828211151515612f0d57fe5b818303905092915050565b600068056bc75e2d63100000612f37838561366490919063ffffffff16565b811515612f4057fe5b04905092915050565b600081612f6868056bc75e2d631000008561366490919063ffffffff16565b811515612f7157fe5b04905092915050565b60008060008060008060036000809054906101000a900460ff1660ff16141515612fa057fe5b600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020955060008773ffffffffffffffffffffffffffffffffffffffff16141561302657600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1696505b600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209450856001015460088054905011806130c557508560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548560010180549050115b15156130d057600080fd5b85600101546008805490501115613215576130f18660020154600754612f49565b935060009250856001015491505b6008805490508210156131515761314261313360088481548110151561312157fe5b90600052602060002090015486612f18565b84612dfa90919063ffffffff16565b925081806001019250506130ff565b60088054905086600101819055506000831115613214578773ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f1935050505015156131a857600080fd5b7fffab3269bdaceca4d1bbc53e74b982ac2b306687e17e21f1e499e7fdf6751ac88884604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b8560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054856001018054905011156134df57600090508560040160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491505b8460010180549050821015613308576132f96132ea876002015487600101858154811015156132d957fe5b906000526020600020900154612f18565b82612dfa90919063ffffffff16565b905081806001019250506132ae565b84600101805490508660040160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008111156134de578460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb89836000604051602001526040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b151561342d57600080fd5b6102c65a03f1151561343e57600080fd5b50505060405180519050151561345357600080fd5b61346a818660020154612eff90919063ffffffff16565b85600201819055507f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8882604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b5b5050505050505050565b600080600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002091508160000160009054906101000a900460ff16151561365e57738d95b038ca80a986425fa240c3c17fb2b6e9bc6373ffffffffffffffffffffffffffffffffffffffff1663417ba840846000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15156135fc57600080fd5b6102c65a03f1151561360d57600080fd5b505050604051805190509050600081148061362d57506001805490508110155b156136375761365f565b80826003018190555060018260000160006101000a81548160ff0219169083151502179055505b5b505050565b60008060008414156136795760009150613698565b828402905082848281151561368a57fe5b0414151561369457fe5b8091505b5092915050565b8154818355818115116136c6578183600052602060002091820191016136c5919061371d565b5b505050565b82805482825590600052602060002090810192821561370c5760005260206000209182015b8281111561370b5782548255916001019190600101906136f0565b5b509050613719919061371d565b5090565b61373f91905b8082111561373b576000816000905550600101613723565b5090565b905600a165627a7a72305820d6fd230365bcf15b9914e72c0b911b07633a708fc5577ef2202abd3568b75c190029

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

00000000000000000000000035605229648744ecb2e4f008deb870bbcb08222600000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000005000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000000000000000001043561a882930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : receiverAddr (address): 0x35605229648744Ecb2e4f008Deb870BBcB082226
Arg [1] : capAmounts (uint256[]): 300000000000000000000,0,0
Arg [2] : fee (uint256): 5

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 00000000000000000000000035605229648744ecb2e4f008deb870bbcb082226
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [4] : 00000000000000000000000000000000000000000000001043561a8829300000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000000


Swarm Source

bzzr://d6fd230365bcf15b9914e72c0b911b07633a708fc5577ef2202abd3568b75c19

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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