ETH Price: $2,667.00 (+1.41%)

Contract

0xf8Dd253d44E9546A6c7F688BB36E0EA05b9dB023
 

Overview

ETH Balance

3.602291463764475547 ETH

Eth Value

$9,607.30 (@ $2,667.00/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw94739802020-02-13 9:54:141826 days ago1581587654IN
0xf8Dd253d...05b9dB023
0 ETH0.000266846
Sell94739742020-02-13 9:53:101826 days ago1581587590IN
0xf8Dd253d...05b9dB023
0 ETH0.000356576
Withdraw94739412020-02-13 9:46:241826 days ago1581587184IN
0xf8Dd253d...05b9dB023
0 ETH0.0006181813.9
Sell94739322020-02-13 9:45:331826 days ago1581587133IN
0xf8Dd253d...05b9dB023
0 ETH0.0007725713
Withdraw94739022020-02-13 9:38:471826 days ago1581586727IN
0xf8Dd253d...05b9dB023
0 ETH0.0006181813.9
Sell94738972020-02-13 9:37:531826 days ago1581586673IN
0xf8Dd253d...05b9dB023
0 ETH0.000445717.5
Exit92520972020-01-10 9:02:361860 days ago1578646956IN
0xf8Dd253d...05b9dB023
0 ETH0.000320615
Withdraw92471622020-01-09 15:02:201861 days ago1578582140IN
0xf8Dd253d...05b9dB023
0 ETH0.000044471
Transfer91239472019-12-18 4:35:351884 days ago1576643735IN
0xf8Dd253d...05b9dB023
0 ETH0.000208255
Withdraw89999262019-11-25 18:10:071906 days ago1574705407IN
0xf8Dd253d...05b9dB023
0 ETH0.000250025.75
Sell89999142019-11-25 18:07:241906 days ago1574705244IN
0xf8Dd253d...05b9dB023
0 ETH0.000256324.8
Withdraw89999142019-11-25 18:07:241906 days ago1574705244IN
0xf8Dd253d...05b9dB023
0 ETH0.000125012.875
Withdraw89880452019-11-23 18:52:231908 days ago1574535143IN
0xf8Dd253d...05b9dB023
0 ETH0.000043481
Sell89880392019-11-23 18:50:371908 days ago1574535037IN
0xf8Dd253d...05b9dB023
0 ETH0.00005341
Withdraw89520332019-11-17 18:37:261914 days ago1574015846IN
0xf8Dd253d...05b9dB023
0 ETH0.000395689.1
Sell89520232019-11-17 18:34:311914 days ago1574015671IN
0xf8Dd253d...05b9dB023
0 ETH0.0005346510
Withdraw89496792019-11-17 9:30:151914 days ago1573983015IN
0xf8Dd253d...05b9dB023
0 ETH0.000125222.88
Withdraw89422842019-11-16 3:52:111916 days ago1573876331IN
0xf8Dd253d...05b9dB023
0 ETH0.000130443
Sell89422792019-11-16 3:50:421916 days ago1573876242IN
0xf8Dd253d...05b9dB023
0 ETH0.00016023
Withdraw89387492019-11-15 13:49:421916 days ago1573825782IN
0xf8Dd253d...05b9dB023
0 ETH0.000086962
Sell89363602019-11-15 4:17:291917 days ago1573791449IN
0xf8Dd253d...05b9dB023
0 ETH0.000058741.1
Withdraw89363342019-11-15 4:12:231917 days ago1573791143IN
0xf8Dd253d...05b9dB023
0 ETH0.000047831.1
Withdraw89363332019-11-15 4:12:171917 days ago1573791137IN
0xf8Dd253d...05b9dB023
0 ETH0.000047831.1
Reinvest89358092019-11-15 1:58:291917 days ago1573783109IN
0xf8Dd253d...05b9dB023
0 ETH0.000293473.3
Sell89358022019-11-15 1:57:251917 days ago1573783045IN
0xf8Dd253d...05b9dB023
0 ETH0.00016023
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
94739802020-02-13 9:54:141826 days ago1581587654
0xf8Dd253d...05b9dB023
0.00112946 ETH
94739412020-02-13 9:46:241826 days ago1581587184
0xf8Dd253d...05b9dB023
0.02590746 ETH
94739022020-02-13 9:38:471826 days ago1581586727
0xf8Dd253d...05b9dB023
0.00650623 ETH
92520972020-01-10 9:02:361860 days ago1578646956
0xf8Dd253d...05b9dB023
0.00596384 ETH
92471622020-01-09 15:02:201861 days ago1578582140
0xf8Dd253d...05b9dB023
0.00173071 ETH
89999262019-11-25 18:10:071906 days ago1574705407
0xf8Dd253d...05b9dB023
0.01232553 ETH
89999142019-11-25 18:07:241906 days ago1574705244
0xf8Dd253d...05b9dB023
0.00769769 ETH
89880452019-11-23 18:52:231908 days ago1574535143
0xf8Dd253d...05b9dB023
0.01213334 ETH
89520332019-11-17 18:37:261914 days ago1574015846
0xf8Dd253d...05b9dB023
0.0040153 ETH
89496792019-11-17 9:30:151914 days ago1573983015
0xf8Dd253d...05b9dB023
0.00001843 ETH
89422842019-11-16 3:52:111916 days ago1573876331
0xf8Dd253d...05b9dB023
0.01481441 ETH
89387492019-11-15 13:49:421916 days ago1573825782
0xf8Dd253d...05b9dB023
0.0108497 ETH
89363342019-11-15 4:12:231917 days ago1573791143
0xf8Dd253d...05b9dB023
0.00169876 ETH
89363332019-11-15 4:12:171917 days ago1573791137
0xf8Dd253d...05b9dB023
0.00102117 ETH
89269232019-11-13 14:27:271918 days ago1573655247
0xf8Dd253d...05b9dB023
0.01206247 ETH
89246382019-11-13 5:21:211919 days ago1573622481
0xf8Dd253d...05b9dB023
0.00169662 ETH
89245512019-11-13 5:02:571919 days ago1573621377
0xf8Dd253d...05b9dB023
0.10208723 ETH
89217752019-11-12 17:59:481919 days ago1573581588
0xf8Dd253d...05b9dB023
0.01821191 ETH
89196172019-11-12 9:21:311919 days ago1573550491
0xf8Dd253d...05b9dB023
0.00764508 ETH
89192122019-11-12 7:46:411920 days ago1573544801
0xf8Dd253d...05b9dB023
0.07776995 ETH
89181502019-11-12 3:26:201920 days ago1573529180
0xf8Dd253d...05b9dB023
0.00341764 ETH
89165132019-11-11 20:50:521920 days ago1573505452
0xf8Dd253d...05b9dB023
0.05744679 ETH
89160312019-11-11 19:00:381920 days ago1573498838
0xf8Dd253d...05b9dB023
6.80800225 ETH
89144452019-11-11 12:36:181920 days ago1573475778
0xf8Dd253d...05b9dB023
0.0151707 ETH
89136532019-11-11 9:38:091920 days ago1573465089
0xf8Dd253d...05b9dB023
0.00491301 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherWin

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2019-11-08
*/

pragma solidity ^0.4.20;

contract EtherWin {
    /*=================================
    =            MODIFIERS            =
    =================================*/
    // only people with tokens
    modifier onlyBagholders() {
        require(myTokens() > 0);
        _;
    }

    // only people with profits
    modifier onlyStronghands() {
        require(myDividends(true) > 0);
        _;
    }

    modifier checkTime(){
        require(now >= releaseTime);
        _;

    }

    /*==============================
    =            EVENTS            =
    ==============================*/
    event onTokenPurchase(
        address indexed customerAddress,
        uint256 incomingEthereum,
        uint256 tokensMinted,
        address indexed referredBy
    );

    event onTokenSell(
        address indexed customerAddress,
        uint256 tokensBurned,
        uint256 ethereumEarned
    );

    event onReinvestment(
        address indexed customerAddress,
        uint256 ethereumReinvested,
        uint256 tokensMinted
    );

    event onWithdraw(
        address indexed customerAddress,
        uint256 ethereumWithdrawn
    );

    // ERC20
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );


    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    string public name = "Win Token";
    string public symbol = "Win";

    uint8 constant public decimals = 18;
    uint8 constant internal buyFee_ = 6;//60%
    uint8 constant internal sellFee_ = 10;//10%
    uint8 constant internal transferFee_ = 10;
    uint8 constant internal roiRate_ = 10; //10%
    uint256 constant internal tokenPriceInitial_ = 0.0000001 ether;
    uint256 constant internal tokenPriceIncremental_ = 0.00000001 ether;
    uint256 constant internal magnitude = 2**64;

    uint256 internal tokenSupply_ = 0;
    uint256 internal profitPerShare_;
    uint256 internal antiWhaleCap = 2 ether;
    uint256 public stakingRequirement = 25e18;
    uint256 internal releaseTime = 1573326000; //11/09/2019 @ 7:00pm (UTC)
    uint256 internal antiWhaleTime = 1573326600; //11/09/2019 @ 7:10pm (UTC)
   /*================================
    =            DATASETS            =
    ================================*/

    // amount of shares for each address (scaled number)
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => int256) internal payoutsTo_;


    uint256 public roiPool = 0;
    address internal devAddress_  = 0xA87EAEdFc338E3aA75767f51357f845337c8cFa1;


    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    /*
    * -- APPLICATION ENTRY POINTS --
    */

    function sendRoi() public {
      require(msg.sender == devAddress_);
      uint256 dailyInterest = SafeMath.div(roiPool, roiRate_);  //10% roirate
      roiPool = SafeMath.sub(roiPool,dailyInterest);
      roiDistribution(dailyInterest, 0x0);
    }


    /**
     * Converts all incoming ethereum to tokens for the caller, and passes down the referral addy (if any)
     */
    function buy(address _referredBy)
        public
        payable
        returns(uint256)
    {
        purchaseTokens(msg.value, _referredBy);
    }

    /**
     * Fallback function to handle ethereum that was send straight to the contract
     * Unfortunately we cannot use a referral address this way.
     */
    function()
        payable
        public
    {
        purchaseTokens(msg.value, 0x0);
    }

    /**
     * Converts all of caller's dividends to tokens.
     */
    function reinvest()
        onlyStronghands()
        public
    {
        // fetch dividends
        uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code

        // pay out the dividends virtually
        address _customerAddress = msg.sender;
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);

        // retrieve ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        // dispatch a buy order with the virtualized "withdrawn dividends"
        uint256 _tokens = purchaseTokens(_dividends, 0x0);

        // fire event
        onReinvestment(_customerAddress, _dividends, _tokens);
    }

    /**
     * Alias of sell() and withdraw().
     */
    function exit()
        public
    {
        // get token count for caller & sell them all
        address _customerAddress = msg.sender;
        uint256 _tokens = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);

        // lambo delivery service
        withdraw();
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw()
        onlyStronghands()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        uint256 _dividends = myDividends(false); // get ref. bonus later in the code

        // update dividend tracker
        payoutsTo_[_customerAddress] +=  (int256) (_dividends * magnitude);

        // add ref. bonus
        _dividends += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress] = 0;

        _customerAddress.transfer(_dividends);

        // fire event
        onWithdraw(_customerAddress, _dividends);
    }

    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens)
        onlyBagholders()
        public
    {
        // setup data
        address _customerAddress = msg.sender;
        // russian hackers BTFO
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens = _amountOfTokens;
        uint256 _ethereum = tokensToEthereum_(_tokens);
        uint256 _dividends = SafeMath.div(_ethereum, sellFee_);//10%
        uint256 _roiPool = SafeMath.div(_dividends,2); //5%
                roiPool = SafeMath.add(roiPool,_roiPool);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        _dividends =  SafeMath.sub(_dividends, _roiPool);
        // burn the sold tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);

        // update dividends tracker
        int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress] -= _updatedPayouts;
        // dividing by zero is a bad idea
        if (tokenSupply_ > 0) {
            // update the amount of dividends per token
            profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }

        // fire event
        onTokenSell(_customerAddress, _tokens, _taxedEthereum);
    }


    /**
     * Transfer tokens from the caller to a new holder.
     * Remember, there's a 10% fee here as well.
     */
    function transfer(address _toAddress, uint256 _amountOfTokens)
        onlyBagholders()
        public
        returns(bool)
    {
        // setup
        address _customerAddress = msg.sender;

        require( _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);

        if(myDividends(true) > 0) withdraw();

        uint256 _tokenFee = SafeMath.div(_amountOfTokens, transferFee_);
        uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee);
        uint256 _dividends = tokensToEthereum_(_tokenFee);
        // burn the fee tokens
        tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee);

        // exchange tokens
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);

        // update dividend trackers
        payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens);

        // disperse dividends among holders
        profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);

        // fire event
        Transfer(_customerAddress, _toAddress, _taxedTokens);

        // ERC20
        return true;

    }

    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/

    function setStakingRequirement(uint256 _amountOfTokens)
        public
    {
        require(msg.sender == devAddress_);
        stakingRequirement = _amountOfTokens;
    }


    /*----------  HELPERS AND CALCULATORS  ----------*/
    /**
     * Method to view the current Ethereum stored in the contract
     * Example: totalEthereumBalance()
     */
    function totalEthereumBalance()
        public
        view
        returns(uint)
    {
        return this.balance;
    }

    function isOwner()
      public
      view
      returns(bool)
    {
      return msg.sender == devAddress_;
    }

    /**
     * Retrieve the total token supply.
     */
    function totalSupply()
        public
        view
        returns(uint256)
    {
        return tokenSupply_;
    }

    /**
     * Retrieve the tokens owned by the caller.
     */
    function myTokens()
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return balanceOf(_customerAddress);
    }

    /**
     * Retrieve the dividends owned by the caller.
     * If `_includeReferralBonus` is to to 1/true, the referral bonus will be included in the calculations.
     * The reason for this, is that in the frontend, we will want to get the total divs (global + ref)
     * But in the internal calculations, we want them separate.
     */
    function myDividends(bool _includeReferralBonus)
        public
        view
        returns(uint256)
    {
        address _customerAddress = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }

    /**
     * Retrieve the token balance of any single address.
     */
    function balanceOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return tokenBalanceLedger_[_customerAddress];
    }

    /**
     * Retrieve the dividend balance of any single address.
     */
    function dividendsOf(address _customerAddress)
        view
        public
        returns(uint256)
    {
        return (uint256) ((int256)(profitPerShare_ * tokenBalanceLedger_[_customerAddress]) - payoutsTo_[_customerAddress]) / magnitude;
    }

    /**
     * Return the buy price of 1 individual token.
     */
    function sellPrice()
        public
        view
        returns(uint256)
    {
        // our calculation relies on the token supply, so we need supply. Doh.
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ - tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(_ethereum, sellFee_);
            uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice()
        public
        view
        returns(uint256)
    {
        // our calculation relies on the token supply, so we need supply. Doh.
        if(tokenSupply_ == 0){
            return tokenPriceInitial_ + tokenPriceIncremental_;
        } else {
            uint256 _ethereum = tokensToEthereum_(1e18);
            uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereum, buyFee_), 10);
            uint256 _taxedEthereum = SafeMath.add(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }

    function roiDistribution(uint256 _incomingEthereum, address _referredBy) checkTime() internal returns (uint256) {
      address _customerAddress = msg.sender;
      uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, buyFee_), 10); //33%
      uint256 _referralBonus = SafeMath.div(_undividedDividends, 2); //30%
      uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);
      uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
      uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
      uint256 _fee = _dividends * magnitude;

      require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));

      referralBalance_[devAddress_] = SafeMath.add(referralBalance_[devAddress_], _referralBonus);

      if(tokenSupply_ > 0){
          tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
          profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
          _fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));

      } else {
          tokenSupply_ = _amountOfTokens;
      }

      tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);

      int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
      payoutsTo_[_customerAddress] += _updatedPayouts;

      onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy);

      return _amountOfTokens;
   }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of buy orders.
     */
    function calculateTokensReceived(uint256 _ethereumToSpend)
        public
        view
        returns(uint256)
    {
        if(now <= antiWhaleTime){
          if(_ethereumToSpend > antiWhaleCap){
            _ethereumToSpend = antiWhaleCap;
          }
        }
        uint256 _dividends = SafeMath.div(SafeMath.mul(_ethereumToSpend, buyFee_), 10);//60%
        uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, _dividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);

        return _amountOfTokens;
    }

    /**
     * Function for the frontend to dynamically retrieve the price scaling of sell orders.
     */
    function calculateEthereumReceived(uint256 _tokensToSell)
        public
        view
        returns(uint256)
    {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum = tokensToEthereum_(_tokensToSell);
        uint256 _dividends = SafeMath.div(_ethereum, sellFee_);
        uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }

    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy)
        checkTime()
        internal
        returns(uint256)
    {
        address _customerAddress = msg.sender;

        if(now <= antiWhaleTime){
          if(_incomingEthereum > antiWhaleCap){
            uint256 refund = SafeMath.sub(_incomingEthereum,antiWhaleCap);
            _incomingEthereum = antiWhaleCap;
            _customerAddress.transfer(refund);
          }
        }
        // data setup

        uint256 _undividedDividends = SafeMath.div(SafeMath.mul(_incomingEthereum, buyFee_), 10); //60%
        uint256 _referralBonus = SafeMath.div(_undividedDividends, 2); //30%
        uint256 _dividends = SafeMath.sub(_undividedDividends, _referralBonus);//30%
        uint256 _roiPool = SafeMath.div(_dividends,3); //10%
                roiPool = SafeMath.add(roiPool,_roiPool);
                _dividends =  SafeMath.sub(_dividends, _roiPool); //20%
        uint256 _taxedEthereum = SafeMath.sub(_incomingEthereum, _undividedDividends);
        uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum);
        uint256 _fee = _dividends * magnitude;

        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));

        if(
            _referredBy != 0x0000000000000000000000000000000000000000 &&
            _referredBy != _customerAddress &&
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            referralBalance_[_referredBy] = SafeMath.add(referralBalance_[_referredBy], _referralBonus);
        } else {
            referralBalance_[devAddress_] = SafeMath.add(referralBalance_[devAddress_], _referralBonus);
        }

        if(tokenSupply_ > 0){
            tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens);
            profitPerShare_ += (_dividends * magnitude / (tokenSupply_));
            _fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));

        } else {
            tokenSupply_ = _amountOfTokens;
        }

        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);

        int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress] += _updatedPayouts;

        // fire event
        onTokenPurchase(_customerAddress, _incomingEthereum, _amountOfTokens, _referredBy);

        return _amountOfTokens;
    }

    /**
     * Calculate Token price based on an amount of incoming ethereum
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
    function ethereumToTokens_(uint256 _ethereum)
        internal
        view
        returns(uint256)
    {
        uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18;
        uint256 _tokensReceived =
         (
            (
                // underflow attempts BTFO
                SafeMath.sub(
                    (sqrt
                        (
                            (_tokenPriceInitial**2)
                            +
                            (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18))
                            +
                            (((tokenPriceIncremental_)**2)*(tokenSupply_**2))
                            +
                            (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_)
                        )
                    ), _tokenPriceInitial
                )
            )/(tokenPriceIncremental_)
        )-(tokenSupply_)
        ;

        return _tokensReceived;
    }

    /**
     * Calculate token sell value.
     * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation;
     * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code.
     */
     function tokensToEthereum_(uint256 _tokens)
        internal
        view
        returns(uint256)
    {

        uint256 tokens_ = (_tokens + 1e18);
        uint256 _tokenSupply = (tokenSupply_ + 1e18);
        uint256 _etherReceived =
        (
            // underflow attempts BTFO
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceIncremental_ * (_tokenSupply/1e18))
                        )-tokenPriceIncremental_
                    )*(tokens_ - 1e18)
                ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
            )
        /1e18);
        return _etherReceived;
    }


    //This is where all your gas goes, sorry
    //Not sorry, you probably only paid 1 gwei
    function sqrt(uint x) internal pure returns (uint y) {
        uint z = (x + 1) / 2;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

/**
 * @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) {
        if (a == 0) {
            return 0;
        }
        uint256 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 c;
    }

    /**
    * @dev Substracts 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 Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roiPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sendRoi","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"setStakingRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]

60606040526040805190810160405280600981526020017f57696e20546f6b656e000000000000000000000000000000000000000000000081525060009080519060200190620000519291906200013a565b506040805190810160405280600381526020017f57696e0000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f9291906200013a565b506000600255671bc16d674ec8000060045568015af1d78b58c40000600555635dc70cb0600655635dc70f086007556000600b5573a87eaedfc338e3aa75767f51357f845337c8cfa1600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034156200013457600080fd5b620001e9565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200017d57805160ff1916838001178555620001ae565b82800160010185558215620001ae579182015b82811115620001ad57825182559160200191906001019062000190565b5b509050620001bd9190620001c1565b5090565b620001e691905b80821115620001e2576000816000905550600101620001c8565b5090565b90565b611f9f80620001f96000396000f30060606040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014b57806306fdde031461019857806310d0ffdd1461022657806318160ddd1461025d5780632260937314610286578063313ce567146102bd5780633818c83c146102ec5780633ccfd60b146103155780634b7503341461032a57806356d399e814610353578063688abbf71461037c5780636b2f4632146103b55780636d67efdc146103de57806370a08231146103f35780638328b610146104405780638620410b146104635780638f32d59b1461048c578063949e8acd146104b957806395d89b41146104e2578063a9059cbb14610570578063e4849b32146105ca578063e9fad8ee146105ed578063f088d54714610602578063fdb5a03e14610644575b610148346000610659565b50005b341561015657600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b84565b6040518082815260200191505060405180910390f35b34156101a357600080fd5b6101ab610c26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101eb5780820151818401526020810190506101d0565b50505050905090810190601f1680156102185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023157600080fd5b6102476004808035906020019091905050610cc4565b6040518082815260200191505060405180910390f35b341561026857600080fd5b610270610d22565b6040518082815260200191505060405180910390f35b341561029157600080fd5b6102a76004808035906020019091905050610d2c565b6040518082815260200191505060405180910390f35b34156102c857600080fd5b6102d0610d75565b604051808260ff1660ff16815260200191505060405180910390f35b34156102f757600080fd5b6102ff610d7a565b6040518082815260200191505060405180910390f35b341561032057600080fd5b610328610d80565b005b341561033557600080fd5b61033d610f1d565b6040518082815260200191505060405180910390f35b341561035e57600080fd5b610366610f7b565b6040518082815260200191505060405180910390f35b341561038757600080fd5b61039f60048080351515906020019091905050610f81565b6040518082815260200191505060405180910390f35b34156103c057600080fd5b6103c8610fed565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f161100c565b005b34156103fe57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061109d565b6040518082815260200191505060405180910390f35b341561044b57600080fd5b61046160048080359060200190919050506110e6565b005b341561046e57600080fd5b61047661114c565b6040518082815260200191505060405180910390f35b341561049757600080fd5b61049f6111b4565b604051808215151515815260200191505060405180910390f35b34156104c457600080fd5b6104cc61120c565b6040518082815260200191505060405180910390f35b34156104ed57600080fd5b6104f5611221565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053557808201518184015260208101905061051a565b50505050905090810190601f1680156105625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561057b57600080fd5b6105b0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506112bf565b604051808215151515815260200191505060405180910390f35b34156105d557600080fd5b6105eb60048080359060200190919050506115d8565b005b34156105f857600080fd5b610600611833565b005b61062e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061189a565b6040518082815260200191505060405180910390f35b341561064f57600080fd5b6106576118ac565b005b6000806000806000806000806000806000600654421015151561067b57600080fd5b339950600754421115156106e8576004548d11156106e75761069f8d600454611a20565b98506004549c508973ffffffffffffffffffffffffffffffffffffffff166108fc8a9081150290604051600060405180830381858888f1935050505015156106e657600080fd5b5b5b6107006106f98e600660ff16611a39565b600a611a74565b975061070d886002611a74565b96506107198888611a20565b9550610726866003611a74565b9450610734600b5486611a8f565b600b819055506107448686611a20565b95506107508d89611a20565b935061075b84611aad565b92506801000000000000000086029150600083118015610787575060025461078584600254611a8f565b115b151561079257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141580156107fb57508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b80156108485750600554600860008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156108de57610896600960008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611a8f565b600960008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109af565b61094960096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611a8f565b60096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006002541115610a1a576109c660025484611a8f565b6002819055506002546801000000000000000087028115156109e457fe5b04600360008282540192505081905550600254680100000000000000008702811515610a0c57fe5b048302820382039150610a22565b826002819055505b610a6b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8f565b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836003540203905080600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3829a505050505050505050505092915050565b600068010000000000000000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003540203811515610c1e57fe5b049050919050565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbc5780601f10610c9157610100808354040283529160200191610cbc565b820191906000526020600020905b815481529060010190602001808311610c9f57829003601f168201915b505050505081565b60008060008060075442111515610ce657600454851115610ce55760045494505b5b610cfe610cf786600660ff16611a39565b600a611a74565b9250610d0a8584611a20565b9150610d1582611aad565b9050809350505050919050565b6000600254905090565b6000806000806002548511151515610d4357600080fd5b610d4c85611b39565b9250610d5c83600a60ff16611a74565b9150610d688383611a20565b9050809350505050919050565b601281565b600b5481565b6000806000610d8f6001610f81565b111515610d9b57600080fd5b339150610da86000610f81565b9050680100000000000000008102600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ecb57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006002541415610f42576402540be40064174876e800039350610f75565b610f53670de0b6b3a7640000611b39565b9250610f6383600a60ff16611a74565b9150610f6f8383611a20565b90508093505b50505090565b60055481565b60008033905082610f9a57610f9581610b84565b610fe5565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe382610b84565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106a57600080fd5b61107a600b54600a60ff16611a74565b9050611088600b5482611a20565b600b81905550611099816000611be4565b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114257600080fd5b8060058190555050565b60008060008060006002541415611171576402540be40064174876e8000193506111ae565b611182670de0b6b3a7640000611b39565b925061119c61119584600660ff16611a39565b600a611a74565b91506111a88383611a8f565b90508093505b50505090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60008033905061121b8161109d565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112b75780601f1061128c576101008083540402835291602001916112b7565b820191906000526020600020905b81548152906001019060200180831161129a57829003601f168201915b505050505081565b6000806000806000806112d061120c565b1115156112dc57600080fd5b339350600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054861115151561132d57600080fd5b60006113396001610f81565b111561134857611347610d80565b5b61135686600a60ff16611a74565b92506113628684611a20565b915061136d83611b39565b905061137b60025484611a20565b6002819055506113ca600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a20565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611456600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611a8f565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560035402600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160035402600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061155f60035460025468010000000000000000840281151561155957fe5b04611a8f565b6003819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b6000806000806000806000806115ec61120c565b1115156115f857600080fd5b339650600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054881115151561164957600080fd5b87955061165586611b39565b945061166585600a60ff16611a74565b9350611672846002611a74565b9250611680600b5484611a8f565b600b819055506116908585611a20565b915061169c8484611a20565b93506116aa60025487611a20565b6002819055506116f9600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a20565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202866003540201905080600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600060025411156117d3576117cc6003546002546801000000000000000087028115156117c657fe5b04611a8f565b6003819055505b8673ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398784604051808381526020018281526020019250505060405180910390a25050505050505050565b600080339150600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561188e5761188d816115d8565b5b611896610d80565b5050565b60006118a63483610659565b50919050565b6000806000806118bc6001610f81565b1115156118c857600080fd5b6118d26000610f81565b9250339150680100000000000000008302600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119c3836000610659565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b6000828211151515611a2e57fe5b818303905092915050565b6000806000841415611a4e5760009150611a6d565b8284029050828482811515611a5f57fe5b04141515611a6957fe5b8091505b5092915050565b6000808284811515611a8257fe5b0490508091505092915050565b6000808284019050838110151515611aa357fe5b8091505092915050565b6000806000670de0b6b3a764000064174876e8000291506002546402540be400611b22611b1c600254866402540be4006002020202600280540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f28565b85611a20565b811515611b2b57fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600254019150670de0b6b3a7640000611bcd670de0b6b3a764000085036402540be400670de0b6b3a764000086811515611b8b57fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a03811515611bb657fe5b046402540be40002811515611bc757fe5b04611a20565b811515611bd657fe5b049050809350505050919050565b60008060008060008060008060006006544210151515611c0357600080fd5b339750611c1e611c178c600660ff16611a39565b600a611a74565b9650611c2b876002611a74565b9550611c378787611a20565b9450611c438b88611a20565b9350611c4e84611aad565b92506801000000000000000085029150600083118015611c7a5750600254611c7884600254611a8f565b115b1515611c8557600080fd5b611cf060096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a8f565b60096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002541115611dc057611d6c60025484611a8f565b600281905550600254680100000000000000008602811515611d8a57fe5b04600360008282540192505081905550600254680100000000000000008602811515611db257fe5b048302820382039150611dc8565b826002819055505b611e11600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8f565b600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836003540203905080600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508973ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58d86604051808381526020018281526020019250505060405180910390a3829850505050505050505092915050565b600080600260018401811515611f3a57fe5b0490508291505b81811015611f6d578091506002818285811515611f5a57fe5b0401811515611f6557fe5b049050611f41565b509190505600a165627a7a72305820fb6255e2b2b1a2b547b0aa8ea3b40ff9e79c14837accbec80abc7d0bd1a073080029

Deployed Bytecode

0x60606040526004361061013d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b1461014b57806306fdde031461019857806310d0ffdd1461022657806318160ddd1461025d5780632260937314610286578063313ce567146102bd5780633818c83c146102ec5780633ccfd60b146103155780634b7503341461032a57806356d399e814610353578063688abbf71461037c5780636b2f4632146103b55780636d67efdc146103de57806370a08231146103f35780638328b610146104405780638620410b146104635780638f32d59b1461048c578063949e8acd146104b957806395d89b41146104e2578063a9059cbb14610570578063e4849b32146105ca578063e9fad8ee146105ed578063f088d54714610602578063fdb5a03e14610644575b610148346000610659565b50005b341561015657600080fd5b610182600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b84565b6040518082815260200191505060405180910390f35b34156101a357600080fd5b6101ab610c26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101eb5780820151818401526020810190506101d0565b50505050905090810190601f1680156102185780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561023157600080fd5b6102476004808035906020019091905050610cc4565b6040518082815260200191505060405180910390f35b341561026857600080fd5b610270610d22565b6040518082815260200191505060405180910390f35b341561029157600080fd5b6102a76004808035906020019091905050610d2c565b6040518082815260200191505060405180910390f35b34156102c857600080fd5b6102d0610d75565b604051808260ff1660ff16815260200191505060405180910390f35b34156102f757600080fd5b6102ff610d7a565b6040518082815260200191505060405180910390f35b341561032057600080fd5b610328610d80565b005b341561033557600080fd5b61033d610f1d565b6040518082815260200191505060405180910390f35b341561035e57600080fd5b610366610f7b565b6040518082815260200191505060405180910390f35b341561038757600080fd5b61039f60048080351515906020019091905050610f81565b6040518082815260200191505060405180910390f35b34156103c057600080fd5b6103c8610fed565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f161100c565b005b34156103fe57600080fd5b61042a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061109d565b6040518082815260200191505060405180910390f35b341561044b57600080fd5b61046160048080359060200190919050506110e6565b005b341561046e57600080fd5b61047661114c565b6040518082815260200191505060405180910390f35b341561049757600080fd5b61049f6111b4565b604051808215151515815260200191505060405180910390f35b34156104c457600080fd5b6104cc61120c565b6040518082815260200191505060405180910390f35b34156104ed57600080fd5b6104f5611221565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561053557808201518184015260208101905061051a565b50505050905090810190601f1680156105625780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561057b57600080fd5b6105b0600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506112bf565b604051808215151515815260200191505060405180910390f35b34156105d557600080fd5b6105eb60048080359060200190919050506115d8565b005b34156105f857600080fd5b610600611833565b005b61062e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061189a565b6040518082815260200191505060405180910390f35b341561064f57600080fd5b6106576118ac565b005b6000806000806000806000806000806000600654421015151561067b57600080fd5b339950600754421115156106e8576004548d11156106e75761069f8d600454611a20565b98506004549c508973ffffffffffffffffffffffffffffffffffffffff166108fc8a9081150290604051600060405180830381858888f1935050505015156106e657600080fd5b5b5b6107006106f98e600660ff16611a39565b600a611a74565b975061070d886002611a74565b96506107198888611a20565b9550610726866003611a74565b9450610734600b5486611a8f565b600b819055506107448686611a20565b95506107508d89611a20565b935061075b84611aad565b92506801000000000000000086029150600083118015610787575060025461078584600254611a8f565b115b151561079257600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff16141580156107fb57508973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1614155b80156108485750600554600860008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b156108de57610896600960008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611a8f565b600960008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506109af565b61094960096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205488611a8f565b60096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006002541115610a1a576109c660025484611a8f565b6002819055506002546801000000000000000087028115156109e457fe5b04600360008282540192505081905550600254680100000000000000008702811515610a0c57fe5b048302820382039150610a22565b826002819055505b610a6b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8f565b600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836003540203905080600a60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508b73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58f86604051808381526020018281526020019250505060405180910390a3829a505050505050505050505092915050565b600068010000000000000000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003540203811515610c1e57fe5b049050919050565b60008054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610cbc5780601f10610c9157610100808354040283529160200191610cbc565b820191906000526020600020905b815481529060010190602001808311610c9f57829003601f168201915b505050505081565b60008060008060075442111515610ce657600454851115610ce55760045494505b5b610cfe610cf786600660ff16611a39565b600a611a74565b9250610d0a8584611a20565b9150610d1582611aad565b9050809350505050919050565b6000600254905090565b6000806000806002548511151515610d4357600080fd5b610d4c85611b39565b9250610d5c83600a60ff16611a74565b9150610d688383611a20565b9050809350505050919050565b601281565b600b5481565b6000806000610d8f6001610f81565b111515610d9b57600080fd5b339150610da86000610f81565b9050680100000000000000008102600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515610ecb57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b60008060008060006002541415610f42576402540be40064174876e800039350610f75565b610f53670de0b6b3a7640000611b39565b9250610f6383600a60ff16611a74565b9150610f6f8383611a20565b90508093505b50505090565b60055481565b60008033905082610f9a57610f9581610b84565b610fe5565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fe382610b84565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106a57600080fd5b61107a600b54600a60ff16611a74565b9050611088600b5482611a20565b600b81905550611099816000611be4565b5050565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114257600080fd5b8060058190555050565b60008060008060006002541415611171576402540be40064174876e8000193506111ae565b611182670de0b6b3a7640000611b39565b925061119c61119584600660ff16611a39565b600a611a74565b91506111a88383611a8f565b90508093505b50505090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b60008033905061121b8161109d565b91505090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112b75780601f1061128c576101008083540402835291602001916112b7565b820191906000526020600020905b81548152906001019060200180831161129a57829003601f168201915b505050505081565b6000806000806000806112d061120c565b1115156112dc57600080fd5b339350600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054861115151561132d57600080fd5b60006113396001610f81565b111561134857611347610d80565b5b61135686600a60ff16611a74565b92506113628684611a20565b915061136d83611b39565b905061137b60025484611a20565b6002819055506113ca600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a20565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611456600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483611a8f565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560035402600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160035402600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061155f60035460025468010000000000000000840281151561155957fe5b04611a8f565b6003819055508673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600194505050505092915050565b6000806000806000806000806115ec61120c565b1115156115f857600080fd5b339650600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054881115151561164957600080fd5b87955061165586611b39565b945061166585600a60ff16611a74565b9350611672846002611a74565b9250611680600b5484611a8f565b600b819055506116908585611a20565b915061169c8484611a20565b93506116aa60025487611a20565b6002819055506116f9600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a20565b600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202866003540201905080600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600060025411156117d3576117cc6003546002546801000000000000000087028115156117c657fe5b04611a8f565b6003819055505b8673ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398784604051808381526020018281526020019250505060405180910390a25050505050505050565b600080339150600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081111561188e5761188d816115d8565b5b611896610d80565b5050565b60006118a63483610659565b50919050565b6000806000806118bc6001610f81565b1115156118c857600080fd5b6118d26000610f81565b9250339150680100000000000000008302600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506119c3836000610659565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b6000828211151515611a2e57fe5b818303905092915050565b6000806000841415611a4e5760009150611a6d565b8284029050828482811515611a5f57fe5b04141515611a6957fe5b8091505b5092915050565b6000808284811515611a8257fe5b0490508091505092915050565b6000808284019050838110151515611aa357fe5b8091505092915050565b6000806000670de0b6b3a764000064174876e8000291506002546402540be400611b22611b1c600254866402540be4006002020202600280540a60026402540be4000a02670de0b6b3a76400008a02670de0b6b3a76400006402540be40002600202026002890a010101611f28565b85611a20565b811515611b2b57fe5b040390508092505050919050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000600254019150670de0b6b3a7640000611bcd670de0b6b3a764000085036402540be400670de0b6b3a764000086811515611b8b57fe5b046402540be4000264174876e8000103026002670de0b6b3a7640000876002890a03811515611bb657fe5b046402540be40002811515611bc757fe5b04611a20565b811515611bd657fe5b049050809350505050919050565b60008060008060008060008060006006544210151515611c0357600080fd5b339750611c1e611c178c600660ff16611a39565b600a611a74565b9650611c2b876002611a74565b9550611c378787611a20565b9450611c438b88611a20565b9350611c4e84611aad565b92506801000000000000000085029150600083118015611c7a5750600254611c7884600254611a8f565b115b1515611c8557600080fd5b611cf060096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205487611a8f565b60096000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006002541115611dc057611d6c60025484611a8f565b600281905550600254680100000000000000008602811515611d8a57fe5b04600360008282540192505081905550600254680100000000000000008602811515611db257fe5b048302820382039150611dc8565b826002819055505b611e11600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484611a8f565b600860008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081836003540203905080600a60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508973ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d58d86604051808381526020018281526020019250505060405180910390a3829850505050505050505092915050565b600080600260018401811515611f3a57fe5b0490508291505b81811015611f6d578091506002818285811515611f5a57fe5b0401811515611f6557fe5b049050611f41565b509190505600a165627a7a72305820fb6255e2b2b1a2b547b0aa8ea3b40ff9e79c14837accbec80abc7d0bd1a073080029

Deployed Bytecode Sourcemap

28:20290:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3759:30;3774:9;3785:3;3759:14;:30::i;:::-;;28:20290;10831:254;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1470:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1470:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14006:558;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9449:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14682:407;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1546:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2663:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5063:611;;;;;;;;;;;;;;11163:534;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2102:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10184:307;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9126:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2979:254;;;;;;;;;;;;;;10575:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8757:177;;;;;;;;;;;;;;;;;;;;;;;;;;11774:550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9262:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9646:182;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1509:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7310:1375;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5738:1437;;;;;;;;;;;;;;;;;;;;;;;;;;4678:312;;;;;;;;;;;;;;3369:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3877:735;;;;;;;;;;;;;;15247:2512;15375:7;15400:24;15538:14;15754:27;15859:22;15937:18;16023:16;16217:22;16305:23;16375:12;17462:22;471:11;;464:3;:18;;456:27;;;;;;;;15427:10;15400:37;;15460:13;;15453:3;:20;;15450:269;;;15510:12;;15490:17;:32;15487:221;;;15555:44;15568:17;15586:12;;15555;:44::i;:::-;15538:61;;15634:12;;15614:32;;15661:16;:25;;:33;15687:6;15661:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15487:221;15450:269;15784:58;15797:40;15810:17;1622:1;15797:40;;:12;:40::i;:::-;15839:2;15784:12;:58::i;:::-;15754:88;;15884:36;15897:19;15918:1;15884:12;:36::i;:::-;15859:61;;15958:49;15971:19;15992:14;15958:12;:49::i;:::-;15937:70;;16042:26;16055:10;16066:1;16042:12;:26::i;:::-;16023:45;;16103:30;16116:7;;16124:8;16103:12;:30::i;:::-;16093:7;:40;;;;16166:34;16179:10;16191:8;16166:12;:34::i;:::-;16152:48;;16242:52;16255:17;16274:19;16242:12;:52::i;:::-;16217:77;;16331:33;16349:14;16331:17;:33::i;:::-;16305:59;;1963:5;16390:10;:22;16375:37;;16451:1;16433:15;:19;:82;;;;;16502:12;;16457:42;16470:15;16486:12;;16457;:42::i;:::-;:57;16433:82;16425:91;;;;;;;;16561:42;16546:57;;:11;:57;;;;:105;;;;;16635:16;16620:31;;:11;:31;;;;16546:105;:176;;;;;16704:18;;16668:19;:32;16688:11;16668:32;;;;;;;;;;;;;;;;:54;;16546:176;16529:446;;;16780:59;16793:16;:29;16810:11;16793:29;;;;;;;;;;;;;;;;16824:14;16780:12;:59::i;:::-;16748:16;:29;16765:11;16748:29;;;;;;;;;;;;;;;:91;;;;16529:446;;;16904:59;16917:16;:29;16934:11;;;;;;;;;;;16917:29;;;;;;;;;;;;;;;;16948:14;16904:12;:59::i;:::-;16872:16;:29;16889:11;;;;;;;;;;;16872:29;;;;;;;;;;;;;;;:91;;;;16529:446;17005:1;16990:12;;:16;16987:342;;;17037:43;17050:12;;17064:15;17037:12;:43::i;:::-;17022:12;:58;;;;17141:12;;1963:5;17115:10;:22;:39;;;;;;;;17095:15;;:60;;;;;;;;;;;17236:12;;1963:5;17210:10;:22;:39;;;;;;;;17191:15;:59;17185:4;:66;17177:4;:75;17170:82;;16987:342;;;17302:15;17287:12;:30;;;;16987:342;17381:68;17394:19;:37;17414:16;17394:37;;;;;;;;;;;;;;;;17433:15;17381:12;:68::i;:::-;17341:19;:37;17361:16;17341:37;;;;;;;;;;;;;;;:108;;;;17535:4;17516:15;17498;;:33;17497:42;17462:78;;17583:15;17551:10;:28;17562:16;17551:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;17704:11;17634:82;;17650:16;17634:82;;;17668:17;17687:15;17634:82;;;;;;;;;;;;;;;;;;;;;;;;17736:15;17729:22;;15247:2512;;;;;;;;;;;;;;:::o;10831:254::-;10925:7;1963:5;11036:10;:28;11047:16;11036:28;;;;;;;;;;;;;;;;10995:19;:37;11015:16;10995:37;;;;;;;;;;;;;;;;10977:15;;:55;10968:96;10957:120;;;;;;;;10950:127;;10831:254;;;:::o;1470:32::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14006:558::-;14112:7;14290:18;14384:22;14462:23;14147:13;;14140:3;:20;;14137:143;;;14196:12;;14177:16;:31;14174:95;;;14243:12;;14224:31;;14174:95;14137:143;14311:57;14324:39;14337:16;1622:1;14324:39;;:12;:39::i;:::-;14365:2;14311:12;:57::i;:::-;14290:78;;14409:42;14422:16;14440:10;14409:12;:42::i;:::-;14384:67;;14488:33;14506:14;14488:17;:33::i;:::-;14462:59;;14541:15;14534:22;;14006:558;;;;;;:::o;9449:122::-;9519:7;9551:12;;9544:19;;9449:122;:::o;14682:407::-;14787:7;14861:17;14924:18;14989:22;14837:12;;14820:13;:29;;14812:38;;;;;;;;14881:32;14899:13;14881:17;:32::i;:::-;14861:52;;14945:33;14958:9;1670:2;14945:33;;:12;:33::i;:::-;14924:54;;15014:35;15027:9;15038:10;15014:12;:35::i;:::-;14989:60;;15067:14;15060:21;;14682:407;;;;;;:::o;1546:35::-;1579:2;1546:35;:::o;2663:26::-;;;;:::o;5063:611::-;5165:24;5213:18;395:1;375:17;387:4;375:11;:17::i;:::-;:21;367:30;;;;;;;;5192:10;5165:37;;5234:18;5246:5;5234:11;:18::i;:::-;5213:39;;1963:5;5380:10;:22;5337:10;:28;5348:16;5337:28;;;;;;;;;;;;;;;;:66;;;;;;;;;;;5457:16;:34;5474:16;5457:34;;;;;;;;;;;;;;;;5443:48;;;;5539:1;5502:16;:34;5519:16;5502:34;;;;;;;;;;;;;;;:38;;;;5553:16;:25;;:37;5579:10;5553:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5637:16;5626:40;;;5655:10;5626:40;;;;;;;;;;;;;;;;;;5063:611;;:::o;11163:534::-;11231:7;11455:17;11513:18;11582:22;11355:1;11339:12;;:17;11336:354;;;1902:16;1829:15;11379:43;11372:50;;;;11336:354;11475:23;11493:4;11475:17;:23::i;:::-;11455:43;;11534:33;11547:9;1670:2;11534:33;;:12;:33::i;:::-;11513:54;;11607:35;11620:9;11631:10;11607:12;:35::i;:::-;11582:60;;11664:14;11657:21;;11163:534;;;;;:::o;2102:41::-;;;;:::o;10184:307::-;10280:7;10305:24;10332:10;10305:37;;10360:21;:122;;10453:29;10465:16;10453:11;:29::i;:::-;10360:122;;;10416:16;:34;10433:16;10416:34;;;;;;;;;;;;;;;;10384:29;10396:16;10384:11;:29::i;:::-;:66;10360:122;10353:129;;10184:307;;;;:::o;9126:128::-;9205:4;9234;:12;;;9227:19;;9126:128;:::o;2979:254::-;3057:21;3036:11;;;;;;;;;;;3022:25;;:10;:25;;;3014:34;;;;;;;;3081:31;3094:7;;1767:2;3081:31;;:12;:31::i;:::-;3057:55;;3146:35;3159:7;;3167:13;3146:12;:35::i;:::-;3136:7;:45;;;;3190:35;3206:13;3221:3;3190:15;:35::i;:::-;;2979:254;:::o;10575:169::-;10667:7;10699:19;:37;10719:16;10699:37;;;;;;;;;;;;;;;;10692:44;;10575:169;;;:::o;8757:177::-;8867:11;;;;;;;;;;;8853:25;;:10;:25;;;8845:34;;;;;;;;8911:15;8890:18;:36;;;;8757:177;:::o;11774:550::-;11841:7;12065:17;12123:18;12209:22;11965:1;11949:12;;:17;11946:371;;;1902:16;1829:15;11989:43;11982:50;;;;11946:371;12085:23;12103:4;12085:17;:23::i;:::-;12065:43;;12144:50;12157:32;12170:9;1622:1;12157:32;;:12;:32::i;:::-;12191:2;12144:12;:50::i;:::-;12123:71;;12234:35;12247:9;12258:10;12234:12;:35::i;:::-;12209:60;;12291:14;12284:21;;11774:550;;;;;:::o;9262:120::-;9322:4;9363:11;;;;;;;;;;;9349:25;;:10;:25;;;9342:32;;9262:120;:::o;9646:182::-;9713:7;9738:24;9765:10;9738:37;;9793:27;9803:16;9793:9;:27::i;:::-;9786:34;;9646:182;;:::o;1509:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7310:1375::-;7432:4;7472:24;7650:17;7724:20;7798:18;266:1;253:10;:8;:10::i;:::-;:14;245:23;;;;;;;;7499:10;7472:37;;7550:19;:37;7570:16;7550:37;;;;;;;;;;;;;;;;7531:15;:56;;7522:66;;;;;;;;7624:1;7604:17;7616:4;7604:11;:17::i;:::-;:21;7601:36;;;7627:10;:8;:10::i;:::-;7601:36;7670:43;7683:15;1723:2;7670:43;;:12;:43::i;:::-;7650:63;;7747:40;7760:15;7777:9;7747:12;:40::i;:::-;7724:63;;7819:28;7837:9;7819:17;:28::i;:::-;7798:49;;7905:37;7918:12;;7932:9;7905:12;:37::i;:::-;7890:12;:52;;;;8023:68;8036:19;:37;8056:16;8036:37;;;;;;;;;;;;;;;;8075:15;8023:12;:68::i;:::-;7983:19;:37;8003:16;7983:37;;;;;;;;;;;;;;;:108;;;;8136:59;8149:19;:31;8169:10;8149:31;;;;;;;;;;;;;;;;8182:12;8136;:59::i;:::-;8102:19;:31;8122:10;8102:31;;;;;;;;;;;;;;;:93;;;;8305:15;8287;;:33;8245:10;:28;8256:16;8245:28;;;;;;;;;;;;;;;;:76;;;;;;;;;;;8386:12;8368:15;;:30;8332:10;:22;8343:10;8332:22;;;;;;;;;;;;;;;;:67;;;;;;;;;;;8475:70;8488:15;;8532:12;;1963:5;8506:10;:22;8505:39;;;;;;;;8475:12;:70::i;:::-;8457:15;:88;;;;8608:10;8581:52;;8590:16;8581:52;;;8620:12;8581:52;;;;;;;;;;;;;;;;;;8671:4;8664:11;;7310:1375;;;;;;;;:::o;5738:1437::-;5858:24;6015:15;6059:17;6116:18;6186:16;6306:22;6680;266:1;253:10;:8;:10::i;:::-;:14;245:23;;;;;;;;5885:10;5858:37;;5966:19;:37;5986:16;5966:37;;;;;;;;;;;;;;;;5947:15;:56;;5939:65;;;;;;;;6033:15;6015:33;;6079:26;6097:7;6079:17;:26::i;:::-;6059:46;;6137:33;6150:9;1670:2;6137:33;;:12;:33::i;:::-;6116:54;;6205:26;6218:10;6229:1;6205:12;:26::i;:::-;6186:45;;6265:30;6278:7;;6286:8;6265:12;:30::i;:::-;6255:7;:40;;;;6331:35;6344:9;6355:10;6331:12;:35::i;:::-;6306:60;;6391:34;6404:10;6416:8;6391:12;:34::i;:::-;6377:48;;6484:35;6497:12;;6511:7;6484:12;:35::i;:::-;6469:12;:50;;;;6570:60;6583:19;:37;6603:16;6583:37;;;;;;;;;;;;;;;;6622:7;6570:12;:60::i;:::-;6530:19;:37;6550:16;6530:37;;;;;;;;;;;;;;;:100;;;;1963:5;6744:14;:26;6733:7;6715:15;;:25;:56;6680:92;;6815:15;6783:10;:28;6794:16;6783:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;6903:1;6888:12;;:16;6884:194;;;6996:70;7009:15;;7053:12;;1963:5;7027:10;:22;7026:39;;;;;;;;6996:12;:70::i;:::-;6978:15;:88;;;;6884:194;7125:16;7113:54;;;7143:7;7152:14;7113:54;;;;;;;;;;;;;;;;;;;;;;;;5738:1437;;;;;;;;:::o;4678:312::-;4781:24;4829:15;4808:10;4781:37;;4847:19;:37;4867:16;4847:37;;;;;;;;;;;;;;;;4829:55;;4908:1;4898:7;:11;4895:29;;;4911:13;4916:7;4911:4;:13::i;:::-;4895:29;4972:10;:8;:10::i;:::-;4678:312;;:::o;3369:155::-;3453:7;3478:38;3493:9;3504:11;3478:14;:38::i;:::-;;3369:155;;;:::o;3877:735::-;3984:18;4121:24;4466:15;395:1;375:17;387:4;375:11;:17::i;:::-;:21;367:30;;;;;;;;4005:18;4017:5;4005:11;:18::i;:::-;3984:39;;4148:10;4121:37;;1963:5;4212:10;:22;4169:10;:28;4180:16;4169:28;;;;;;;;;;;;;;;;:66;;;;;;;;;;;4294:16;:34;4311:16;4294:34;;;;;;;;;;;;;;;;4280:48;;;;4376:1;4339:16;:34;4356:16;4339:34;;;;;;;;;;;;;;;:38;;;;4484:31;4499:10;4511:3;4484:14;:31::i;:::-;4466:49;;4566:16;4551:53;;;4584:10;4596:7;4551:53;;;;;;;;;;;;;;;;;;;;;;;;3877:735;;;:::o;21232:123::-;21290:7;21322:1;21317;:6;;21310:14;;;;;;21346:1;21342;:5;21335:12;;21232:123;;;;:::o;20515:208::-;20573:7;20650:9;20602:1;20597;:6;20593:47;;;20627:1;20620:8;;;;20593:47;20666:1;20662;:5;20650:17;;20694:1;20689;20685;:5;;;;;;;;:10;20678:18;;;;;;20714:1;20707:8;;20515:208;;;;;;:::o;20818:288::-;20876:7;20975:9;20991:1;20987;:5;;;;;;;;20975:17;;21097:1;21090:8;;20818:288;;;;;:::o;21430:147::-;21488:7;21508:9;21524:1;21520;:5;21508:17;;21548:1;21543;:6;;21536:14;;;;;;21568:1;21561:8;;21430:147;;;;;:::o;18055:973::-;18150:7;18175:26;18240:23;18225:4;1829:15;18204:25;18175:54;;18962:12;;1902:16;18354:555;18390:457;18807:12;;18788:18;1902:16;18761:1;:26;:45;:58;18696:1;18682:12;;:15;18678:1;1902:16;18652:27;18651:47;18583:4;18571:9;:16;18564:4;1902:16;18539:29;18536:1;:33;:52;18472:1;18452:18;:21;18451:138;:248;:369;18390:4;:457::i;:::-;18872:18;18354:12;:555::i;:::-;18291:658;;;;;;;;18276:699;18240:735;;19005:15;18998:22;;18055:973;;;;;:::o;19291:722::-;19384:7;19411:15;19456:20;19511:22;19440:4;19430:7;:14;19411:34;;19495:4;19480:12;;:19;19456:44;;19968:4;19600:357;19863:4;19853:7;:14;1902:16;19772:4;19759:12;:17;;;;;;;;1902:16;19733:44;1829:15;19712:66;19681:147;19654:214;19941:1;19934:4;19925:7;19923:1;19914:7;:10;:18;19913:25;;;;;;;;1902:16;19889:50;19888:54;;;;;;;;19600:12;:357::i;:::-;:372;;;;;;;;19511:462;;19991:14;19984:21;;19291:722;;;;;;:::o;12332:1557::-;12435:7;12453:24;12499:27;12602:22;12678:18;12757:22;12843:23;12911:12;13622:22;471:11;;464:3;:18;;456:27;;;;;;;;12480:10;12453:37;;12529:58;12542:40;12555:17;1622:1;12542:40;;:12;:40::i;:::-;12584:2;12529:12;:58::i;:::-;12499:88;;12627:36;12640:19;12661:1;12627:12;:36::i;:::-;12602:61;;12699:49;12712:19;12733:14;12699:12;:49::i;:::-;12678:70;;12782:52;12795:17;12814:19;12782:12;:52::i;:::-;12757:77;;12869:33;12887:14;12869:17;:33::i;:::-;12843:59;;1963:5;12926:10;:22;12911:37;;12985:1;12967:15;:19;:82;;;;;13036:12;;12991:42;13004:15;13020:12;;12991;:42::i;:::-;:57;12967:82;12959:91;;;;;;;;13093:59;13106:16;:29;13123:11;;;;;;;;;;;13106:29;;;;;;;;;;;;;;;;13137:14;13093:12;:59::i;:::-;13061:16;:29;13078:11;;;;;;;;;;;13061:29;;;;;;;;;;;;;;;:91;;;;13181:1;13166:12;;:16;13163:330;;;13211:43;13224:12;;13238:15;13211:12;:43::i;:::-;13196:12;:58;;;;13313:12;;1963:5;13287:10;:22;:39;;;;;;;;13267:15;;:60;;;;;;;;;;;13406:12;;1963:5;13380:10;:22;:39;;;;;;;;13361:15;:59;13355:4;:66;13347:4;:75;13340:82;;13163:330;;;13468:15;13453:12;:30;;;;13163:330;13543:68;13556:19;:37;13576:16;13556:37;;;;;;;;;;;;;;;;13595:15;13543:12;:68::i;:::-;13503:19;:37;13523:16;13503:37;;;;;;;;;;;;;;;:108;;;;13695:4;13676:15;13658;;:33;13657:42;13622:78;;13741:15;13709:10;:28;13720:16;13709:28;;;;;;;;;;;;;;;;:47;;;;;;;;;;;13837:11;13767:82;;13783:16;13767:82;;;13801:17;13820:15;13767:82;;;;;;;;;;;;;;;;;;;;;;;;13867:15;13860:22;;12332:1557;;;;;;;;;;;;:::o;20117:198::-;20162:6;20181;20200:1;20195;20191;:5;20190:11;;;;;;;;20181:20;;20216:1;20212:5;;20228:80;20239:1;20235;:5;20228:80;;;20261:1;20257:5;;20295:1;20290;20286;20282;:5;;;;;;;;:9;20281:15;;;;;;;;20277:19;;20228:80;;;20117:198;;;;:::o

Swarm Source

bzzr://fb6255e2b2b1a2b547b0aa8ea3b40ff9e79c14837accbec80abc7d0bd1a07308

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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