Contract Overview
Balance: 0.11906 Ether
Ether Value: $13.99 (@ $117.47/ETH)
Transactions: 1279 txns
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x210efca155797119a5b0f1cfde64ca1fe55ec544at txn 0xbb7e84297402e4013ded4c899802fa1dbaf8e2bc7130bf8e804a6174229c34b8
Token Balance:
 Latest 25 transactions from a total of 1279 transactions
(+6 PendingTxns)

TxHash Age From To Value [TxFee]
0x1d5bb5509ce9c3668e9d676a2c3a785dfdfaf49bead2422b8f9181ba449f5093(pending)0x210efca155797119a5b0f1cfde64ca1fe55ec544  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0x9bd03866645289e5a15a2b7127f3a9dadf41944b9cb2a94f99c2e01d33cdf73d(pending)0x210efca155797119a5b0f1cfde64ca1fe55ec544  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0xe1aae1b75ab1c9f6ba5c134276a0ef43783ac4531f712fd9a94ea4c847daaa44(pending)0x210efca155797119a5b0f1cfde64ca1fe55ec544  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0x0394b3695cedb8938f1948f2eb405334284649376c901de72c1806f3bf7fccad(pending)0x210efca155797119a5b0f1cfde64ca1fe55ec544  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0xc268abbc9c3f1e71b22469e533cbc5b5247f6e133598bc66051536cce4607871(pending)0x57aa8d0a65a1cbe83a0a409d9097eb12a6eb2b16  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0xfd4df3f075b89f8d9ea8292f4b55cebf274f5c840dee0e709a42e69dd427edb0(pending)0x57aa8d0a65a1cbe83a0a409d9097eb12a6eb2b16  IN  0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether(Pending)
0x1635b830b0822bc3ba0b0de96149adaef35831d831ce2f7193e55a2385c55d4f7 hrs 32 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.01669485
0xe34efe8ab0075ec7b0cf78c0cf5893ec8a9a3ad4272533f3ae4d16e6167d47cb7 hrs 46 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00334367475
0xb8b0bab37210acb999575974ba1aee94c55a668fb84d5d109c577c345ad8a78d8 hrs 4 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.0032161805
0x94ef3632d8a215ac55bc16dad503cce54ca9804eebec03b20c02aa1d0786edfa8 hrs 13 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00618291375
0x45e512990eebbfc50682ca717da9fbc5399d1a26e9b82bee5dfd5cad17dee0b58 hrs 51 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.007859098
0x4f357927d01b11e4a2bd6b69024d24b2a486ce0c6cf4a6116a8ec8d709b90dbe9 hrs 3 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.0012787905
0xe25cb65600b9bf054d610a2cf73510126d09e3be2f02753ffa4f0ce64a7a686d9 hrs 6 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.001020266
0xd46417948547ac200d4a0928e6d288044a7d95075421d13ed830c4f467aeac789 hrs 8 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00295723675
0xe78811939d822e79d11249c8fba36c90e5a1b95c5c0fcd7265ab6e6c09a250599 hrs 12 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.003085979
0x008b3414362cb46ef2d5f88f251f8ad0cbeb3cc51a81120bc99fcdf0ca36e0549 hrs 16 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.001020682
0x50c880213baf46c5180df7b5ff39896653634a8e15b28d7ad349b047eddabb5a9 hrs 20 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00140732475
0x32f61f466cdc6d173e33392aee22367fff83823a3058b05acd2f2886088c87529 hrs 24 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00244080525
0x69ed35728796cac30c135b4440e422b4b8548249f93ee6637262e0ba06b9bf0510 hrs 49 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00114984025
0xb5fdc32e79186843312d4626dbf27b7cce1f8769dd5507b082302737c7cd540b10 hrs 54 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.003086395
0xb981259814571cec84a03490e105492dac05ff11c2dbf4c50443864659d6002d11 hrs 4 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00244018125
0x4792fd81ccf434cb2afb5924884fa8dc886dbed811e1138620d0f52409037f3a11 hrs 8 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00230443525
0xdbf0ecb2ce35ee4f504a7ffa18a9219fd5f8b4d3b0e825b9a0b28dca3f36739711 hrs 10 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00488638475
0x40e726d0db01f014ab7e1ee5760ce1cd29619110da3f3c36565a1b15b768757c11 hrs 18 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.0007557745
0xe8ce85ddd5cf5c8c01a4219593288b08bbe8201d3cf52eaf3a19d1d8c9e1740711 hrs 23 mins ago0x0dd4edb907b32f8621db52efc61c64fbd99f68a6  IN   0x4459b42d034330ecc1e4d604c0a5c855b857df2c0 Ether0.00101430225
[ 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
0x30dad8fcef4293f266c23fb5ad0527ed4c15fa04ef8240face48660fb7608614704867212 days 22 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0054 Ether
0x8c04e69c9ace4393d86018773017049df82387e650db2caef655db097cc03b00704792213 days 1 hr ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0005 Ether
0x5b7faa1d6ba088a6aabebed36510b0b917b207152ea8bf24d5687cce4725f414702789016 days 15 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0035 Ether
0x23ecce2f413fff0654f0c19e6baece6b656a2b7c668157cdd7d9138ce32c6593702767216 days 16 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00285 Ether
0x84cd916a0ca73e843fe4f70406f3bec3a4348644917f731d0da358b58a7c7363702746616 days 17 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00015 Ether
0x33bdcd0dba748b8e46680424c6ee4f761acb7a8a08d2b8c26f82a72d421413e9702708516 days 19 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0036 Ether
0xb03562158e603f0f8a537bcd67450ec8fca84c1eca833b0cab57be489ce0a0ae702679416 days 20 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0064 Ether
0x1c4f79810fbd58492ff0e05d1679758787ee7c4dfe8dd6226e14a1b384cea2eb702060417 days 22 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0064 Ether
0x48bde14ee985ba2533eb567193d9aa6ede3e9b01fb7cdb686f582933906230b9702047317 days 23 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0044 Ether
0x269372530c1fab376d2de10ef30a6fabe91772b93f2531a1aa0f60a1e1b7131a702041417 days 23 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00395 Ether
0x7854d5209c9cae0cfd719d21f5c38ffaeb62d23c1a25ec4c7d9502c26209ef42702012818 days 44 mins ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00505 Ether
0x8be7ab6e730b834a1ccf7f2351116b63d7f7f82a1acb1f6a49acb6b2f89df5b2700990119 days 20 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0072 Ether
0x6243215a1de595cec3e23d685a8c1a5c5a235a92e1eaaa1d4727bfb66129f983699975721 days 16 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0038 Ether
0xf137ff83f3e65745bef27a34191b25ef823c958169242f22309099c3f3d1e7ca699955921 days 17 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.0034 Ether
0x4afe6141ced5cda17e2ceca174efab5a092ee78263ecbf54beba5d31118a25b7699950221 days 17 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00396 Ether
0x458dc7ece007356dafec8309134ff42999fa9de61800e6e93dbb742ac15f7559699913721 days 18 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00312 Ether
0x3b42bf5a1fb5f7a5545db06774e5668303185dd88395a09cfebbdf40b5ffe20a699892421 days 19 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00268 Ether
0xc5a34221bdaf0386629761feb076e73ffdac7b1170284461d63c7790a11f03d9698783523 days 16 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00392 Ether
0xc125e07023a7a8bd57ecf7e3c6025607b33e409f1cb19fe7c34efc21ac6563b4696952926 days 18 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00196 Ether
0xc01267460f3ca35e7762a6488985b0f3e3bde41fabd07036880f92085458b3dc696871926 days 21 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00196 Ether
0x51d1c4ba71a647d5af5a42146df080bab03bd4f23fed25f0b0c0f70b642d202e692944133 days 13 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.002 Ether
0x40241d3dc729a51a9679c91b911781d096c39a586cdc9ec05f062efc300e2f26692272934 days 16 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.002 Ether
0x7b4b8914ea57785c9b0b1857b4ebc5e980f817eef8d14ff1a83ccfbfd8600b42691747535 days 14 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.002 Ether
0xf6152bdb7c4dc803a25e7f26a7b5fe9a6fe92a5304ed36f39c0e96f0f80676c7691744235 days 14 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00166 Ether
0xd6326c3e74c294f33432bdf172fc0db200bfb80e5ba8f7c3f2f4421f8d78e352691666735 days 17 hrs ago0x4459b42d034330ecc1e4d604c0a5c855b857df2c0x210efca155797119a5b0f1cfde64ca1fe55ec5440.00198 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity), NestedArrayFunctionCallDecoder (medium-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: DappleAirdrops
Compiler Text: v0.4.19+commit.c4cbbb05
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

/***
 * ██████╗ █████╗██████╗██████╗██╗    ███████╗     █████╗████████╗██████╗██████╗ ██████╗██████╗███████╗
 * ██╔══████╔══████╔══████╔══████║    ██╔════╝    ██╔══██████╔══████╔══████╔══████╔═══████╔══████╔════╝
 * ██║  ███████████████╔██████╔██║    █████╗      ███████████████╔██║  ████████╔██║   ████████╔███████╗
 * ██║  ████╔══████╔═══╝██╔═══╝██║    ██╔══╝      ██╔══██████╔══████║  ████╔══████║   ████╔═══╝╚════██║
 * ██████╔██║  ████║    ██║    ██████████████╗    ██║  ██████║  ████████╔██║  ██╚██████╔██║    ███████║
 * ╚═════╝╚═╝  ╚═╚═╝    ╚═╝    ╚══════╚══════╝    ╚═╝  ╚═╚═╚═╝  ╚═╚═════╝╚═╝  ╚═╝╚═════╝╚═╝    ╚══════╝
 *        
 * MIT License
 *
 * Copyright (c) 2018 Dapple Airdrops
 * 
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 * 
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 * 
 * @author Zenos Pavlakou
 */
 
pragma solidity ^0.4.19;

library SafeMath {
    
    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        // Gas optimization: this is cheaper than asserting '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;
        }
        
        c = a * b;
        assert(c / a == b);
        return c;
    }
    

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }


    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }


    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}



contract Ownable {
    
    address public owner;
    
    event OwnershipTransferred(address indexed from, address indexed to);
    
    
    /**
     * Constructor assigns ownership to the address used to deploy the contract.
     * */
    function Ownable() public {
        owner = msg.sender;
    }


    /**
     * Any function with this modifier in its method signature can only be executed by
     * the owner of the contract. Any attempt made by any other account to invoke the 
     * functions with this modifier will result in a loss of gas and the contract's state
     * will remain untampered.
     * */
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    /**
     * Allows for the transfer of ownership to another address;
     * 
     * @param _newOwner The address to be assigned new ownership.
     * */
    function transferOwnership(address _newOwner) public onlyOwner {
        require(
            _newOwner != address(0)
            && _newOwner != owner 
        );
        OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}



/**
 * Contract acts as an interface between the DappleAirdrops contract and all ERC20 compliant
 * tokens. 
 * */
contract ERCInterface {
    function transferFrom(address _from, address _to, uint256 _value) public;
    function balanceOf(address who) constant public returns (uint256);
    function allowance(address owner, address spender) constant public returns (uint256);
    function transfer(address to, uint256 value) public returns(bool);
}



contract DappleAirdrops is Ownable {
    
    using SafeMath for uint256;
    
    mapping (address => uint256) public bonusDropsOf;
    mapping (address => uint256) public ethBalanceOf;
    mapping (address => bool) public tokenIsBanned;
    mapping (address => uint256) public trialDrops;
        
    uint256 public rate;
    uint256 public dropUnitPrice;
    uint256 public bonus;
    uint256 public maxDropsPerTx;
    uint256 public maxTrialDrops;
    string public constant website = "www.dappleairdrops.com";
    
    event BonusCreditGranted(address indexed to, uint256 credit);
    event BonusCreditRevoked(address indexed from, uint256 credit);
    event CreditPurchased(address indexed by, uint256 etherValue, uint256 credit);
    event AirdropInvoked(address indexed by, uint256 creditConsumed);
    event BonustChanged(uint256 from, uint256 to);
    event TokenBanned(address indexed tokenAddress);
    event TokenUnbanned(address indexed tokenAddress);
    event EthWithdrawn(address indexed by, uint256 totalWei);
    event RateChanged(uint256 from, uint256 to);
    event MaxDropsChanged(uint256 from, uint256 to);
    event RefundIssued(address indexed to, uint256 totalWei);
    event ERC20TokensWithdrawn(address token, address sentTo, uint256 value);

    
    /**
     * Constructor sets the rate such that 1 ETH = 10,000 credits (i.e., 10,000 airdrop recipients)
     * which equates to a unit price of 0.00001 ETH per airdrop recipient. The bonus percentage
     * is set to 20% but is subject to change. Bonus credits will only be issued after once normal
     * credits have been used (unless credits have been granted to an address by the owner of the 
     * contract).
     * */
    function DappleAirdrops() public {
        rate = 10000;
        dropUnitPrice = 1e14; 
        bonus = 20;
        maxDropsPerTx = 100;
        maxTrialDrops = 100;
    }
    
    
    /**
     * Checks whether or not an ERC20 token has used its free trial of 100 drops. This is a constant 
     * function which does not alter the state of the contract and therefore does not require any gas 
     * or a signature to be executed. 
     * 
     * @param _addressOfToken The address of the token being queried.
     * 
     * @return true if the token being queried has not used its 100 first free trial drops, false
     * otherwise.
     * */
    function tokenHasFreeTrial(address _addressOfToken) public view returns(bool) {
        return trialDrops[_addressOfToken] < maxTrialDrops;
    }
    
    
    /**
     * Checks how many remaining free trial drops a token has.
     * 
     * @param _addressOfToken the address of the token being queried.
     * 
     * @return the total remaining free trial drops of a token.
     * */
    function getRemainingTrialDrops(address _addressOfToken) public view returns(uint256) {
        if(tokenHasFreeTrial(_addressOfToken)) {
            return maxTrialDrops.sub(trialDrops[_addressOfToken]);
        } 
        return 0;
    }
    
    
    /**
     * Allows for the price of drops to be changed by the owner of the contract. Any attempt made by 
     * any other account to invoke the function will result in a loss of gas and the price will remain 
     * untampered.
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function setRate(uint256 _newRate) public onlyOwner returns(bool) {
        require(
            _newRate != rate 
            && _newRate > 0
        );
        RateChanged(rate, _newRate);
        rate = _newRate;
        uint256 eth = 1 ether;
        dropUnitPrice = eth.div(rate);
        return true;
    }
    
    
    function getRate() public view returns(uint256) {
        return rate;
    }

    
    /**
     * Allows for the maximum number of participants to be queried. This is a constant function 
     * which does not alter the state of the contract and therefore does not require any gas or a
     * signature to be executed. 
     * 
     * @return the maximum number of recipients per transaction.
     * */
    function getMaxDropsPerTx() public view returns(uint256) {
        return maxDropsPerTx;
    }
    
    
    /**
     * Allows for the maximum number of recipients per transaction to be changed by the owner. 
     * Any attempt made by any other account to invoke the function will result in a loss of gas 
     * and the maximum number of recipients will remain untampered.
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function setMaxDrops(uint256 _maxDrops) public onlyOwner returns(bool) {
        require(_maxDrops >= 100);
        MaxDropsChanged(maxDropsPerTx, _maxDrops);
        maxDropsPerTx = _maxDrops;
        return true;
    }
    
    /**
     * Allows for the bonus to be changed at any point in time by the owner of the contract. Any
     * attempt made by any other account to invoke the function will result in a loss of gas and 
     * the bonus will remain untampered.
     * 
     * @param _newBonus The value of the new bonus to be set.
     * */
    function setBonus(uint256 _newBonus) public onlyOwner returns(bool) {
        require(bonus != _newBonus);
        BonustChanged(bonus, _newBonus);
        bonus = _newBonus;
    }
    
    
    /**
     * Allows for bonus drops to be granted to a recipient address by the owner of the contract. 
     * Any attempt made by any other account to invoke the function will result in a loss of gas 
     * and the bonus drops of the recipient will remain untampered.
     * 
     * @param _addr The address which will receive bonus credits.
     * @param _bonusDrops The amount of bonus drops to be granted.
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function grantBonusDrops(address _addr, uint256 _bonusDrops) public onlyOwner returns(bool) {
        require(
            _addr != address(0) 
            && _bonusDrops > 0
        );
        bonusDropsOf[_addr] = bonusDropsOf[_addr].add(_bonusDrops);
        BonusCreditGranted(_addr, _bonusDrops);
        return true;
    }
    
    
    /**
     * Allows for bonus drops of an address to be revoked by the owner of the contract. Any 
     * attempt made by any other account to invoke the function will result in a loss of gas
     * and the bonus drops of the recipient will remain untampered.
     * 
     * @param _addr The address to revoke bonus credits from.
     * @param _bonusDrops The amount of bonus drops to be revoked.
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function revokeBonusCreditOf(address _addr, uint256 _bonusDrops) public onlyOwner returns(bool) {
        require(
            _addr != address(0) 
            && bonusDropsOf[_addr] >= _bonusDrops
        );
        bonusDropsOf[_addr] = bonusDropsOf[_addr].sub(_bonusDrops);
        BonusCreditRevoked(_addr, _bonusDrops);
        return true;
    }
    
    
    /**
     * Allows for the credit of an address to be queried. This is a constant function which
     * does not alter the state of the contract and therefore does not require any gas or a
     * signature to be executed. 
     * 
     * @param _addr The address of which to query the credit balance of. 
     * 
     * @return The total amount of credit the address has (minus any bonus credits).
     * */
    function getDropsOf(address _addr) public view returns(uint256) {
        return (ethBalanceOf[_addr].mul(rate)).div(10 ** 18);
    }
    
    
    /**
     * Allows for the bonus credit of an address to be queried. This is a constant function 
     * which does not alter the state of the contract and therefore does not require any gas 
     * or a signature to be executed. 
     * 
     * @param _addr The address of which to query the bonus credits. 
     * 
     * @return The total amount of bonus credit the address has (minus non-bonus credit).
     * */
    function getBonusDropsOf(address _addr) public view returns(uint256) {
        return bonusDropsOf[_addr];
    }
    
    
    /**
     * Allows for the total credit (bonus + non-bonus) of an address to be queried. This is a 
     * constant function which does not alter the state of the contract and therefore does not  
     * require any gas or a signature to be executed. 
     * 
     * @param _addr The address of which to query the total credits. 
     * 
     * @return The total amount of credit the address has (bonus + non-bonus credit).
     * */
    function getTotalDropsOf(address _addr) public view returns(uint256) {
        return getDropsOf(_addr).add(getBonusDropsOf(_addr));
    }
    
    
    /**
     * Allows for the total ETH balance of an address to be queried. This is a constant
     * function which does not alter the state of the contract and therefore does not  
     * require any gas or a signature to be executed. 
     * 
     * @param _addr The address of which to query the total ETH balance. 
     * 
     * @return The total amount of ETH balance the address has.
     * */
    function getEthBalanceOf(address _addr) public view returns(uint256) {
        return ethBalanceOf[_addr];
    }

    
    /**
     * Allows for suspected fraudulent ERC20 tokens to be banned from being airdropped by the 
     * owner of the contract. Any attempt made by any other account to invoke the function will 
     * result in a loss of gas and the token to remain unbanned.
     * 
     * @param _tokenAddr The contract address of the ERC20 token to be banned from being airdropped. 
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function banToken(address _tokenAddr) public onlyOwner returns(bool) {
        require(!tokenIsBanned[_tokenAddr]);
        tokenIsBanned[_tokenAddr] = true;
        TokenBanned(_tokenAddr);
        return true;
    }
    
    
    /**
     * Allows for previously suspected fraudulent ERC20 tokens to become unbanned by the owner
     * of the contract. Any attempt made by any other account to invoke the function will 
     * result in a loss of gas and the token to remain banned.
     * 
     * @param _tokenAddr The contract address of the ERC20 token to be banned from being airdropped. 
     * 
     * @return true if function executes successfully, false otherwise.
     **/
    function unbanToken(address _tokenAddr) public onlyOwner returns(bool) {
        require(tokenIsBanned[_tokenAddr]);
        tokenIsBanned[_tokenAddr] = false;
        TokenUnbanned(_tokenAddr);
        return true;
    }
    
    
    /**
     * Allows for the allowance of a token from its owner to this contract to be queried. 
     * 
     * As part of the ERC20 standard all tokens which fall under this category have an allowance 
     * function which enables owners of tokens to allow (or give permission) to another address 
     * to spend tokens on behalf of the owner. This contract uses this as part of its protocol.
     * Users must first give permission to the contract to transfer tokens on their behalf, however,
     * this does not mean that the tokens will ever be transferrable without the permission of the 
     * owner. This is a security feature which was implemented on this contract. It is not possible
     * for the owner of this contract or anyone else to transfer the tokens which belong to others. 
     * 
     * @param _addr The address of the token's owner.
     * @param _addressOfToken The contract address of the ERC20 token.
     * 
     * @return The ERC20 token allowance from token owner to this contract. 
     * */
    function getTokenAllowance(address _addr, address _addressOfToken) public view returns(uint256) {
        ERCInterface token = ERCInterface(_addressOfToken);
        return token.allowance(_addr, address(this));
    }
    
    
    /**
     * Allows users to buy and receive credits automatically when sending ETH to the contract address.
     * */
    function() public payable {
        ethBalanceOf[msg.sender] = ethBalanceOf[msg.sender].add(msg.value);
        CreditPurchased(msg.sender, msg.value, msg.value.mul(rate));
    }

    
    /**
     * Allows users to withdraw their ETH for drops which they have bought and not used. This 
     * will result in the credit of the user being set back to 0. However, bonus credits will 
     * remain the same because they are granted when users use their drops. 
     * 
     * @param _eth The amount of ETH to withdraw
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function withdrawEth(uint256 _eth) public returns(bool) {
        require(
            ethBalanceOf[msg.sender] >= _eth
            && _eth > 0 
        );
        uint256 toTransfer = _eth;
        ethBalanceOf[msg.sender] = ethBalanceOf[msg.sender].sub(_eth);
        msg.sender.transfer(toTransfer);
        EthWithdrawn(msg.sender, toTransfer);
    }
    
    
    /**
     * Allows for refunds to be made by the owner of the contract. Any attempt made by any other account 
     * to invoke the function will result in a loss of gas and no refunds will be made.
     * */
    function issueRefunds(address[] _addrs) public onlyOwner returns(bool) {
        require(_addrs.length <= maxDropsPerTx);
        for(uint i = 0; i < _addrs.length; i++) {
            if(_addrs[i] != address(0) && ethBalanceOf[_addrs[i]] > 0) {
                uint256 toRefund = ethBalanceOf[_addrs[i]];
                ethBalanceOf[_addrs[i]] = 0;
                _addrs[i].transfer(toRefund);
                RefundIssued(_addrs[i], toRefund);
            }
        }
    }
    
    
    /**
     * Allows for the distribution of an ERC20 token to be transferred to up to 100 recipients at 
     * a time. This function only facilitates batch transfers of constant values (i.e., all recipients
     * will receive the same amount of tokens).
     * 
     * @param _addressOfToken The contract address of an ERC20 token.
     * @param _recipients The list of addresses which will receive tokens. 
     * @param _value The amount of tokens all addresses will receive. 
     * 
     * @return true if function executes successfully, false otherwise.
     * */
    function singleValueAirdrop(address _addressOfToken,  address[] _recipients, uint256 _value) public returns(bool) {
        ERCInterface token = ERCInterface(_addressOfToken);
        require(
            _recipients.length <= maxDropsPerTx 
            && (
                getTotalDropsOf(msg.sender)>= _recipients.length 
                || tokenHasFreeTrial(_addressOfToken) 
            )
            && !tokenIsBanned[_addressOfToken]
        );
        for(uint i = 0; i < _recipients.length; i++) {
            if(_recipients[i] != address(0)) {
                token.transferFrom(msg.sender, _recipients[i], _value);
            }
        }
        if(tokenHasFreeTrial(_addressOfToken)) {
            trialDrops[_addressOfToken] = trialDrops[_addressOfToken].add(_recipients.length);
        } else {
            updateMsgSenderBonusDrops(_recipients.length);
        }
        AirdropInvoked(msg.sender, _recipients.length);
        return true;
    }
    
    
    /**
     * Allows for the distribution of an ERC20 token to be transferred to up to 100 recipients at 
     * a time. This function facilitates batch transfers of differing values (i.e., all recipients
     * can receive different amounts of tokens).
     * 
     * @param _addressOfToken The contract address of an ERC20 token.
     * @param _recipients The list of addresses which will receive tokens. 
     * @param _values The corresponding values of tokens which each address will receive.
     * 
     * @return true if function executes successfully, false otherwise.
     * */    
    function multiValueAirdrop(address _addressOfToken,  address[] _recipients, uint256[] _values) public returns(bool) {
        ERCInterface token = ERCInterface(_addressOfToken);
        require(
            _recipients.length <= maxDropsPerTx 
            && _recipients.length == _values.length 
            && (
                getTotalDropsOf(msg.sender) >= _recipients.length
                || tokenHasFreeTrial(_addressOfToken)
            )
            && !tokenIsBanned[_addressOfToken]
        );
        for(uint i = 0; i < _recipients.length; i++) {
            if(_recipients[i] != address(0) && _values[i] > 0) {
                token.transferFrom(msg.sender, _recipients[i], _values[i]);
            }
        }
        if(tokenHasFreeTrial(_addressOfToken)) {
            trialDrops[_addressOfToken] = trialDrops[_addressOfToken].add(_recipients.length);
        } else {
            updateMsgSenderBonusDrops(_recipients.length);
        }
        AirdropInvoked(msg.sender, _recipients.length);
        return true;
    }
    
    
    /**
     * Invoked internally by the airdrop functions. The purpose of thie function is to grant bonus 
     * drops to users who spend their ETH airdropping tokens, and to remove bonus drops when users 
     * no longer have ETH in their account but do have some bonus drops when airdropping tokens.
     * 
     * @param _drops The amount of recipients which received tokens from the airdrop.
     * */
    function updateMsgSenderBonusDrops(uint256 _drops) internal {
        if(_drops <= getDropsOf(msg.sender)) {
            bonusDropsOf[msg.sender] = bonusDropsOf[msg.sender].add(_drops.mul(bonus).div(100));
            ethBalanceOf[msg.sender] = ethBalanceOf[msg.sender].sub(_drops.mul(dropUnitPrice));
            owner.transfer(_drops.mul(dropUnitPrice));
        } else {
            uint256 remainder = _drops.sub(getDropsOf(msg.sender));
            if(ethBalanceOf[msg.sender] > 0) {
                bonusDropsOf[msg.sender] = bonusDropsOf[msg.sender].add(getDropsOf(msg.sender).mul(bonus).div(100));
                owner.transfer(ethBalanceOf[msg.sender]);
                ethBalanceOf[msg.sender] = 0;
            }
            bonusDropsOf[msg.sender] = bonusDropsOf[msg.sender].sub(remainder);
        }
    }
    

    /**
     * Allows for any ERC20 tokens which have been mistakenly  sent to this contract to be returned 
     * to the original sender by the owner of the contract. Any attempt made by any other account 
     * to invoke the function will result in a loss of gas and no tokens will be transferred out.
     * 
     * @param _addressOfToken The contract address of an ERC20 token.
     * @param _recipient The address which will receive tokens. 
     * @param _value The amount of tokens to refund.
     * 
     * @return true if function executes successfully, false otherwise.
     * */  
    function withdrawERC20Tokens(address _addressOfToken,  address _recipient, uint256 _value) public onlyOwner returns(bool){
        require(
            _addressOfToken != address(0)
            && _recipient != address(0)
            && _value > 0
        );
        ERCInterface token = ERCInterface(_addressOfToken);
        token.transfer(_recipient, _value);
        ERC20TokensWithdrawn(_addressOfToken, _recipient, _value);
        return true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"maxDropsPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newBonus","type":"uint256"}],"name":"setBonus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddr","type":"address"}],"name":"banToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addressOfToken","type":"address"}],"name":"tokenHasFreeTrial","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_bonusDrops","type":"uint256"}],"name":"grantBonusDrops","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRate","type":"uint256"}],"name":"setRate","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMaxDropsPerTx","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"tokenIsBanned","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getTotalDropsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addrs","type":"address[]"}],"name":"issueRefunds","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"trialDrops","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getDropsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addressOfToken","type":"address"},{"name":"_recipients","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"multiValueAirdrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ethBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bonus","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"bonusDropsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addressOfToken","type":"address"},{"name":"_recipients","type":"address[]"},{"name":"_value","type":"uint256"}],"name":"singleValueAirdrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getBonusDropsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dropUnitPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addressOfToken","type":"address"}],"name":"getRemainingTrialDrops","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getEthBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_addressOfToken","type":"address"},{"name":"_recipient","type":"address"},{"name":"_value","type":"uint256"}],"name":"withdrawERC20Tokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"website","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxTrialDrops","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_eth","type":"uint256"}],"name":"withdrawEth","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"},{"name":"_bonusDrops","type":"uint256"}],"name":"revokeBonusCreditOf","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_addressOfToken","type":"address"}],"name":"getTokenAllowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_maxDrops","type":"uint256"}],"name":"setMaxDrops","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAddr","type":"address"}],"name":"unbanToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"credit","type":"uint256"}],"name":"BonusCreditGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"credit","type":"uint256"}],"name":"BonusCreditRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"by","type":"address"},{"indexed":false,"name":"etherValue","type":"uint256"},{"indexed":false,"name":"credit","type":"uint256"}],"name":"CreditPurchased","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"by","type":"address"},{"indexed":false,"name":"creditConsumed","type":"uint256"}],"name":"AirdropInvoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"BonustChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenAddress","type":"address"}],"name":"TokenBanned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenAddress","type":"address"}],"name":"TokenUnbanned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"by","type":"address"},{"indexed":false,"name":"totalWei","type":"uint256"}],"name":"EthWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"RateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"uint256"},{"indexed":false,"name":"to","type":"uint256"}],"name":"MaxDropsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"totalWei","type":"uint256"}],"name":"RefundIssued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"sentTo","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ERC20TokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
6060604052341561000f57600080fd5b60008054600160a060020a033316600160a060020a0319909116179055612710600555655af3107a40006006556014600755606460088190556009556118778061005a6000396000f3006060604052600436106101875763ffffffff60e060020a60003504166303a19a4f811461021d5780630b98f9751461024257806318fe1a8d1461026c57806323a0fb021461028b5780632a501a43146102aa5780632c4e722e146102cc57806334fcf437146102df5780633f92edaf146102f55780634db67caf146103085780634f95e96014610327578063528976de14610346578063656b6b6b14610395578063679aefce146103b457806371f124c5146103c7578063724ef94c146103e65780637252bbf21461048357806375b4d78c146104a25780638da5cb5b146104b55780638eb5f58e146104e45780639d06583814610503578063a379298514610562578063a39a2b7614610581578063adc7612614610594578063b28fc973146105b3578063bcdd1e13146105d2578063beb0a416146105fa578063c13e285d14610684578063c311d04914610697578063c44412e3146106ad578063ea7ee010146106cf578063eb1cfa82146106f4578063f2fde38b1461070a578063f332a2451461072b575b600160a060020a0333166000908152600260205260409020546101b0903463ffffffff61074a16565b600160a060020a0333166000818152600260205260409020919091556005547fc4174c525ef524021f6e3727a9bbe7fa797780670e51c9cd76ceb8e5dfe6c97b90349061020490829063ffffffff61076016565b60405191825260208201526040908101905180910390a2005b341561022857600080fd5b61023061078f565b60405190815260200160405180910390f35b341561024d57600080fd5b610258600435610795565b604051901515815260200160405180910390f35b341561027757600080fd5b610258600160a060020a0360043516610805565b341561029657600080fd5b610258600160a060020a03600435166108a0565b34156102b557600080fd5b610258600160a060020a03600435166024356108c2565b34156102d757600080fd5b610230610985565b34156102ea57600080fd5b61025860043561098b565b341561030057600080fd5b610230610a2d565b341561031357600080fd5b610258600160a060020a0360043516610a33565b341561033257600080fd5b610230600160a060020a0360043516610a48565b341561035157600080fd5b6102586004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610a6b95505050505050565b34156103a057600080fd5b610230600160a060020a0360043516610c35565b34156103bf57600080fd5b610230610c47565b34156103d257600080fd5b610230600160a060020a0360043516610c4d565b34156103f157600080fd5b61025860048035600160a060020a031690604460248035908101908301358060208082020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c9595505050505050565b341561048e57600080fd5b610230600160a060020a0360043516610eac565b34156104ad57600080fd5b610230610ebe565b34156104c057600080fd5b6104c8610ec4565b604051600160a060020a03909116815260200160405180910390f35b34156104ef57600080fd5b610230600160a060020a0360043516610ed3565b341561050e57600080fd5b61025860048035600160a060020a03169060446024803590810190830135806020808202016040519081016040528093929190818152602001838360200280828437509496505093359350610ee592505050565b341561056d57600080fd5b610230600160a060020a036004351661100d565b341561058c57600080fd5b610230611028565b341561059f57600080fd5b610230600160a060020a036004351661102e565b34156105be57600080fd5b610230600160a060020a0360043516611078565b34156105dd57600080fd5b610258600160a060020a0360043581169060243516604435611093565b341561060557600080fd5b61060d6111bd565b60405160208082528190810183818151815260200191508051906020019080838360005b83811015610649578082015183820152602001610631565b50505050905090810190601f1680156106765780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068f57600080fd5b6102306111f4565b34156106a257600080fd5b6102586004356111fa565b34156106b857600080fd5b610258600160a060020a03600435166024356112e5565b34156106da57600080fd5b610230600160a060020a03600435811690602435166113c1565b34156106ff57600080fd5b610258600435611444565b341561071557600080fd5b610729600160a060020a03600435166114b3565b005b341561073657600080fd5b610258600160a060020a036004351661156a565b60008282018381101561075957fe5b9392505050565b600082151561077157506000610789565b5081810281838281151561078157fe5b041461078957fe5b92915050565b60085481565b6000805433600160a060020a039081169116146107b157600080fd5b6007548214156107c057600080fd5b7fc233b8877183b2d7aeb5d3baf2b545240e5c94d7a1f5ed6938ff87a1cf95a2d16007548360405191825260208201526040908101905180910390a160079190915590565b6000805433600160a060020a0390811691161461082157600080fd5b600160a060020a03821660009081526003602052604090205460ff161561084757600080fd5b600160a060020a03821660008181526003602052604090819020805460ff191660011790557f5f9fbe3bc9355d7eb80002cf096327839eecbdf5ffc15955fbe7609433b18c55905160405180910390a25060015b919050565b600954600160a060020a03821660009081526004602052604090205410919050565b6000805433600160a060020a039081169116146108de57600080fd5b600160a060020a038316158015906108f65750600082115b151561090157600080fd5b600160a060020a03831660009081526001602052604090205461092a908363ffffffff61074a16565b600160a060020a0384166000818152600160205260409081902092909255907f17641426a9871fbd505cf22302be09d58b40768a741ae1b9a270bdb46ff72cf69084905190815260200160405180910390a250600192915050565b60055481565b60008054819033600160a060020a039081169116146109a957600080fd5b60055483141580156109bb5750600083115b15156109c657600080fd5b7f4ac9052a820bf4f8c02d7588587cae835573b5b99ea7ad4ca002f17f319f71866005548460405191825260208201526040908101905180910390a1506005829055670de0b6b3a7640000610a21818463ffffffff61160216565b60065550600192915050565b60085490565b60036020526000908152604090205460ff1681565b6000610789610a568361100d565b610a5f84610c4d565b9063ffffffff61074a16565b600080548190819033600160a060020a03908116911614610a8b57600080fd5b60085484511115610a9b57600080fd5b600091505b8351821015610c2e576000848381518110610ab757fe5b90602001906020020151600160a060020a031614158015610b125750600060026000868581518110610ae557fe5b90602001906020020151600160a060020a0316600160a060020a0316815260200190815260200160002054115b15610c235760026000858481518110610b2757fe5b90602001906020020151600160a060020a0316600160a060020a03168152602001908152602001600020549050600060026000868581518110610b6657fe5b90602001906020020151600160a060020a03168152602081019190915260400160002055838281518110610b9657fe5b90602001906020020151600160a060020a031681156108fc0282604051600060405180830381858888f193505050501515610bd057600080fd5b838281518110610bdc57fe5b90602001906020020151600160a060020a03167fa171b6942063c6f2800ce40a780edce37baa2b618571b11eedd1e69e626e7d768260405190815260200160405180910390a25b600190910190610aa0565b5050919050565b60046020526000908152604090205481565b60055490565b600554600160a060020a038216600090815260026020526040812054909161078991670de0b6b3a764000091610c89919063ffffffff61076016565b9063ffffffff61160216565b6000806000859150600854855111158015610cb1575083518551145b8015610cd457508451610cc333610a48565b101580610cd45750610cd4866108a0565b8015610cf95750600160a060020a03861660009081526003602052604090205460ff16155b1515610d0457600080fd5b5060005b8451811015610e02576000858281518110610d1f57fe5b90602001906020020151600160a060020a031614158015610d5557506000848281518110610d4957fe5b90602001906020020151115b15610dfa5781600160a060020a03166323b872dd33878481518110610d7657fe5b90602001906020020151878581518110610d8c57fe5b9060200190602002015160405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610de557600080fd5b6102c65a03f11515610df657600080fd5b5050505b600101610d08565b610e0b866108a0565b15610e5857610e3a8551600160a060020a0388166000908152600460205260409020549063ffffffff61074a16565b600160a060020a038716600090815260046020526040902055610e62565b610e628551611617565b33600160a060020a03167f22a4421eda5c487da9a0a4a06f0c582468448c11c1d02478e2442686d8de589a865160405190815260200160405180910390a250600195945050505050565b60026020526000908152604090205481565b60075481565b600054600160a060020a031681565b60016020526000908152604090205481565b6000806000859150600854855111158015610f1757508451610f0633610a48565b101580610f175750610f17866108a0565b8015610f3c5750600160a060020a03861660009081526003602052604090205460ff16155b1515610f4757600080fd5b5060005b8451811015610e02576000858281518110610f6257fe5b90602001906020020151600160a060020a0316146110055781600160a060020a03166323b872dd33878481518110610f9657fe5b906020019060200201518760405160e060020a63ffffffff8616028152600160a060020a0393841660048201529190921660248201526044810191909152606401600060405180830381600087803b1515610ff057600080fd5b6102c65a03f1151561100157600080fd5b5050505b600101610f4b565b600160a060020a031660009081526001602052604090205490565b60065481565b6000611039826108a0565b1561107057600160a060020a0382166000908152600460205260409020546009546110699163ffffffff61183916565b905061089b565b506000919050565b600160a060020a031660009081526002602052604090205490565b60008054819033600160a060020a039081169116146110b157600080fd5b600160a060020a038516158015906110d15750600160a060020a03841615155b80156110dd5750600083115b15156110e857600080fd5b5083600160a060020a03811663a9059cbb858560006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561114757600080fd5b6102c65a03f1151561115857600080fd5b50505060405180519050507ee763f7778b8ceef7270c89b7d1df1008b0e482da39c43831417733af96fb0d858585604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a1506001949350505050565b60408051908101604052601681527f7777772e646170706c6561697264726f70732e636f6d00000000000000000000602082015281565b60095481565b600160a060020a03331660009081526002602052604081205481908390108015906112255750600083115b151561123057600080fd5b50600160a060020a033316600090815260026020526040902054829061125c908263ffffffff61183916565b600160a060020a03331660008181526002602052604090819020929092559082156108fc0290839051600060405180830381858888f1935050505015156112a257600080fd5b33600160a060020a03167f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b8260405190815260200160405180910390a250919050565b6000805433600160a060020a0390811691161461130157600080fd5b600160a060020a038316158015906113325750600160a060020a038316600090815260016020526040902054829010155b151561133d57600080fd5b600160a060020a038316600090815260016020526040902054611366908363ffffffff61183916565b600160a060020a0384166000818152600160205260409081902092909255907fc1bc87fca69dd3948590175e7c7e66a498d583b1bf99540547fc38e7f10058599084905190815260200160405180910390a250600192915050565b600081600160a060020a03811663dd62ed3e8530856040516020015260405160e060020a63ffffffff8516028152600160a060020a03928316600482015291166024820152604401602060405180830381600087803b151561142257600080fd5b6102c65a03f1151561143357600080fd5b505050604051805195945050505050565b6000805433600160a060020a0390811691161461146057600080fd5b606482101561146e57600080fd5b7f9b7e3ed6ece2694ef31c25bc941a429a17a30546dd406649a5b7178d76c215996008548360405191825260208201526040908101905180910390a150600855600190565b60005433600160a060020a039081169116146114ce57600080fd5b600160a060020a038116158015906114f45750600054600160a060020a03828116911614155b15156114ff57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000805433600160a060020a0390811691161461158657600080fd5b600160a060020a03821660009081526003602052604090205460ff1615156115ad57600080fd5b600160a060020a03821660008181526003602052604090819020805460ff191690557fe9c9a473410d8fd0bb91117f70a4b750bce859ab398b18cc49160f5ff41d66e4905160405180910390a2506001919050565b6000818381151561160f57fe5b049392505050565b600061162233610c4d565b82116117245761166a6116456064610c896007548661076090919063ffffffff16565b600160a060020a0333166000908152600160205260409020549063ffffffff61074a16565b600160a060020a0333166000908152600160205260409020556006546116c09061169b90849063ffffffff61076016565b600160a060020a0333166000908152600260205260409020549063ffffffff61183916565b600160a060020a0333811660009081526002602052604081209290925590546006549116906108fc906116fa90859063ffffffff61076016565b9081150290604051600060405180830381858888f19350505050151561171f57600080fd5b611835565b61173d61173033610c4d565b839063ffffffff61183916565b600160a060020a0333166000908152600260205260408120549192509011156117f2576117836116456064610c8960075461177733610c4d565b9063ffffffff61076016565b600160a060020a0333811660009081526001602090815260408083209490945581546002909152908390205491169181156108fc02919051600060405180830381858888f1935050505015156117d857600080fd5b600160a060020a0333166000908152600260205260408120555b600160a060020a03331660009081526001602052604090205461181b908263ffffffff61183916565b600160a060020a0333166000908152600160205260409020555b5050565b60008282111561184557fe5b509003905600a165627a7a72305820a8090f9412a7d9c8f57e4257f36c53e68d08da3bbae797eb767bd2d9f8077a5f0029

   Swarm Source:
bzzr://a8090f9412a7d9c8f57e4257f36c53e68d08da3bbae797eb767bd2d9f8077a5f

 

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.