Contract 0x682D01dfE0b4D8B3A614487e1e3815E18fC3d4E0

 
Txn Hash
Block
From
To
Value [Txn Fee]
0x7cba98a44e126bbb8e6f63e4de5dc710a362d8e4f6f3fbb74e207d9c540abb5372723272021-05-09 14:52:1811 secs ago0x91468782d8e3d3c2d33cbb3eea93471652440adc IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001843235
0x3092da9436478b0664ff8e849734b36dd202711b3082a057bd9eba6939d3ee7772723132021-05-09 14:51:3653 secs ago0x2f26d574648e53bdc49543c4d24830fe8216c518 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.0008267
0x8e85209ed77c09230ee987908f9320759f35497811e0b687a0ef1fd6a4c40aeb72722602021-05-09 14:48:573 mins ago0x3545aae1a7b96422c9003c63818975ab846bec03 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00216937
0xc0606100239b6ab3faf47012f0b4b10cf6d19ebc6bbba509dfc1eed2e1f708c672722262021-05-09 14:47:035 mins ago0x4d01d11697f00097064d7e05114ecd3843e82867 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.002705355
0x150be8d4419df062b6ffefdd8b741120139247fbdcf44e11e1efc8ad67b7df3072721082021-05-09 14:40:2412 mins ago0x701533cc1ac85fa5f32ec56fe3ea442bd4977e0d IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.000967265
0x6fcb8cb66125a63596f86790588bbe808e8502b098aadde4fa212d4bed6a517472720452021-05-09 14:37:1515 mins ago0x52cfe202577829690c77de816a3774a9f672c844 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00225226
0x7293c0c1ad6aad5a71f68679c9a50cfcd38817e9c6368ad44a171a9ea735b60772720312021-05-09 14:36:3315 mins ago0x064cb0bb4c8abe11935134aee670c032d6833556 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001625805
0xa464856267ef1b1f4f034ed4ff86002c29fddc27f4cfb4645ba520e2332a04bb72718852021-05-09 14:29:1523 mins ago0x395ae7194474d9fab35357c227011c4b5f747741 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001213585
0x7226e7924d7f4f986d2b2e3abb26d08d2d48bd41d16ce2b3106266a5ccb8c07772718762021-05-09 14:28:4823 mins ago0xf9c668b09c47dfb146b03f6bbc0323763ad59b0b IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001625805
0x7e3fb1fa92d56d6602396d0a0133c3bf5484247581ddd6e8e9b67c01c9f9ec3e72717892021-05-09 14:24:2728 mins ago0x1ef0251261760905fbee61f20396ddaae1126787 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.0007517
0x0102ad52ea83640cf30ed2ed59899fabfe5383b2fd1c9e3f496ea7974907060b72717362021-05-09 14:21:4830 mins ago0xed4363757b2c00479f378de27848725dbfd17d18 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001296475
0x8685a5dcc04e3b3c485edf942e5c921d9b60058486daaa29bb775d0669481d1072716952021-05-09 14:19:2333 mins ago0xeabc5cc2be1169849fa7470768b05cefaf6346cd IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.000967265
0x03595b352915d610cb730106cb7c2d00c9bf1a97998803248c39cff92279bd2472716782021-05-09 14:18:2034 mins ago0x3040b76bdd4d73472036cf9845e9a87008123946 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00187609
0xe90fc7d8a61d2b9c211d8eb98f8a86087f6e7971c76ed33a9ca54b41547b991b72716762021-05-09 14:18:1334 mins ago0xe1b3495fd8102bd92f1d2c4f1bebb3c3ae7df70f IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.002111755
0x5c2a612a5c7a093fba25eb05cbcea857a4b3a711749a5511ca1d30735338933072716232021-05-09 14:15:1437 mins ago0x25f89312f39938314b615e85211ff03d5d0088c0 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001720965
0x32cde5e66da3aa3f90fdb6c94fcccf448ea915d20c10cfdc327af59482ae0c8772715372021-05-09 14:10:0142 mins ago0xe341d077a0cfba74f492cd0d06f6be3b7c0af1c9 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.002335875
0x5df310c26179792bc4d5945df7d72e18722f0437b47d930179ba69f60ad04ef772715342021-05-09 14:09:4942 mins ago0x29bd7ce5cc6b30b6666f95f6e904224d624e52a2 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.002139755
0x3242684b1e9a8c0cbd09835cab534229a6d797fa8c4ba0bc1763a846ada018cc72715272021-05-09 14:09:2043 mins ago0x9b411116f92504562edcf3a1b14ae226bc1489fc IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.0007316
0x4b6bdb0ecb2d8f3f9b74adf18f0c22632f9cdcb59fcff15557dd220ab361d52972714982021-05-09 14:07:5144 mins ago0x8363f6d378681d583eea5b740f2eea92135c272c IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001666385
0xc7d195d6c3ebc6c4c93609be14db01d5589473db926f9f50fbaf0fe14918ee1072714982021-05-09 14:07:5144 mins ago0xb77aa2cfe6e6fb76f8e717b79327acac04aaaa11 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00192305
0x0bdfff78a22a8a6eea501ac7a42e659793d006802dbae089c7667e2ac344105c72714942021-05-09 14:07:3944 mins ago0xb77aa2cfe6e6fb76f8e717b79327acac04aaaa11 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.001945075
0x8375107fa17e7f9a5ba6c8bd495978543321be5d0b6b42ad7894add3469642c872714862021-05-09 14:07:1545 mins ago0x4b1f37f4521ca1dffd0ce423937e160acaafe9ac IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00216937
0x433bf5730181c384b00af0bf851efd2cf0caa4da22ee7bb3baee4bf2b473753f72714772021-05-09 14:06:4845 mins ago0x782a43e2e09a82f292256ef117a3b92509ec043d IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.0007316
0x8bb1da54dd3001d0ff69aa7824754f43a4bd9b1e67518911f83642d8fd53c88372714112021-05-09 14:03:3048 mins ago0xb77aa2cfe6e6fb76f8e717b79327acac04aaaa11 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00157822
0x55d984a4cc766e5eb0947af7b4405ac7f6a9af47fd94fab2c74d2996824693c872714032021-05-09 14:03:0649 mins ago0x9966e132471557b2cfe06d4b6c6aad4dd516e2c6 IN  0x682d01dfe0b4d8b3a614487e1e3815e18fc3d4e00 BNB0.00216937
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Faucet

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 1 : faucet.sol
pragma solidity ^0.4.25;

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

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

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

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

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

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

interface ISwap {
    /**
     * @dev Pricing function for converting between TRX && Tokens.
     * @param input_amount Amount of TRX or Tokens being sold.
     * @param input_reserve Amount of TRX or Tokens (input type) in exchange reserves.
     * @param output_reserve Amount of TRX or Tokens (output type) in exchange reserves.
     * @return Amount of TRX or Tokens bought.
     */
    function getInputPrice(
        uint256 input_amount,
        uint256 input_reserve,
        uint256 output_reserve
    ) external view returns (uint256);

    /**
     * @dev Pricing function for converting between TRX && Tokens.
     * @param output_amount Amount of TRX or Tokens being bought.
     * @param input_reserve Amount of TRX or Tokens (input type) in exchange reserves.
     * @param output_reserve Amount of TRX or Tokens (output type) in exchange reserves.
     * @return Amount of TRX or Tokens sold.
     */
    function getOutputPrice(
        uint256 output_amount,
        uint256 input_reserve,
        uint256 output_reserve
    ) external view returns (uint256);

    /**
     * @notice Convert TRX to Tokens.
     * @dev User specifies exact input (msg.value) && minimum output.
     * @param min_tokens Minimum Tokens bought.
     * @return Amount of Tokens bought.
     */
    function trxToTokenSwapInput(uint256 min_tokens)
    external
    payable
    returns (uint256);

    /**
     * @notice Convert TRX to Tokens.
     * @dev User specifies maximum input (msg.value) && exact output.
     * @param tokens_bought Amount of tokens bought.
     * @return Amount of TRX sold.
     */
    function trxToTokenSwapOutput(uint256 tokens_bought)
    external
    payable
    returns (uint256);

    /**
     * @notice Convert Tokens to TRX.
     * @dev User specifies exact input && minimum output.
     * @param tokens_sold Amount of Tokens sold.
     * @param min_trx Minimum TRX purchased.
     * @return Amount of TRX bought.
     */
    function tokenToTrxSwapInput(uint256 tokens_sold, uint256 min_trx)
    external
    returns (uint256);

    /**
     * @notice Convert Tokens to TRX.
     * @dev User specifies maximum input && exact output.
     * @param trx_bought Amount of TRX purchased.
     * @param max_tokens Maximum Tokens sold.
     * @return Amount of Tokens sold.
     */
    function tokenToTrxSwapOutput(uint256 trx_bought, uint256 max_tokens)
    external
    returns (uint256);

    /***********************************|
    |         Getter Functions          |
    |__________________________________*/

    /**
     * @notice Public price function for TRX to Token trades with an exact input.
     * @param trx_sold Amount of TRX sold.
     * @return Amount of Tokens that can be bought with input TRX.
     */
    function getTrxToTokenInputPrice(uint256 trx_sold)
    external
    view
    returns (uint256);

    /**
     * @notice Public price function for TRX to Token trades with an exact output.
     * @param tokens_bought Amount of Tokens bought.
     * @return Amount of TRX needed to buy output Tokens.
     */
    function getTrxToTokenOutputPrice(uint256 tokens_bought)
    external
    view
    returns (uint256);

    /**
     * @notice Public price function for Token to TRX trades with an exact input.
     * @param tokens_sold Amount of Tokens sold.
     * @return Amount of TRX that can be bought with input Tokens.
     */
    function getTokenToTrxInputPrice(uint256 tokens_sold)
    external
    view
    returns (uint256);

    /**
     * @notice Public price function for Token to TRX trades with an exact output.
     * @param trx_bought Amount of output TRX.
     * @return Amount of Tokens needed to buy output TRX.
     */
    function getTokenToTrxOutputPrice(uint256 trx_bought)
    external
    view
    returns (uint256);

    /**
     * @return Address of Token that is sold on this exchange.
     */
    function tokenAddress() external view returns (address);

    function tronBalance() external view returns (uint256);

    function tokenBalance() external view returns (uint256);

    function getTrxToLiquidityInputPrice(uint256 trx_sold)
    external
    view
    returns (uint256);

    function getLiquidityToReserveInputPrice(uint256 amount)
    external
    view
    returns (uint256, uint256);

    function txs(address owner) external view returns (uint256);

    /***********************************|
    |        Liquidity Functions        |
    |__________________________________*/

    /**
     * @notice Deposit TRX && Tokens (token) at current ratio to mint SWAP tokens.
     * @dev min_liquidity does nothing when total SWAP supply is 0.
     * @param min_liquidity Minimum number of SWAP sender will mint if total SWAP supply is greater than 0.
     * @param max_tokens Maximum number of tokens deposited. Deposits max amount if total SWAP supply is 0.
     * @return The amount of SWAP minted.
     */
    function addLiquidity(uint256 min_liquidity, uint256 max_tokens)
    external
    payable
    returns (uint256);

    /**
     * @dev Burn SWAP tokens to withdraw TRX && Tokens at current ratio.
     * @param amount Amount of SWAP burned.
     * @param min_trx Minimum TRX withdrawn.
     * @param min_tokens Minimum Tokens withdrawn.
     * @return The amount of TRX && Tokens withdrawn.
     */
    function removeLiquidity(
        uint256 amount,
        uint256 min_trx,
        uint256 min_tokens
    ) external returns (uint256, uint256);
}

interface IToken {
    function remainingMintableSupply() external view returns (uint256);

    function calculateTransferTaxes(address _from, uint256 _value) public view returns (uint256 adjustedValue, uint256 taxAmount);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function balanceOf(address who) external view returns (uint256);

    function mintedSupply() external returns (uint256);

    function allowance(address owner, address spender)
    external
    view
    returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);
}

interface ITokenMint {

    function mint(address beneficiary, uint256 tokenAmount) external returns (uint256);

    function estimateMint(uint256 _amount) external returns (uint256);

    function remainingMintableSupply() external returns (uint256);
}

interface IDripVault {

    function withdraw(uint256 tokenAmount) external;

}

contract Faucet is Ownable {

    using SafeMath for uint256;

    struct User {
        //Referral Info
        address upline;
        uint256 referrals;
        uint256 total_structure;

        //Long-term Referral Accounting
        uint256 direct_bonus;
        uint256 match_bonus;

        //Deposit Accounting
        uint256 deposits;
        uint256 deposit_time;

        //Payout and Roll Accounting
        uint256 payouts;
        uint256 rolls;

        //Upline Round Robin tracking
        uint256 ref_claim_pos;
    }

    struct Airdrop {
        //Airdrop tracking
        uint256 airdrops;
        uint256 airdrops_received;
        uint256 last_airdrop;
    }

    struct Custody {
        address manager;
        address beneficiary;
        uint256 last_heartbeat;
        uint256 last_checkin;
        uint256 heartbeat_interval;
    }

    address public fountainAddress;
    address public dripVaultAddress;

    ITokenMint private tokenMint;
    IToken private br34pToken;
    IToken private dripToken;
    IDripVault private dripVault;

    mapping(address => User) public users;
    mapping(address => Airdrop) public airdrops;
    mapping(address => Custody) public custody;

    uint256 public CompoundTax = 5;
    uint256 public ExitTax = 10;

    uint256 private constant payoutRate = 1;
    uint256 private constant ref_depth  = 15;
    uint256 private constant ref_bonus  = 10;

    uint256 private constant minimumInitial = 10e18;
    uint256 private constant minimumAmount = 1e18;

    uint256 public deposit_bracket_size = 10000e18;     // @BB 5% increase whale tax per 10000 tokens... 10 below cuts it at 50% since 5 * 10
    uint256 public max_payout_cap = 100000e18;          // 100k DRIP or 10% of supply
    uint256 private constant deposit_bracket_max = 10;  // sustainability fee is (bracket * 5)

    uint256[] public ref_balances;

    uint256 public total_airdrops;
    uint256 public total_users = 1;
    uint256 public total_deposited;
    uint256 public total_withdraw;
    uint256 public total_bnb;
    uint256 public total_txs;

    uint256 public constant MAX_UINT = 2**256 - 1;

    event Upline(address indexed addr, address indexed upline);
    event NewDeposit(address indexed addr, uint256 amount);
    event Leaderboard(address indexed addr, uint256 referrals, uint256 total_deposits, uint256 total_payouts, uint256 total_structure);
    event DirectPayout(address indexed addr, address indexed from, uint256 amount);
    event MatchPayout(address indexed addr, address indexed from, uint256 amount);
    event BalanceTransfer(address indexed _src, address indexed _dest, uint256 _deposits, uint256 _payouts);
    event Withdraw(address indexed addr, uint256 amount);
    event LimitReached(address indexed addr, uint256 amount);
    event NewAirdrop(address indexed from, address indexed to, uint256 amount, uint256 timestamp);
    event ManagerUpdate(address indexed addr, address indexed manager, uint256 timestamp);
    event BeneficiaryUpdate(address indexed addr, address indexed beneficiary);
    event HeartBeatIntervalUpdate(address indexed addr, uint256 interval);
    event HeartBeat(address indexed addr, uint256 timestamp);
    event Checkin(address indexed addr, uint256 timestamp);

    constructor(address _mintAddress, address _BR34PTokenAddress, address _dripTokenAddress, address _fountainAddress, address _vaultAddress) public Ownable() {

        //Only the mint should own its paired token
        tokenMint = ITokenMint(_mintAddress);

        //Br34p
        br34pToken = IToken(_BR34PTokenAddress);

        //Drip
        dripToken = IToken(_dripTokenAddress);

        //IDripVault
        dripVaultAddress = _vaultAddress;
        dripVault = IDripVault(_vaultAddress);

        //Referral Balances
        ref_balances.push(2e8);
        ref_balances.push(3e8);
        ref_balances.push(5e8);
        ref_balances.push(8e8);
        ref_balances.push(13e8);
        ref_balances.push(21e8);
        ref_balances.push(34e8);
        ref_balances.push(55e8);
        ref_balances.push(89e8);
        ref_balances.push(144e8);
        ref_balances.push(233e8);
        ref_balances.push(377e8);
        ref_balances.push(610e8);
        ref_balances.push(987e8);
        ref_balances.push(1597e8);
    }

    //@dev Default payable is empty since Faucet executes trades and recieves BNB
    function() external payable  {
        //Do nothing, BNB will be sent to contract when selling tokens
    }

    /****** Administrative Functions *******/

    /****** Management Functions *******/

    //@dev Update the sender's manager
    function updateManager(address _manager) public {
        address _addr = msg.sender;

        //Checkin for custody management.  If a user rolls for themselves they are active
        checkin();

        custody[_addr].manager = _manager;

        emit ManagerUpdate(_addr, _manager, now);
    }

    //@dev Update the sender's beneficiary
    function updateBeneficiary(address _beneficiary, uint256 _interval) public {
        address _addr = msg.sender;

        //Checkin for custody management.  If a user rolls for themselves they are active
        checkin();

        custody[_addr].beneficiary = _beneficiary;

        emit BeneficiaryUpdate(_addr, _beneficiary);

        //2 years is the inactivity limit for Google... (the UI will probably present a more practical upper limit)
        //If not launched the update interval can be set to anything for testng purposes
        require((_interval >= 90 days && _interval <= 730 days), "Time range is invalid");

        custody[_addr].heartbeat_interval =  _interval;

        emit HeartBeatIntervalUpdate(_addr, _interval);
    }

    function updateCompoundTax(uint256 _newCompoundTax) public onlyOwner {
        require(_newCompoundTax >= 0 && _newCompoundTax <= 20);
        CompoundTax = _newCompoundTax;
    }

    function updateExitTax(uint256 _newExitTax) public onlyOwner {
        require(_newExitTax >= 0 && _newExitTax <= 20);
        ExitTax = _newExitTax;
    }

    function updateDepositBracketSize(uint256 _newBracketSize) public onlyOwner {
        deposit_bracket_size = _newBracketSize;
    }

    function updateMaxPayoutCap(uint256 _newPayoutCap) public onlyOwner {
        max_payout_cap = _newPayoutCap;
    }

    function updateHoldRequirements(uint256[] _newRefBalances) public onlyOwner {
        require(_newRefBalances.length == ref_depth);
        delete ref_balances;
        for(uint8 i = 0; i < ref_depth; i++) {
            ref_balances.push(_newRefBalances[i]);
        }
    }

    /********** User Fuctions **************************************************/

    //@dev Checkin disambiguates activity between an active manager and player; this allows a beneficiary to execute a call to "transferInactiveAccount" if the player is gone,
    //but a manager is still executing on their behalf!
    function checkin() public {
        address _addr = msg.sender;
        custody[_addr].last_checkin = now;
        emit Checkin(_addr, custody[_addr].last_checkin);
    }

    //@dev Deposit specified DRIP amount supplying an upline referral
    function deposit(address _upline, uint256 _amount) external {

        address _addr = msg.sender;

        (uint256 realizedDeposit, uint256 taxAmount) = dripToken.calculateTransferTaxes(_addr, _amount);
        uint256 _total_amount = realizedDeposit;

        //Checkin for custody management.  If a user rolls for themselves they are active
        checkin();

        require(_amount >= minimumAmount, "Minimum deposit of 1 DRIP");

        //If fresh account require 10 DRIP
        if (users[_addr].deposits == 0){
            require(_amount >= minimumInitial, "Initial deposit of 10 DRIP");
        }

        _setUpline(_addr, _upline);

        // Claim if divs are greater than 1% of the deposit
        if (claimsAvailable(_addr) > _amount / 100){
            uint256 claimedDivs = _claim(_addr, false);
            uint256 taxedDivs = claimedDivs.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding
            _total_amount += taxedDivs;
        }

        //Transfer DRIP to the contract
        require(
            dripToken.transferFrom(
                _addr,
                address(dripVaultAddress),
                _amount
            ),
            "DRIP token transfer failed"
        );
        /*
        User deposits 10;
        1 goes for tax, 9 are realized deposit
        */

        _deposit(_addr, _total_amount);

        emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
        total_txs++;

    }


    //@dev Claim, transfer, withdraw from vault
    function claim() external {

        //Checkin for custody management.  If a user rolls for themselves they are active
        checkin();

        address _addr = msg.sender;

        _claim_out(_addr);
    }

    //@dev Claim and deposit;
    function roll() public {

        //Checkin for custody management.  If a user rolls for themselves they are active
        checkin();

        address _addr = msg.sender;

        _roll(_addr);
    }

    /********** Internal Fuctions **************************************************/

    //@dev Is marked as a managed function
    function checkForManager(address _addr) internal {
        //Sender has to be the manager of the account
        require(custody[_addr].manager == msg.sender, "_addr is not set as manager");
    }

    //@dev Add direct referral and update team structure of upline
    function _setUpline(address _addr, address _upline) internal {
        /*
        1) User must not have existing up-line
        2) Up-line argument must not be equal to senders own address
        3) Senders address must not be equal to the owner
        4) Up-lined user must have a existing deposit
        */
        if(users[_addr].upline == address(0) && _upline != _addr && _addr != owner && (users[_upline].deposit_time > 0 || _upline == owner )) {
            users[_addr].upline = _upline;
            users[_upline].referrals++;

            emit Upline(_addr, _upline);

            total_users++;

            for(uint8 i = 0; i < ref_depth; i++) {
                if(_upline == address(0)) break;

                users[_upline].total_structure++;

                _upline = users[_upline].upline;
            }
        }
    }

    //@dev Deposit
    function _deposit(address _addr, uint256 _amount) internal {
        //Can't maintain upline referrals without this being set

        require(users[_addr].upline != address(0) || _addr == owner, "No upline");

        //stats
        users[_addr].deposits += _amount;
        users[_addr].deposit_time = now;

        total_deposited += _amount;

        //events
        emit NewDeposit(_addr, _amount);

        //10% direct commission; only if net positive
        address _up = users[_addr].upline;
        if(_up != address(0) && isNetPositive(_up) && isBalanceCovered(_up, 1)) {
            uint256 _bonus = _amount / 10;

            //Log historical and add to deposits
            users[_up].direct_bonus += _bonus;
            users[_up].deposits += _bonus;

            emit NewDeposit(_up, _bonus);
            emit DirectPayout(_up, _addr, _bonus);
        }
    }

    //Payout upline; Bonuses are from 5 - 30% on the 1% paid out daily; Referrals only help
    function _refPayout(address _addr, uint256 _amount) internal {

        address _up = users[_addr].upline;
        uint256 _bonus = _amount * ref_bonus / 100;
        uint256 _share = _bonus / 4;
        uint256 _up_share = _bonus.sub(_share);
        bool _team_found = false;

        for(uint8 i = 0; i < ref_depth; i++) {

            // If we have reached the top of the chain, the owner
            if(_up == address(0)){
                //The equivalent of looping through all available
                users[_addr].ref_claim_pos = ref_depth;
                break;
            }

            //We only match if the claim position is valid
            if(users[_addr].ref_claim_pos == i && isBalanceCovered(_up, i + 1) && isNetPositive(_up)) {
                //Team wallets are split 75/25%
                if(users[_up].referrals >= 5 && !_team_found) {
                    //This should only be called once
                    _team_found = true;
                    //upline is paid matching and
                    users[_up].deposits += _up_share;
                    users[_addr].deposits += _share;

                    //match accounting
                    users[_up].match_bonus += _up_share;

                    //Synthetic Airdrop tracking; team wallets get automatic airdrop benefits
                    airdrops[_up].airdrops += _share;
                    airdrops[_up].last_airdrop = now;
                    airdrops[_addr].airdrops_received += _share;

                    //Global airdrops
                    total_airdrops += _share;

                    //Events
                    emit NewDeposit(_addr, _share);
                    emit NewDeposit(_up, _up_share);

                    emit NewAirdrop(_up, _addr, _share, now);
                    emit MatchPayout(_up, _addr, _up_share);
                } else {

                    users[_up].deposits += _bonus;

                    //match accounting
                    users[_up].match_bonus += _bonus;

                    //events
                    emit NewDeposit(_up, _bonus);
                    emit MatchPayout(_up, _addr, _bonus);
                }

                //The work has been done for the position; just break
                break;

            }

            _up = users[_up].upline;
        }

        //Reward the next
        users[_addr].ref_claim_pos += 1;

        //Reset if we've hit the end of the line
        if (users[_addr].ref_claim_pos >= ref_depth){
            users[_addr].ref_claim_pos = 0;
        }

    }

    //@dev General purpose heartbeat in the system used for custody/management planning
    function _heart(address _addr) internal {
        custody[_addr].last_heartbeat = now;
        emit HeartBeat(_addr, custody[_addr].last_heartbeat);
    }


    //@dev Claim and deposit;
    function _roll(address _addr) internal {

        uint256 to_payout = _claim(_addr, false);

        uint256 payout_taxed = to_payout.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding

        //Recycle baby!
        _deposit(_addr, payout_taxed);

        //track rolls for net positive
        users[_addr].rolls += payout_taxed;

        emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
        total_txs++;

    }


    //@dev Claim, transfer, and topoff
    function _claim_out(address _addr) internal {

        uint256 to_payout = _claim(_addr, true);

        uint256 vaultBalance = dripToken.balanceOf(dripVaultAddress);
        if (vaultBalance < to_payout) {
            uint256 differenceToMint = to_payout.sub(vaultBalance);
            tokenMint.mint(dripVaultAddress, differenceToMint);
        }

        dripVault.withdraw(to_payout);

        uint256 realizedPayout = to_payout.mul(SafeMath.sub(100, ExitTax)).div(100); // 10% tax on withdraw
        require(dripToken.transfer(address(msg.sender), realizedPayout));

        emit Leaderboard(_addr, users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure);
        total_txs++;

    }


    //@dev Claim current payouts
    function _claim(address _addr, bool isClaimedOut) internal returns (uint256) {
        (uint256 _gross_payout, uint256 _max_payout, uint256 _to_payout, uint256 _sustainability_fee) = payoutOf(_addr);
        require(users[_addr].payouts < _max_payout, "Full payouts");

        // Deposit payout
        if(_to_payout > 0) {

            // payout remaining allowable divs if exceeds
            if(users[_addr].payouts + _to_payout > _max_payout) {
                _to_payout = _max_payout.safeSub(users[_addr].payouts);
            }

            users[_addr].payouts += _gross_payout;
            //users[_addr].payouts += _to_payout;

            if (!isClaimedOut){
                //Payout referrals
                uint256 compoundTaxedPayout = _to_payout.mul(SafeMath.sub(100, CompoundTax)).div(100); // 5% tax on compounding
                _refPayout(_addr, compoundTaxedPayout);
            }
        }

        require(_to_payout > 0, "Zero payout");

        //Update the payouts
        total_withdraw += _to_payout;

        //Update time!
        users[_addr].deposit_time = now;

        emit Withdraw(_addr, _to_payout);

        if(users[_addr].payouts >= _max_payout) {
            emit LimitReached(_addr, users[_addr].payouts);
        }

        return _to_payout;
    }

    /********* Views ***************************************/

    //@dev Returns true if the address is net positive
    function isNetPositive(address _addr) public view returns (bool) {

        (uint256 _credits, uint256 _debits) = creditsAndDebits(_addr);

        return _credits > _debits;

    }

    //@dev Returns the total credits and debits for a given address
    function creditsAndDebits(address _addr) public view returns (uint256 _credits, uint256 _debits) {
        User memory _user = users[_addr];
        Airdrop memory _airdrop = airdrops[_addr];

        _credits = _airdrop.airdrops + _user.rolls + _user.deposits;
        _debits = _user.payouts;

    }

    //@dev Returns true if an account is active

    //@dev Returns whether BR34P balance matches level
    function isBalanceCovered(address _addr, uint8 _level) public view returns (bool) {
        return balanceLevel(_addr) >= _level;
    }

    //@dev Returns the level of the address
    function balanceLevel(address _addr) public view returns (uint8) {
        uint8 _level = 0;
        for (uint8 i = 0; i < ref_depth; i++) {
            if (br34pToken.balanceOf(_addr) < ref_balances[i]) break;
            _level += 1;
        }

        return _level;
    }

    //@dev Returns the realized sustainability fee of the supplied address
    function sustainabilityFee(address _addr) public view returns (uint256) {
        uint256 _bracket = users[_addr].deposits.div(deposit_bracket_size);
        _bracket = SafeMath.min(_bracket, deposit_bracket_max);
        return _bracket * 5;
    }

    //@dev Returns custody info of _addr
    function getCustody(address _addr) public view returns (address _beneficiary, uint256 _heartbeat_interval, address _manager) {
        return (custody[_addr].beneficiary, custody[_addr].heartbeat_interval, custody[_addr].manager);
    }

    //@dev Returns true if _manager is the manager of _addr
    function isManager(address _addr, address _manager) public view returns (bool) {
        return custody[_addr].manager == _manager;
    }

    //@dev Returns true if _beneficiary is the beneficiary of _addr
    function isBeneficiary(address _addr, address _beneficiary) public view returns (bool) {
        return custody[_addr].beneficiary == _beneficiary;
    }

    //@dev Returns true if _manager is valid for managing _addr
    function isManagementEligible(address _addr, address _manager) public view returns (bool) {
        return _manager != address(0) && _addr != _manager && users[_manager].deposits > 0 && users[_manager].deposit_time > 0;
    }

    //@dev Returns account activity timestamps
    function lastActivity(address _addr) public view returns (uint256 _heartbeat, uint256 _lapsed_heartbeat, uint256 _checkin, uint256 _lapsed_checkin) {
        _heartbeat = custody[_addr].last_heartbeat;
        _lapsed_heartbeat = now.safeSub(_heartbeat);
        _checkin = custody[_addr].last_checkin;
        _lapsed_checkin = now.safeSub(_checkin);
    }

    //@dev Returns amount of claims available for sender
    function claimsAvailable(address _addr) public view returns (uint256) {
        (uint256 _gross_payout, uint256 _max_payout, uint256 _to_payout, uint256 _sustainability_fee) = payoutOf(_addr);
        return _to_payout;
    }

    //@dev Maxpayout of 3.65 of deposit
    function maxPayoutOf(uint256 _amount) public pure returns(uint256) {
        return _amount * 365 / 100;
    }

    //@dev Calculate the current payout and maxpayout of a given address
    function payoutOf(address _addr) public view returns(uint256 payout, uint256 max_payout, uint256 net_payout, uint256 sustainability_fee) {

        //The max_payout is capped so that we can also cap available rewards daily
        max_payout = maxPayoutOf(users[_addr].deposits).min(max_payout_cap);

        //This can  be 0 - 50 in increments of 5% @bb Whale tax bracket calcs here
        uint256 _fee = sustainabilityFee(_addr);
        uint256 share;

        // @BB: No need for negative fee

        if(users[_addr].payouts < max_payout) {
            //Using 1e18 we capture all significant digits when calculating available divs
            share = users[_addr].deposits.mul(payoutRate * 1e18).div(100e18).div(24 hours); //divide the profit by payout rate and seconds in the day
            payout = share * now.safeSub(users[_addr].deposit_time);

            // payout remaining allowable divs if exceeds
            if(users[_addr].payouts + payout > max_payout) {
                payout = max_payout.safeSub(users[_addr].payouts);
            }

            sustainability_fee = payout * _fee / 100;

            net_payout = payout.safeSub(sustainability_fee);
        }
    }


    //@dev Get current user snapshot
    function userInfo(address _addr) external view returns(address upline, uint256 deposit_time, uint256 deposits, uint256 payouts, uint256 direct_bonus, uint256 match_bonus, uint256 last_airdrop) {
        return (users[_addr].upline, users[_addr].deposit_time, users[_addr].deposits, users[_addr].payouts, users[_addr].direct_bonus, users[_addr].match_bonus, airdrops[_addr].last_airdrop);
    }

    //@dev Get user totals
    function userInfoTotals(address _addr) external view returns(uint256 referrals, uint256 total_deposits, uint256 total_payouts, uint256 total_structure, uint256 airdrops_total, uint256 airdrops_received) {
        return (users[_addr].referrals, users[_addr].deposits, users[_addr].payouts, users[_addr].total_structure, airdrops[_addr].airdrops, airdrops[_addr].airdrops_received);
    }

    //@dev Get contract snapshot
    function contractInfo() external view returns(uint256 _total_users, uint256 _total_deposited, uint256 _total_withdraw, uint256 _total_bnb, uint256 _total_txs, uint256 _total_airdrops) {
        return (total_users, total_deposited, total_withdraw, total_bnb, total_txs, total_airdrops);
    }

    /////// Airdrops ///////

    //@dev Send specified DRIP amount supplying an upline referral
    function airdrop(address _to, uint256 _amount) external {

        address _addr = msg.sender;

        (uint256 _realizedAmount, uint256 taxAmount) = dripToken.calculateTransferTaxes(_addr, _amount);
        //This can only fail if the balance is insufficient
        require(
            dripToken.transferFrom(
                _addr,
                address(dripVaultAddress),
                _amount
            ),
            "DRIP to contract transfer failed; check balance and allowance, airdrop"
        );


        //Make sure _to exists in the system; we increase
        require(users[_to].upline != address(0), "_to not found");

        //Fund to deposits (not a transfer)
        users[_to].deposits += _realizedAmount;


        //User stats
        airdrops[_addr].airdrops += _realizedAmount;
        airdrops[_addr].last_airdrop = now;
        airdrops[_to].airdrops_received += _realizedAmount;

        //Keep track of overall stats
        total_airdrops += _realizedAmount;
        total_txs += 1;


        //Let em know!
        emit NewAirdrop(_addr, _to, _realizedAmount, now);
        emit NewDeposit(_to, _realizedAmount);
    }
}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    /**
     * @dev Multiplies two numbers, throws on overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        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 Subtracts two numbers, else returns zero */
    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b > a) {
            return 0;
        } else {
            return a - b;
        }
    }

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

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"creditsAndDebits","outputs":[{"name":"_credits","type":"uint256"},{"name":"_debits","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_beneficiary","type":"address"}],"name":"isBeneficiary","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newExitTax","type":"uint256"}],"name":"updateExitTax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"claimsAvailable","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractInfo","outputs":[{"name":"_total_users","type":"uint256"},{"name":"_total_deposited","type":"uint256"},{"name":"_total_withdraw","type":"uint256"},{"name":"_total_bnb","type":"uint256"},{"name":"_total_txs","type":"uint256"},{"name":"_total_airdrops","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_manager","type":"address"}],"name":"isManagementEligible","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"userInfo","outputs":[{"name":"upline","type":"address"},{"name":"deposit_time","type":"uint256"},{"name":"deposits","type":"uint256"},{"name":"payouts","type":"uint256"},{"name":"direct_bonus","type":"uint256"},{"name":"match_bonus","type":"uint256"},{"name":"last_airdrop","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"getCustody","outputs":[{"name":"_beneficiary","type":"address"},{"name":"_heartbeat_interval","type":"uint256"},{"name":"_manager","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"dripVaultAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_manager","type":"address"}],"name":"isManager","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"CompoundTax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isNetPositive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_upline","type":"address"},{"name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"total_bnb","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_manager","type":"address"}],"name":"updateManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ExitTax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newRefBalances","type":"uint256[]"}],"name":"updateHoldRequirements","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"payoutOf","outputs":[{"name":"payout","type":"uint256"},{"name":"max_payout","type":"uint256"},{"name":"net_payout","type":"uint256"},{"name":"sustainability_fee","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"balanceLevel","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"max_payout_cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"userInfoTotals","outputs":[{"name":"referrals","type":"uint256"},{"name":"total_deposits","type":"uint256"},{"name":"total_payouts","type":"uint256"},{"name":"total_structure","type":"uint256"},{"name":"airdrops_total","type":"uint256"},{"name":"airdrops_received","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fountainAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"maxPayoutOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"airdrop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"airdrops","outputs":[{"name":"airdrops","type":"uint256"},{"name":"airdrops_received","type":"uint256"},{"name":"last_airdrop","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":"total_withdraw","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"},{"name":"_level","type":"uint8"}],"name":"isBalanceCovered","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"users","outputs":[{"name":"upline","type":"address"},{"name":"referrals","type":"uint256"},{"name":"total_structure","type":"uint256"},{"name":"direct_bonus","type":"uint256"},{"name":"match_bonus","type":"uint256"},{"name":"deposits","type":"uint256"},{"name":"deposit_time","type":"uint256"},{"name":"payouts","type":"uint256"},{"name":"rolls","type":"uint256"},{"name":"ref_claim_pos","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"sustainabilityFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"checkin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"total_txs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"ref_balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newCompoundTax","type":"uint256"}],"name":"updateCompoundTax","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"roll","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newBracketSize","type":"uint256"}],"name":"updateDepositBracketSize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"total_deposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"custody","outputs":[{"name":"manager","type":"address"},{"name":"beneficiary","type":"address"},{"name":"last_heartbeat","type":"uint256"},{"name":"last_checkin","type":"uint256"},{"name":"heartbeat_interval","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_UINT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newPayoutCap","type":"uint256"}],"name":"updateMaxPayoutCap","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"total_users","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"total_airdrops","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deposit_bracket_size","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"lastActivity","outputs":[{"name":"_heartbeat","type":"uint256"},{"name":"_lapsed_heartbeat","type":"uint256"},{"name":"_checkin","type":"uint256"},{"name":"_lapsed_checkin","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"},{"name":"_interval","type":"uint256"}],"name":"updateBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_mintAddress","type":"address"},{"name":"_BR34PTokenAddress","type":"address"},{"name":"_dripTokenAddress","type":"address"},{"name":"_fountainAddress","type":"address"},{"name":"_vaultAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"upline","type":"address"}],"name":"Upline","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"referrals","type":"uint256"},{"indexed":false,"name":"total_deposits","type":"uint256"},{"indexed":false,"name":"total_payouts","type":"uint256"},{"indexed":false,"name":"total_structure","type":"uint256"}],"name":"Leaderboard","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"DirectPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"MatchPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_src","type":"address"},{"indexed":true,"name":"_dest","type":"address"},{"indexed":false,"name":"_deposits","type":"uint256"},{"indexed":false,"name":"_payouts","type":"uint256"}],"name":"BalanceTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"LimitReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"NewAirdrop","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"manager","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"ManagerUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"}],"name":"BeneficiaryUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"interval","type":"uint256"}],"name":"HeartBeatIntervalUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"HeartBeat","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"addr","type":"address"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"Checkin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

60806040526005600a55600a600b5569021e19e0c9bab2400000600c5569152d02c7e14af6800000600d55600160105534801561003b57600080fd5b5060405160a080612c1083398101604090815281516020830151918301516080909301516000805433600160a060020a0319918216178255600380548216600160a060020a03958616179055600480548216958516959095179094556005805485169584169590951790945560028054841692909116918217905560068054909216179055600e805460018181018355828452630bebc2007fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd92830155825480820184556311e1a3009083015582548082018455631dcd65009083015582548082018455632faf08009083015582548082018455634d7c6d009083015582548082018455637d2b7500908301558254808201845563caa7e2009083015582548082018455640147d3570090830155825480820184556402127b3900908301558254808201845564035a4e9000908301558254808201845564056cc9c90090830155825480820184556408c71859009083015582548082018455640e33e2220090830155825480820184556416fafa7b0090830155825490810190925564252edc9d00910155612a209081906101f090396000f30060806040526004361061023a5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630709f1b8811461023c578063096e27d9146102765780630e09b64c146102b157806314766fc3146102c957806315c43aaf146102fc578063171272d9146103445780631959a0021461036b57806319d7152c146103ce57806328ddc9821461041a5780632ef0e1ca1461044b57806335bbc3971461047257806347b8e6a31461048757806347e7ef24146104a85780634e71d92d146104cc5780635432d271146104e157806358aba00f146104f6578063639a0b26146105175780636a372c2c1461052c5780636da61d1e146105815780636de081cf146105c857806372fcfe41146105ff57806374b95b2d146106145780637877d654146106355780638959af3c1461064a5780638ba4cc3c146106625780638c86f0a7146106865780638da5cb5b146106c55780639a8318f4146106da5780639dd46297146106ef578063a87430ba14610716578063afcda1d214610791578063baeb0718146107b2578063c5e63fd6146107c7578063c635701f146107dc578063cb65d1ba146107f4578063cd5e3c5d1461080c578063d20ecd2014610821578063de560cca14610839578063e41e91ef1461084e578063e5b5019a146108a6578063e5d7e8e4146108bb578063e7cc62bd146108d3578063e812b202146108e8578063ea2caab3146108fd578063f07e96b314610912578063f2fde38b14610933578063fcb9b50514610954575b005b34801561024857600080fd5b5061025d600160a060020a0360043516610978565b6040805192835260208301919091528051918290030190f35b34801561028257600080fd5b5061029d600160a060020a0360043581169060243516610a61565b604080519115158252519081900360200190f35b3480156102bd57600080fd5b5061023a600435610a8b565b3480156102d557600080fd5b506102ea600160a060020a0360043516610ac4565b60408051918252519081900360200190f35b34801561030857600080fd5b50610311610ae2565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561035057600080fd5b5061029d600160a060020a0360043581169060243516610afc565b34801561037757600080fd5b5061038c600160a060020a0360043516610b79565b60408051600160a060020a0390981688526020880196909652868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b3480156103da57600080fd5b506103ef600160a060020a0360043516610bcb565b60408051600160a060020a039485168152602081019390935292168183015290519081900360600190f35b34801561042657600080fd5b5061042f610bfa565b60408051600160a060020a039092168252519081900360200190f35b34801561045757600080fd5b5061029d600160a060020a0360043581169060243516610c09565b34801561047e57600080fd5b506102ea610c2b565b34801561049357600080fd5b5061029d600160a060020a0360043516610c31565b3480156104b457600080fd5b5061023a600160a060020a0360043516602435610c48565b3480156104d857600080fd5b5061023a610fcc565b3480156104ed57600080fd5b506102ea610fe4565b34801561050257600080fd5b5061023a600160a060020a0360043516610fea565b34801561052357600080fd5b506102ea611066565b34801561053857600080fd5b506040805160206004803580820135838102808601850190965280855261023a9536959394602494938501929182918501908490808284375094975061106c9650505050505050565b34801561058d57600080fd5b506105a2600160a060020a03600435166110ef565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105d457600080fd5b506105e9600160a060020a0360043516611267565b6040805160ff9092168252519081900360200190f35b34801561060b57600080fd5b506102ea611367565b34801561062057600080fd5b50610311600160a060020a036004351661136d565b34801561064157600080fd5b5061042f6113b5565b34801561065657600080fd5b506102ea6004356113c4565b34801561066e57600080fd5b5061023a600160a060020a03600435166024356113d1565b34801561069257600080fd5b506106a7600160a060020a0360043516611701565b60408051938452602084019290925282820152519081900360600190f35b3480156106d157600080fd5b5061042f611722565b3480156106e657600080fd5b506102ea611731565b3480156106fb57600080fd5b5061029d600160a060020a036004351660ff60243516611737565b34801561072257600080fd5b50610737600160a060020a0360043516611752565b60408051600160a060020a03909b168b5260208b0199909952898901979097526060890195909552608088019390935260a087019190915260c086015260e085015261010084015261012083015251908190036101400190f35b34801561079d57600080fd5b506102ea600160a060020a03600435166117ae565b3480156107be57600080fd5b5061023a6117f7565b3480156107d357600080fd5b506102ea611848565b3480156107e857600080fd5b506102ea60043561184e565b34801561080057600080fd5b5061023a60043561186d565b34801561081857600080fd5b5061023a6118a6565b34801561082d57600080fd5b5061023a6004356118bb565b34801561084557600080fd5b506102ea6118d7565b34801561085a57600080fd5b5061086f600160a060020a03600435166118dd565b60408051600160a060020a039687168152949095166020850152838501929092526060830152608082015290519081900360a00190f35b3480156108b257600080fd5b506102ea611918565b3480156108c757600080fd5b5061023a60043561191e565b3480156108df57600080fd5b506102ea61193a565b3480156108f457600080fd5b506102ea611940565b34801561090957600080fd5b506102ea611946565b34801561091e57600080fd5b506105a2600160a060020a036004351661194c565b34801561093f57600080fd5b5061023a600160a060020a03600435166119b5565b34801561096057600080fd5b5061023a600160a060020a0360043516602435611a49565b60008061098361291b565b61098b612978565b50505050600160a060020a03908116600081815260076020818152604080842081516101408101835281549097168752600180820154888501526002808301548985015260038301546060808b0191909152600484015460808b0152600584015460a08b01908152600685015460c08c01529684015460e08b019081526008808601546101008d01908152600990960154610120909c019b909b5298885298855295839020835198890184528054808a529181015494890194909452929094015495019490945251905191519190920190910191565b600160a060020a038281166000908152600960205260409020600101548116908216145b92915050565b600054600160a060020a03163314610aa257600080fd5b60008110158015610ab4575060148111155b1515610abf57600080fd5b600b55565b6000806000806000610ad5866110ef565b5098975050505050505050565b601054601154601254601354601454600f54909192939495565b6000600160a060020a03821615801590610b28575081600160a060020a031683600160a060020a031614155b8015610b4d5750600160a060020a038216600090815260076020526040812060050154115b8015610b725750600160a060020a038216600090815260076020526040812060060154115b9392505050565b600160a060020a03908116600090815260076020818152604080842080546006820154600583015495830154600384015460049094015460089096529390962060020154961696949593949193909291565b600160a060020a0390811660009081526009602052604090206001810154600482015491549083169391921690565b600254600160a060020a031681565b600160a060020a03918216600090815260096020526040902054821691161490565b600a5481565b6000806000610c3f84610978565b10949350505050565b600554604080517f79a5b227000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052825190936000938493849384938493600160a060020a03909116926379a5b227926044808301939282900301818787803b158015610cbe57600080fd5b505af1158015610cd2573d6000803e3d6000fd5b505050506040513d6040811015610ce857600080fd5b5080516020909101519095509350849250610d016117f7565b670de0b6b3a7640000871015610d61576040805160e560020a62461bcd02815260206004820152601960248201527f4d696e696d756d206465706f736974206f662031204452495000000000000000604482015290519081900360640190fd5b600160a060020a0386166000908152600760205260409020600501541515610de357678ac7230489e80000871015610de3576040805160e560020a62461bcd02815260206004820152601a60248201527f496e697469616c206465706f736974206f662031302044524950000000000000604482015290519081900360640190fd5b610ded8689611b7a565b60648704610dfa87610ac4565b1115610e4257610e0b866000611ce9565b9150610e3b6064610e2f610e226064600a54611f64565b859063ffffffff611f7616565b9063ffffffff611f9f16565b9283019290505b600554600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301529283166024820152604481018b9052905191909216916323b872dd9160648083019260209291908290030181600087803b158015610ebc57600080fd5b505af1158015610ed0573d6000803e3d6000fd5b505050506040513d6020811015610ee657600080fd5b50511515610f3e576040805160e560020a62461bcd02815260206004820152601a60248201527f4452495020746f6b656e207472616e73666572206661696c6564000000000000604482015290519081900360640190fd5b610f488684611fb4565b600160a060020a038616600081815260076020818152604092839020600181015460058201549382015460029092015485519182529281019390935282840152606082015290517f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf019181900360800190a25050601480546001019055505050505050565b6000610fd66117f7565b5033610fe181612189565b50565b60135481565b33610ff36117f7565b600160a060020a03818116600081815260096020908152604091829020805473ffffffffffffffffffffffffffffffffffffffff19169487169485179055815142815291517f538b7e34a36a54a854560d56306e805b8e002ec3461aa9180ef97b21bb73216f9281900390910190a35050565b600b5481565b60008054600160a060020a0316331461108457600080fd5b8151600f1461109257600080fd5b61109e600e600061299a565b5060005b600f8160ff1610156110eb57600e828260ff168151811015156110c157fe5b602090810290910181015182546001818101855560009485529290932090920191909155016110a2565b5050565b60008060008060008061113b600d5461112f600760008b600160a060020a0316600160a060020a03168152602001908152602001600020600501546113c4565b9063ffffffff6124b616565b9450611146876117ae565b600160a060020a0388166000908152600760208190526040909120015490925085111561125e57600160a060020a0387166000908152600760205260409020600501546111b7906201518090610e2f9068056bc75e2d63100000908290670de0b6b3a764000063ffffffff611f7616565b600160a060020a0388166000908152600760205260409020600601549091506111e790429063ffffffff6124cc16565b600160a060020a038816600090815260076020819052604090912001549082029650860185101561124357600160a060020a0387166000908152600760208190526040909120015461124090869063ffffffff6124cc16565b95505b606486830204925061125b868463ffffffff6124cc16565b93505b50509193509193565b600080805b600f8160ff16101561136057600e805460ff831690811061128957fe5b9060005260206000200154600460009054906101000a9004600160a060020a0316600160a060020a03166370a08231866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082600160a060020a0316600160a060020a03168152602001915050602060405180830381600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b505050506040513d602081101561134757600080fd5b5051101561135457611360565b6001918201910161126c565b5092915050565b600d5481565b600160a060020a031660009081526007602081815260408084206001808201546005830154958301546002909301546008909552929095208054950154919593949093909190565b600154600160a060020a031681565b606461016d919091020490565b600554604080517f79a5b227000000000000000000000000000000000000000000000000000000008152336004820181905260248201859052825190936000938493600160a060020a03909216926379a5b22792604480820193929182900301818787803b15801561144257600080fd5b505af1158015611456573d6000803e3d6000fd5b505050506040513d604081101561146c57600080fd5b508051602091820151600554600254604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a038a811660048301529283166024820152604481018b9052905194975092955016926323b872dd926064808401938290030181600087803b1580156114ed57600080fd5b505af1158015611501573d6000803e3d6000fd5b505050506040513d602081101561151757600080fd5b505115156115bb576040805160e560020a62461bcd02815260206004820152604660248201527f4452495020746f20636f6e7472616374207472616e73666572206661696c656460448201527f3b20636865636b2062616c616e636520616e6420616c6c6f77616e63652c206160648201527f697264726f700000000000000000000000000000000000000000000000000000608482015290519081900360a40190fd5b600160a060020a0385811660009081526007602052604090205416151561162c576040805160e560020a62461bcd02815260206004820152600d60248201527f5f746f206e6f7420666f756e6400000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03808616600081815260076020908152604080832060050180548801905593871680835260088252848320805488018155426002909101819055848452928590206001908101805489019055600f8054890190556014805490910190558451878152918201929092528351929391927ff6cef455daa2f0926726c225d4ab406e2be4fb2f4d92b0b4bd58e9127d501e18929181900390910190a3604080518381529051600160a060020a038716916000805160206129d5833981519152919081900360200190a25050505050565b60086020526000908152604090208054600182015460029092015490919083565b600054600160a060020a031681565b60125481565b60008160ff1661174684611267565b60ff1610159392505050565b60076020819052600091825260409091208054600182015460028301546003840154600485015460058601546006870154978701546008880154600990980154600160a060020a0390971698959794969395929491939091908a565b600c54600160a060020a038216600090815260076020526040812060050154909182916117e09163ffffffff611f9f16565b90506117ed81600a6124b6565b6005029392505050565b336000818152600960209081526040918290204260039091018190558251908152915183927fda763d657043a37d5b6727921f1afb11f752742cbbd2590d990a8d3b9ff357ae92908290030190a250565b60145481565b600e80548290811061185c57fe5b600091825260209091200154905081565b600054600160a060020a0316331461188457600080fd5b60008110158015611896575060148111155b15156118a157600080fd5b600a55565b60006118b06117f7565b5033610fe1816124e7565b600054600160a060020a031633146118d257600080fd5b600c55565b60115481565b60096020526000908152604090208054600182015460028301546003840154600490940154600160a060020a03938416949390921692909185565b60001981565b600054600160a060020a0316331461193557600080fd5b600d55565b60105481565b600f5481565b600c5481565b600160a060020a03811660009081526009602052604081206002015490808061197b428563ffffffff6124cc16565b600160a060020a03861660009081526009602052604090206003015490935091506119ac428363ffffffff6124cc16565b90509193509193565b600054600160a060020a031633146119cc57600080fd5b600160a060020a03811615156119e157600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b33611a526117f7565b600160a060020a03818116600081815260096020526040808220600101805473ffffffffffffffffffffffffffffffffffffffff19169488169485179055517f6e7ce9c077e2175a8c10babce15b06c3cfefcd1df94ca7c8d3a897dfc98f26bd9190a36276a7008210158015611acc57506303c267008211155b1515611b22576040805160e560020a62461bcd02815260206004820152601560248201527f54696d652072616e676520697320696e76616c69640000000000000000000000604482015290519081900360640190fd5b600160a060020a038116600081815260096020908152604091829020600401859055815185815291517fc5e3ee9638e27bf70406196c2e816ca580711860edae4a67f2938ce71f2692519281900390910190a2505050565b600160a060020a03828116600090815260076020526040812054909116158015611bb6575082600160a060020a031682600160a060020a031614155b8015611bd05750600054600160a060020a03848116911614155b8015611c0c5750600160a060020a0382166000908152600760205260408120600601541180611c0c5750600054600160a060020a038381169116145b15611ce457600160a060020a03838116600081815260076020526040808220805473ffffffffffffffffffffffffffffffffffffffff19169487169485179055838252808220600190810180549091019055517f9f4d150e5193cfa9a87226111d3b60b624d97ccc056eeeac1569af1ea27bf6419190a35060108054600101905560005b600f8160ff161015611ce457600160a060020a0382161515611cb157611ce4565b600160a060020a039182166000908152600760205260409020600281018054600190810190915590549092169101611c90565b505050565b600080600080600080611cfb886110ef565b600160a060020a038c1660009081526007602081905260409091200154939850919650945092508411611d78576040805160e560020a62461bcd02815260206004820152600c60248201527f46756c6c207061796f7574730000000000000000000000000000000000000000604482015290519081900360640190fd5b6000831115611e2f57600160a060020a038816600090815260076020819052604090912001548301841015611dd857600160a060020a03881660009081526007602081905260409091200154611dd590859063ffffffff6124cc16565b92505b600160a060020a038816600090815260076020819052604090912001805486019055861515611e2f57611e236064610e2f611e166064600a54611f64565b869063ffffffff611f7616565b9050611e2f88826125a1565b60008311611e87576040805160e560020a62461bcd02815260206004820152600b60248201527f5a65726f207061796f7574000000000000000000000000000000000000000000604482015290519081900360640190fd5b6012805484019055600160a060020a03881660008181526007602090815260409182902042600690910155815186815291517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649281900390910190a2600160a060020a038816600090815260076020819052604090912001548411611f5857600160a060020a03881660008181526007602081815260409283902090910154825190815291517f97ddeb77c85e6a1dd99a34fe2bb1a4f9b211d5ffced7a707de9dbeb24363d0e49281900390910190a25b50909695505050505050565b600082821115611f7057fe5b50900390565b6000821515611f8757506000610a85565b50818102818382811515611f9757fe5b0414610a8557fe5b60008183811515611fac57fe5b049392505050565b600160a060020a038281166000908152600760205260408120549091829116151580611fed5750600054600160a060020a038581169116145b1515612043576040805160e560020a62461bcd02815260206004820152600960248201527f4e6f2075706c696e650000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a03841660008181526007602090815260409182902060058101805488019055426006909101556011805487019055815186815291516000805160206129d58339815191529281900390910190a2600160a060020a0380851660009081526007602052604090205416915081158015906120c757506120c782610c31565b80156120d957506120d9826001611737565b156121835750600160a060020a038116600081815260076020908152604091829020600381018054600a88049081019091556005909101805482019055825181815292519093926000805160206129d583398151915292908290030190a283600160a060020a031682600160a060020a03167fba5b08f0cddc64825b52c35c09323af810c1d2e29c97aba01a4ed25cfdc482d1836040518082815260200191505060405180910390a35b50505050565b60008060008061219a856001611ce9565b600554600254604080517f70a08231000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015290519397509116916370a08231916024808201926020929091908290030181600087803b15801561220757600080fd5b505af115801561221b573d6000803e3d6000fd5b505050506040513d602081101561223157600080fd5b50519250838310156122ee5761224d848463ffffffff611f6416565b600354600254604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810185905290519395509116916340c10f19916044808201926020929091908290030181600087803b1580156122c157600080fd5b505af11580156122d5573d6000803e3d6000fd5b505050506040513d60208110156122eb57600080fd5b50505b600654604080517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018790529051600160a060020a0390921691632e1a7d4d9160248082019260009290919082900301818387803b15801561235457600080fd5b505af1158015612368573d6000803e3d6000fd5b5050505061238e6064610e2f6123816064600b54611f64565b879063ffffffff611f7616565b600554604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051929350600160a060020a039091169163a9059cbb916044808201926020929091908290030181600087803b1580156123fe57600080fd5b505af1158015612412573d6000803e3d6000fd5b505050506040513d602081101561242857600080fd5b5051151561243557600080fd5b600160a060020a038516600081815260076020818152604092839020600181015460058201549382015460029092015485519182529281019390935282840152606082015290517f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf019181900360800190a25050601480546001019055505050565b60008183106124c55781610b72565b5090919050565b6000828211156124de57506000610a85565b50808203610a85565b6000806124f5836000611ce9565b915061250c6064610e2f610e226064600a54611f64565b90506125188382611fb4565b600160a060020a03831660008181526007602081815260409283902060088101805487019055600181015460058201549382015460029092015485519182529281019390935282840152606082015290517f51e3415e8dd1b315ada9b5823098637d5b45e2c277bbc5069a7be8a834c5bf019181900360800190a2505060148054600101905550565b600160a060020a03828116600090815260076020526040812054909116906064600a84020490600482049080806125d88585611f64565b925060009150600090505b600f8160ff1610156128c957600160a060020a038616151561262457600160a060020a0388166000908152600760205260409020600f6009909101556128c9565b600160a060020a03881660009081526007602052604090206009015460ff821614801561265957506126598682600101611737565b8015612669575061266986610c31565b156128a357600160a060020a038616600090815260076020526040902060010154600511801590612698575081155b1561280457600160a060020a038087166000818152600760209081526040808320600580820180548b019055958e1680855282852090960180548b01905593835260049093018054880190556008815282822080548901815542600290910155838252908290206001908101805489019055600f805489019055825188815292519095506000805160206129d58339815191529281900390910190a2604080518481529051600160a060020a038816916000805160206129d5833981519152919081900360200190a287600160a060020a031686600160a060020a03167ff6cef455daa2f0926726c225d4ab406e2be4fb2f4d92b0b4bd58e9127d501e188642604051808381526020018281526020019250505060405180910390a387600160a060020a031686600160a060020a03167f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea856040518082815260200191505060405180910390a361289e565b600160a060020a0386166000818152600760209081526040918290206005810180548a019055600401805489019055815188815291516000805160206129d58339815191529281900390910190a287600160a060020a031686600160a060020a03167f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea876040518082815260200191505060405180910390a35b6128c9565b600160a060020a03958616600090815260076020526040902054909516946001016125e3565b600160a060020a0388166000908152600760205260409020600901805460010190819055600f1161291157600160a060020a0388166000908152600760205260408120600901555b5050505050505050565b610140604051908101604052806000600160a060020a031681526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000815260200160008152602001600081525090565b5080546000825590600052602060002090810190610fe191906129d191905b808211156129cd57600081556001016129b9565b5090565b9056002cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de364a165627a7a723058208f1663afc15dc86a49d0eaeab3642f3952489ea77bb2f3d4fd14921ef01c22c8002900000000000000000000000018a1162b11df31f66bd81c27bcd4ab0c00ee12ae000000000000000000000000a86d305a36cdb815af991834b46ad3d7fbb3852300000000000000000000000020f663cea80face82acdfa3aae6862d246ce03330000000000000000000000004fe59adcf621489ced2d674978132a54d432653a000000000000000000000000bff8a1f9b5165b787a00659216d7313354d25472

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

00000000000000000000000018a1162b11df31f66bd81c27bcd4ab0c00ee12ae000000000000000000000000a86d305a36cdb815af991834b46ad3d7fbb3852300000000000000000000000020f663cea80face82acdfa3aae6862d246ce03330000000000000000000000004fe59adcf621489ced2d674978132a54d432653a000000000000000000000000bff8a1f9b5165b787a00659216d7313354d25472

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000018a1162b11df31f66bd81c27bcd4ab0c00ee12ae
Arg [1] : 000000000000000000000000a86d305a36cdb815af991834b46ad3d7fbb38523
Arg [2] : 00000000000000000000000020f663cea80face82acdfa3aae6862d246ce0333
Arg [3] : 0000000000000000000000004fe59adcf621489ced2d674978132a54d432653a
Arg [4] : 000000000000000000000000bff8a1f9b5165b787a00659216d7313354d25472


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.