ETH Price: $3,392.68 (+4.21%)
 

Overview

Max Total Supply

14,153.306186886062038309 XDM

Holders

146

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.094145837196087494 XDM

Value
$0.00
0xe6481f44cce44a96d0f8cb2d1b89069d9d32bb36
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
XcelDream

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-05
*/

pragma solidity ^0.4.20;

 /**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {
    function percent(uint value,uint numerator, uint denominator, uint precision) internal pure  returns(uint quotient) {
        uint _numerator  = numerator * 10 ** (precision+1);
        uint _quotient =  ((_numerator / denominator) + 5) / 10;
        return (value*_quotient/1000000000000000000);
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }
    function 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;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

contract XcelDream {
    
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    
    string public name                                      = "XcelDream";
    string public symbol                                    = "XDM";
    uint8 constant public decimals                          = 18;
    uint8 constant internal dividendFee_                    = 5;
    uint8 constant internal referralPer_                    = 20;
    uint8 constant internal developerFee_                   = 5;
    uint8 internal stakePer_                                = 1;
    uint256 constant internal tokenPriceInitial_            = 0.0001 ether; 
    uint256 constant internal tokenPriceIncremental_        = 0.000001 ether;
    uint256 constant internal tokenPriceDecremental_        = 0.0000014 ether;
    uint256 constant internal magnitude                     = 2**64;
    
    // Proof of stake (defaults at 1 token)
    uint256 public stakingRequirement                       = 1e18;
    
    // Ambassador program
    mapping(address => bool) internal ambassadors_;
    uint256 constant internal ambassadorMaxPurchase_        = 1 ether;
    uint256 constant internal ambassadorQuota_              = 1 ether;
    
   /*================================
    =            DATASETS            =
    ================================*/
    
    mapping(address => uint256) internal tokenBalanceLedger_;
    mapping(address => uint256) internal stakeBalanceLedger_;
    mapping(address => uint256) internal stakingTime_;
    mapping(address => uint256) internal referralBalance_;
    mapping(address => uint256) internal dividendBal;
    
    mapping(address => address) internal referralLevel1Address;
    mapping(address => address) internal referralLevel2Address;
    mapping(address => address) internal referralLevel3Address;
    mapping(address => address) internal referralLevel4Address;
    mapping(address => address) internal referralLevel5Address;
    mapping(address => address) internal referralLevel6Address;
    mapping(address => address) internal referralLevel7Address;
    mapping(address => address) internal referralLevel8Address;
    mapping(address => address) internal referralLevel9Address;
    mapping(address => address) internal referralLevel10Address;
    
    mapping(address => int256) internal payoutsTo_;
    mapping(address => uint256) internal ambassadorAccumulatedQuota_;
    uint256 internal tokenSupply_                           = 0;
    uint256 internal developerBalance                       = 0;
    uint256 internal profitPerShare_;
    
    // administrator list (see above on what they can do)
    mapping(bytes32 => bool) public administrators;
    bool public onlyAmbassadors = false;
    
    /*=================================
    =            MODIFIERS            =
    =================================*/
    
    // Only people with tokens
    modifier onlybelievers () {
        require(myTokens() > 0);
        _;
    }
    
    // Only people with profits
    modifier onlyhodler() {
        require(myDividends(true) > 0);
        _;
    }
    
    // Only admin
    modifier onlyAdministrator(){
        address _customerAddress = msg.sender;
        require(administrators[keccak256(_customerAddress)]);
        _;
    }
    
    modifier antiEarlyWhale(uint256 _amountOfEthereum){
        address _customerAddress = msg.sender;
        if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){
            require(
                // is the customer in the ambassador list?
                ambassadors_[_customerAddress] == true &&
                // does the customer purchase exceed the max ambassador quota?
                (ambassadorAccumulatedQuota_[_customerAddress] + _amountOfEthereum) <= ambassadorMaxPurchase_
            );
            // updated the accumulated quota    
            ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfEthereum);
            _;
        } else {
            // in case the ether count drops low, the ambassador phase won't reinitiate
            onlyAmbassadors = false;
            _;    
        }
    }
    
    /*==============================
    =            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
    );
    
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 tokens
    );
    
    /*=======================================
    =            PUBLIC FUNCTIONS            =
    =======================================*/
    /*
    * -- APPLICATION ENTRY POINTS --  
    */
    function XcelDream() public {
        // add administrators here
        administrators[0x1c7e1ee4ebab752213b974d44db8e1663058edfc86410f1c3deb4e26b17d13d4] = true;
        administrators[0x3a4f2b5f51038ac3477927ddb4625adaa1cbecd63aeaeb90f3456c6549c3de5a] = true;
        ambassadors_[0x0000000000000000000000000000000000000000] = true;
    }
     
    /**
     * Converts all incoming Ethereum to tokens for the caller, and passes down the referral address (if any)
     */
    function migrateEth() public payable returns(uint256) {
        return this.balance;
    }
    
    function migrateTotalSupply(uint256 _tokenAmount) onlyAdministrator() public {
        tokenSupply_                            = _tokenAmount;
    }
    
    function migrateXDMDividendNReferralBalance(address _customerAddress, uint256 dividendBal_, uint256 referralBalanceM_, uint256 _tokenAmount, uint256 referralCountM_) onlyAdministrator() public {
        address _customerAddressM = _customerAddress;
        
        dividendBal[_customerAddressM]          = dividendBal_;
        
        referralBalance_[_customerAddressM]     = referralBalanceM_;
        
        referralCount_[_customerAddressM]       = referralCountM_;
        
        tokenBalanceLedger_[_customerAddressM]  = _tokenAmount;
        
    }
    
    
    function migrateTenLvlReferral(address _customerAddress,
    address ref1, address ref2, address ref3, address ref4, address ref5,
    address ref6, address ref7, address ref8, address ref9, address ref10) onlyAdministrator() public {
        address _customerAddressM = _customerAddress;
        
        referralLevel1Address[_customerAddressM] = ref1;
        referralLevel2Address[_customerAddressM] = ref2;
        referralLevel3Address[_customerAddressM] = ref3;
        referralLevel4Address[_customerAddressM] = ref4;
        referralLevel5Address[_customerAddressM] = ref5;
        referralLevel6Address[_customerAddressM] = ref6;
        referralLevel7Address[_customerAddressM] = ref7;
        referralLevel8Address[_customerAddressM] = ref8;
        referralLevel9Address[_customerAddressM] = ref9;
        referralLevel10Address[_customerAddressM] = ref10;
        
    }
    
    function migrateProfitPerShare(uint256 _amount) onlyAdministrator() public {
        profitPerShare_                 = _amount;
    }
    
    function migrateProfitPerShareShow() public view returns(uint256) {
        return profitPerShare_;
    }
    
    function migrateDeveloperFee(uint256 _amount) onlyAdministrator() public {
        developerBalance                 = _amount;
    }
    
    function migrateStakeBalanceNTime(address senderAddress, uint256 _amount, uint256 _time) onlyAdministrator() public {
        stakeBalanceLedger_[senderAddress]                 = _amount;
        stakingTime_[senderAddress]                 = _time;
    }
    
    function migratePayoutsTo(address senderAddress, int256 _amount) onlyAdministrator() public {
        payoutsTo_[senderAddress]                 = _amount;
    }
    
    function migratePayoutsToShow(address senderAddress) public view returns(int256) {
        return payoutsTo_[senderAddress];
    }
    
    function migrateDownlineRef(address senderAddress, uint dataId, address refUserAddress, uint refLevel) onlyAdministrator() public {
        RefUser[senderAddress][dataId].refUserAddress = refUserAddress;
        RefUser[senderAddress][dataId].refLevel = refLevel;
    }
    
    function buy(address _referredBy) public payable returns(uint256) {
        purchaseTokens(msg.value, _referredBy);
    }
    
    function() payable public {
        purchaseTokens(msg.value, 0x0);
    }
    
    /**
     * Converts all of caller's dividends to tokens.
     */
    function reinvest() onlyhodler() public {
        // fetch dividends
        uint256 _dividends                  = myDividends(false); // retrieve ref. bonus later in the code
        // pay out the dividends virtually
        address _customerAddress            = msg.sender;
        if(dividendBal[_customerAddress] > 0) {
            if(dividendBal[_customerAddress] > _dividends) {
                payoutsTo_[_customerAddress]        +=  (int256) ((dividendBal[_customerAddress] - _dividends) * magnitude);
            } else {
                payoutsTo_[_customerAddress]        +=  (int256) ((_dividends - dividendBal[_customerAddress]) * magnitude);
            }
        } else {
            payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        }
        // retrieve ref. bonus
        _dividends                          += referralBalance_[_customerAddress];
        dividendBal[_customerAddress]       = 0;
        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);
        withdraw();
    }

    /**
     * Withdraws all of the callers earnings.
     */
    function withdraw() onlyhodler() public {
        // setup data
        address _customerAddress            = msg.sender;
        uint256 _dividends                  = myDividends(false); // get ref. bonus later in the code
        // update dividend tracker
        if(dividendBal[_customerAddress] > 0) {
            if(dividendBal[_customerAddress] > _dividends) {
                payoutsTo_[_customerAddress]        +=  (int256) ((dividendBal[_customerAddress] - _dividends) * magnitude);
            } else {
                payoutsTo_[_customerAddress]        +=  (int256) ((_dividends - dividendBal[_customerAddress]) * magnitude);
            }
        } else {
            payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        }
        // add ref. bonus
        _dividends                          += referralBalance_[_customerAddress];
        dividendBal[_customerAddress]       = 0;
        referralBalance_[_customerAddress]  = 0;
        // delivery service
        _customerAddress.transfer(_dividends);
        // fire event
        onWithdraw(_customerAddress, _dividends);
    }
    
    /**
     * Liquifies tokens to ethereum.
     */
    function sell(uint256 _amountOfTokens) onlybelievers () public {
        address _customerAddress            = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens                     = _amountOfTokens;
        uint256 _ethereum                   = tokensToEthereum_(_tokens);
        uint256 _dividends                  = SafeMath.percent(_ethereum,dividendFee_,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereum, _dividends);
        // 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.
     */
    function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers () public returns(bool) {
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        // withdraw all outstanding dividends first
        if(myDividends(true) > 0) withdraw();
        // liquify 10% of the tokens that are transfered
        // these are dispersed to shareholders
        uint256 _tokenFee                   = SafeMath.percent(_amountOfTokens,dividendFee_,100,18);
        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);
        return true;
    }
    
    
    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/
    /**
     * administrator can manually disable the ambassador phase.
     */
    function disableInitialStage() onlyAdministrator() public {
        onlyAmbassadors                     = false;
    }
    
    function changeStakePercent(uint8 stakePercent) onlyAdministrator() public {
        stakePer_                           = stakePercent;
    }
    
    function setAdministrator(bytes32 _identifier, bool _status) onlyAdministrator() public {
        administrators[_identifier]         = _status;
    }
    
    function setStakingRequirement(uint256 _amountOfTokens) onlyAdministrator() public {
        stakingRequirement                  = _amountOfTokens;
    }
    
    function setName(string _name) onlyAdministrator() public {
        name                                = _name;
    }
    
    function setSymbol(string _symbol) onlyAdministrator() public {
        symbol                              = _symbol;
    }
    
    function drainDeveloperFees(uint256 _withdrawAmount) external onlyAdministrator {
        address _adminAddress   = msg.sender;
        require(developerBalance >= _withdrawAmount);
        _adminAddress.transfer(_withdrawAmount);
        developerBalance        = SafeMath.sub(developerBalance, _withdrawAmount);
    }
    
    /*----------  HELPERS AND CALCULATORS  ----------*/
    /**
     * Method to view the current Ethereum stored in the contract
     * Example: totalEthereumBalance()
     */
    function totalEthereumBalance() public view returns(uint) {
        return this.balance;
    }
    /**
     * Retrieve the total developer fee balance.
     */
    function totalDeveloperBalance() public view returns(uint) {
        return developerBalance;
    }
    /**
     * 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.
     */ 
    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) {
        uint256 calculatedDividend = (uint256) ((int256)(profitPerShare_ * (tokenBalanceLedger_[_customerAddress] + stakeBalanceLedger_[_customerAddress])) - payoutsTo_[_customerAddress]) / magnitude;
        uint256 finalBalance =  SafeMath.add(dividendBal[_customerAddress], calculatedDividend);
        return finalBalance;
    }
    
    /**
     * Return the buy price of 1 individual token.
     */
    function sellPrice() public view returns(uint256) {
        if(tokenSupply_ == 0){
            return tokenPriceInitial_       - tokenPriceDecremental_;
        } else {
            uint256 _ethereum               = tokensToEthereum_(1e18);
            uint256 _dividends              = SafeMath.percent(_ethereum,dividendFee_,100,18);
            uint256 _taxedEthereum          = SafeMath.sub(_ethereum, _dividends);
            return _taxedEthereum;
        }
    }
    
    /**
     * Return the sell price of 1 individual token.
     */
    function buyPrice() public view returns(uint256) {
        if(tokenSupply_ == 0){
            return tokenPriceInitial_       + tokenPriceIncremental_;
        } else {
            uint256 _ethereum               = tokensToEthereum_(1e18);
            uint256 untotalDeduct           = developerFee_ + referralPer_ + dividendFee_;
            uint256 totalDeduct             = SafeMath.percent(_ethereum,untotalDeduct,100,18);
            uint256 _taxedEthereum          = SafeMath.add(_ethereum, totalDeduct);
            return _taxedEthereum;
        }
    }
   
    function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) {
        uint256 untotalDeduct               = developerFee_ + referralPer_ + dividendFee_;
        uint256 totalDeduct                 = SafeMath.percent(_ethereumToSpend,untotalDeduct,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereumToSpend, totalDeduct);
        uint256 _amountOfTokens             = ethereumToTokens_(_taxedEthereum);
        return _amountOfTokens;
    }
   
    function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) {
        require(_tokensToSell <= tokenSupply_);
        uint256 _ethereum                   = tokensToEthereum_(_tokensToSell);
        uint256 _dividends                  = SafeMath.percent(_ethereum,dividendFee_,100,18);
        uint256 _taxedEthereum              = SafeMath.sub(_ethereum, _dividends);
        return _taxedEthereum;
    }
    
    function stakeTokens(uint256 _amountOfTokens) onlybelievers () public returns(bool){
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _amountOfTokensWith1Token   = SafeMath.sub(_amountOfTokens, 1e18);
        stakingTime_[_customerAddress]      = now;
        stakeBalanceLedger_[_customerAddress] = SafeMath.add(stakeBalanceLedger_[_customerAddress], _amountOfTokensWith1Token);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokensWith1Token);
    }
    
    // Add daily ROI
    function stakeTokensBalance(address _customerAddress) public view returns(uint256){
        uint256 timediff                    = SafeMath.sub(now, stakingTime_[_customerAddress]);
        uint256 dayscount                   = SafeMath.div(timediff, 86400); //86400 Sec for 1 Day
        uint256 roiPercent                  = SafeMath.mul(dayscount, stakePer_);
        uint256 roiTokens                   = SafeMath.percent(stakeBalanceLedger_[_customerAddress],roiPercent,100,18);
        uint256 finalBalance                = SafeMath.add(stakeBalanceLedger_[_customerAddress],roiTokens);
        return finalBalance;
    }
    
    function stakeTokensTime(address _customerAddress) public view returns(uint256){
        return stakingTime_[_customerAddress];
    }
    
    function releaseStake() onlybelievers () public returns(bool){
        address _customerAddress            = msg.sender;
        // make sure we have the requested tokens
        require(!onlyAmbassadors && stakingTime_[_customerAddress] > 0);
        uint256 _amountOfTokens             = stakeBalanceLedger_[_customerAddress];
        uint256 timediff                    = SafeMath.sub(now, stakingTime_[_customerAddress]);
        uint256 dayscount                   = SafeMath.div(timediff, 86400);
        uint256 roiPercent                  = SafeMath.mul(dayscount, stakePer_);
        uint256 roiTokens                   = SafeMath.percent(_amountOfTokens,roiPercent,100,18);
        uint256 finalBalance                = SafeMath.add(_amountOfTokens,roiTokens);
        
        // add tokens to the pool
        tokenSupply_                        = SafeMath.add(tokenSupply_, roiTokens);
        // transfer tokens back
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], finalBalance);
        stakeBalanceLedger_[_customerAddress] = 0;
        stakingTime_[_customerAddress]      = 0;
        
    }
    
    /*==========================================
    =            INTERNAL FUNCTIONS            =
    ==========================================*/
    
    uint256 developerFee;
    uint256 incETH;
    address _refAddress; 
    uint256 _referralBonus;
    
    uint256 bonusLv1;
    uint256 bonusLv2;
    uint256 bonusLv3;
    uint256 bonusLv4;
    uint256 bonusLv5;
    uint256 bonusLv6;
    uint256 bonusLv7;
    uint256 bonusLv8;
    uint256 bonusLv9;
    uint256 bonusLv10;
    
    address chkLv2;
    address chkLv3;
    address chkLv4;
    address chkLv5;
    address chkLv6;
    address chkLv7;
    address chkLv8;
    address chkLv9;
    address chkLv10;
    
    struct RefUserDetail {
        address refUserAddress;
        uint256 refLevel;
    }

    mapping(address => mapping (uint => RefUserDetail)) public RefUser;
    mapping(address => uint256) public referralCount_;
    
    function getDownlineRef(address senderAddress, uint dataId) external view returns (address,uint) { 
        return (RefUser[senderAddress][dataId].refUserAddress,RefUser[senderAddress][dataId].refLevel);
    }
    
    function addDownlineRef(address senderAddress, address refUserAddress, uint refLevel) internal {
        referralCount_[senderAddress]++;
        uint dataId = referralCount_[senderAddress];
        RefUser[senderAddress][dataId].refUserAddress = refUserAddress;
        RefUser[senderAddress][dataId].refLevel = refLevel;
    }

    function getref(address _customerAddress, uint _level) public view returns(address lv) {
        if(_level == 1) {
            lv = referralLevel1Address[_customerAddress];
        } else if(_level == 2) {
            lv = referralLevel2Address[_customerAddress];
        } else if(_level == 3) {
            lv = referralLevel3Address[_customerAddress];
        } else if(_level == 4) {
            lv = referralLevel4Address[_customerAddress];
        } else if(_level == 5) {
            lv = referralLevel5Address[_customerAddress];
        } else if(_level == 6) {
            lv = referralLevel6Address[_customerAddress];
        } else if(_level == 7) {
            lv = referralLevel7Address[_customerAddress];
        } else if(_level == 8) {
            lv = referralLevel8Address[_customerAddress];
        } else if(_level == 9) {
            lv = referralLevel9Address[_customerAddress];
        } else if(_level == 10) {
            lv = referralLevel10Address[_customerAddress];
        } 
        return lv;
    }
    
    function distributeRefBonus(uint256 _incomingEthereum, address _referredBy, address _sender, bool _newReferral) internal {
        address _customerAddress        = _sender;
        uint256 remainingRefBonus       = _incomingEthereum;
        _referralBonus                  = _incomingEthereum;
        
        bonusLv1                        = SafeMath.percent(_referralBonus,30,100,18);
        bonusLv2                        = SafeMath.percent(_referralBonus,20,100,18);
        bonusLv3                        = SafeMath.percent(_referralBonus,15,100,18);
        bonusLv4                        = SafeMath.percent(_referralBonus,10,100,18);
        bonusLv5                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv6                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv7                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv8                        = SafeMath.percent(_referralBonus,3,100,18);
        bonusLv9                        = SafeMath.percent(_referralBonus,3,100,18);
        bonusLv10                       = SafeMath.percent(_referralBonus,2,100,18);
        
        // Level 1
        referralLevel1Address[_customerAddress]                     = _referredBy;
        referralBalance_[referralLevel1Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel1Address[_customerAddress]], bonusLv1);
        remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv1);
        if(_newReferral == true) {
            addDownlineRef(_referredBy, _customerAddress, 1);
        }
        
        chkLv2                          = referralLevel1Address[_referredBy];
        chkLv3                          = referralLevel2Address[_referredBy];
        chkLv4                          = referralLevel3Address[_referredBy];
        chkLv5                          = referralLevel4Address[_referredBy];
        chkLv6                          = referralLevel5Address[_referredBy];
        chkLv7                          = referralLevel6Address[_referredBy];
        chkLv8                          = referralLevel7Address[_referredBy];
        chkLv9                          = referralLevel8Address[_referredBy];
        chkLv10                         = referralLevel9Address[_referredBy];
        
        // Level 2
        if(chkLv2 != 0x0000000000000000000000000000000000000000) {
            referralLevel2Address[_customerAddress]                     = referralLevel1Address[_referredBy];
            referralBalance_[referralLevel2Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel2Address[_customerAddress]], bonusLv2);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv2);
            if(_newReferral == true) {
                addDownlineRef(referralLevel1Address[_referredBy], _customerAddress, 2);
            }
        }
        
        // Level 3
        if(chkLv3 != 0x0000000000000000000000000000000000000000) {
            referralLevel3Address[_customerAddress]                     = referralLevel2Address[_referredBy];
            referralBalance_[referralLevel3Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel3Address[_customerAddress]], bonusLv3);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv3);
            if(_newReferral == true) {
                addDownlineRef(referralLevel2Address[_referredBy], _customerAddress, 3);
            }
        }
        
        // Level 4
        if(chkLv4 != 0x0000000000000000000000000000000000000000) {
            referralLevel4Address[_customerAddress]                     = referralLevel3Address[_referredBy];
            referralBalance_[referralLevel4Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel4Address[_customerAddress]], bonusLv4);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv4);
            if(_newReferral == true) {
                addDownlineRef(referralLevel3Address[_referredBy], _customerAddress, 4);
            }
        }
        
        // Level 5
        if(chkLv5 != 0x0000000000000000000000000000000000000000) {
            referralLevel5Address[_customerAddress]                     = referralLevel4Address[_referredBy];
            referralBalance_[referralLevel5Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel5Address[_customerAddress]], bonusLv5);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv5);
            if(_newReferral == true) {
                addDownlineRef(referralLevel4Address[_referredBy], _customerAddress, 5);
            }
        }
        
        // Level 6
        if(chkLv6 != 0x0000000000000000000000000000000000000000) {
            referralLevel6Address[_customerAddress]                     = referralLevel5Address[_referredBy];
            referralBalance_[referralLevel6Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel6Address[_customerAddress]], bonusLv6);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv6);
            if(_newReferral == true) {
                addDownlineRef(referralLevel5Address[_referredBy], _customerAddress, 6);
            }
        }
        
        // Level 7
        if(chkLv7 != 0x0000000000000000000000000000000000000000) {
            referralLevel7Address[_customerAddress]                     = referralLevel6Address[_referredBy];
            referralBalance_[referralLevel7Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel7Address[_customerAddress]], bonusLv7);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv7);
            if(_newReferral == true) {
                addDownlineRef(referralLevel6Address[_referredBy], _customerAddress, 7);
            }
        }
        
        // Level 8
        if(chkLv8 != 0x0000000000000000000000000000000000000000) {
            referralLevel8Address[_customerAddress]                     = referralLevel7Address[_referredBy];
            referralBalance_[referralLevel8Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel8Address[_customerAddress]], bonusLv8);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv8);
            if(_newReferral == true) {
                addDownlineRef(referralLevel7Address[_referredBy], _customerAddress, 8);
            }
        }
        
        // Level 9
        if(chkLv9 != 0x0000000000000000000000000000000000000000) {
            referralLevel9Address[_customerAddress]                     = referralLevel8Address[_referredBy];
            referralBalance_[referralLevel9Address[_customerAddress]]   = SafeMath.add(referralBalance_[referralLevel9Address[_customerAddress]], bonusLv9);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv9);
            if(_newReferral == true) {
                addDownlineRef(referralLevel8Address[_referredBy], _customerAddress, 9);
            }
        }
        
        // Level 10
        if(chkLv10 != 0x0000000000000000000000000000000000000000) {
            referralLevel10Address[_customerAddress]                    = referralLevel9Address[_referredBy];
            referralBalance_[referralLevel10Address[_customerAddress]]  = SafeMath.add(referralBalance_[referralLevel10Address[_customerAddress]], bonusLv10);
            remainingRefBonus                                           = SafeMath.sub(remainingRefBonus, bonusLv10);
            if(_newReferral == true) {
                addDownlineRef(referralLevel9Address[_referredBy], _customerAddress, 10);
            }
        }
        
        developerBalance                    = SafeMath.add(developerBalance, remainingRefBonus);
    }

    function distributeNewBonus(uint256 _incETH, uint256 _amountOfTokens, address _customerAddress, bool _adminTransfer) internal {
        uint256 _newXDMbonus                = 0;
        if(_incETH >= 10 ether && _incETH < 20 ether) {
            _newXDMbonus                    = SafeMath.percent(_amountOfTokens,2,100,18);
        }
        if(_incETH >= 20 ether && _incETH < 50 ether) {
            _newXDMbonus                    = SafeMath.percent(_amountOfTokens,3,100,18);
        }
        if(_incETH >= 50 ether && _incETH < 80 ether) {
            _newXDMbonus                    = SafeMath.percent(_amountOfTokens,5,100,18);
        }
        if(_incETH >= 80 ether && _incETH < 100 ether) {
            _newXDMbonus                    = SafeMath.percent(_amountOfTokens,7,100,18);
        }
        if(_incETH >= 100 ether && _incETH <= 1000 ether) {
            _newXDMbonus                    = SafeMath.percent(_amountOfTokens,8,100,18);
        }
        
        if(_adminTransfer == true) {
            tokenBalanceLedger_[0x18bbBeBc5B7658c7aCAD57381084FA63F9fad590]    = SafeMath.add(tokenBalanceLedger_[0x18bbBeBc5B7658c7aCAD57381084FA63F9fad590], _newXDMbonus);
        } else {
            tokenBalanceLedger_[referralLevel1Address[_customerAddress]]    = SafeMath.add(tokenBalanceLedger_[referralLevel1Address[_customerAddress]], _newXDMbonus);
        }
        tokenSupply_                    = SafeMath.add(tokenSupply_, _newXDMbonus);
    }
    function purchaseTokens(uint256 _incomingEthereum, address _referredBy) antiEarlyWhale(_incomingEthereum) internal returns(uint256) {
        // data setup
        address _customerAddress            = msg.sender;
        incETH                              = _incomingEthereum;
        
        developerFee                        = SafeMath.percent(incETH,developerFee_,100,18);
        developerBalance                    = SafeMath.add(developerBalance, developerFee);
        
        _referralBonus                      = SafeMath.percent(incETH,referralPer_,100,18);
        
        uint256 _dividends                  = SafeMath.percent(incETH,dividendFee_,100,18);
        
        uint256 untotalDeduct               = developerFee_ + referralPer_ + dividendFee_;
        uint256 totalDeduct                 = SafeMath.percent(incETH,untotalDeduct,100,18);
        
        uint256 _taxedEthereum              = SafeMath.sub(incETH, totalDeduct);
        uint256 _amountOfTokens             = ethereumToTokens_(_taxedEthereum);
        uint256 _fee                        = _dividends * magnitude;
        bool    _newReferral                = true;
        
        
        if(referralLevel1Address[_customerAddress] != 0x0000000000000000000000000000000000000000) {
            _referredBy                     = referralLevel1Address[_customerAddress];
            _newReferral                    = false;
        }
        
        require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_));
        // is the user referred by a link?
        if(
            // is this a referred purchase?
            _referredBy != 0x0000000000000000000000000000000000000000 &&
            // no cheating!
            _referredBy != _customerAddress &&
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            // wealth redistribution
            distributeRefBonus(_referralBonus,_referredBy,_customerAddress,_newReferral);
            if(incETH >= 10 ether && incETH <= 1000 ether) {
                distributeNewBonus(incETH,_amountOfTokens,_customerAddress,false);
            }
        } else {
            // no ref purchase
            // send referral bonus back to admin
            developerBalance                = SafeMath.add(developerBalance, _referralBonus);
            if(incETH >= 10 ether && incETH <= 1000 ether) {
                distributeNewBonus(incETH,_amountOfTokens,_customerAddress,true);
            }
        }
        // we can't give people infinite ethereum
        if(tokenSupply_ > 0){
            // add tokens to the pool
            tokenSupply_                    = SafeMath.add(tokenSupply_, _amountOfTokens);
            // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder
            profitPerShare_                 += (_dividends * magnitude / (tokenSupply_));
            // calculate the amount of tokens the customer receives over his purchase 
            _fee                            = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
        } else {
            // add tokens to the pool
            tokenSupply_                    = _amountOfTokens;
        }
        // update circulating supply & the ledger address for the customer
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        int256 _updatedPayouts              = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress]        += _updatedPayouts;
        // fire event
        onTokenPurchase(_customerAddress, incETH, _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             = 
         (
            (
                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.
     */
     function tokensToEthereum_(uint256 _tokens) internal view returns(uint256) {
        uint256 tokens_                     = (_tokens + 2e18);
        uint256 _tokenSupply                = (tokenSupply_ + 2e18);
        uint256 _etherReceived              =
        (
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceDecremental_ * (_tokenSupply/2e18))
                        )-tokenPriceDecremental_
                    )*(tokens_ - 2e18)
                ),(tokenPriceDecremental_*((tokens_**2-tokens_)/2e18))/2
            )
        /2e18);
        return _etherReceived;
    }
    
    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;
        }
    }
    
}

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":"senderAddress","type":"address"}],"name":"migratePayoutsToShow","outputs":[{"name":"","type":"int256"}],"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":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"migrateDeveloperFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"stakePercent","type":"uint8"}],"name":"changeStakePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"senderAddress","type":"address"},{"name":"dataId","type":"uint256"}],"name":"getDownlineRef","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"dataId","type":"uint256"},{"name":"refUserAddress","type":"address"},{"name":"refLevel","type":"uint256"}],"name":"migrateDownlineRef","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensBalance","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":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"RefUser","outputs":[{"name":"refUserAddress","type":"address"},{"name":"refLevel","type":"uint256"}],"payable":false,"stateMutability":"view","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":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"_amount","type":"int256"}],"name":"migratePayoutsTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseStake","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeveloperBalance","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":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"migrateStakeBalanceNTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"stakeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"migrateTotalSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"migrateEth","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","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":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"disableInitialStage","outputs":[],"payable":false,"stateMutability":"nonpayable","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":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawAmount","type":"uint256"}],"name":"drainDeveloperFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"ref1","type":"address"},{"name":"ref2","type":"address"},{"name":"ref3","type":"address"},{"name":"ref4","type":"address"},{"name":"ref5","type":"address"},{"name":"ref6","type":"address"},{"name":"ref7","type":"address"},{"name":"ref8","type":"address"},{"name":"ref9","type":"address"},{"name":"ref10","type":"address"}],"name":"migrateTenLvlReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"dividendBal_","type":"uint256"},{"name":"referralBalanceM_","type":"uint256"},{"name":"_tokenAmount","type":"uint256"},{"name":"referralCountM_","type":"uint256"}],"name":"migrateXDMDividendNReferralBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_level","type":"uint256"}],"name":"getref","outputs":[{"name":"lv","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referralCount_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"migrateProfitPerShareShow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_amount","type":"uint256"}],"name":"migrateProfitPerShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"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"}]

606060405260408051908101604052600981527f5863656c447265616d0000000000000000000000000000000000000000000000602082015260009080516200004d92916020019062000166565b5060408051908101604052600381527f58444d0000000000000000000000000000000000000000000000000000000000602082015260019080516200009792916020019062000166565b506002805460ff19908116600117909155670de0b6b3a764000060035560006016819055601755601a805490911690553415620000d357600080fd5b7f6bd5fe5333e7c31315c4bc83632de1077c2bc1cec810c980e6cfc0e0f294f0f88054600160ff1991821681179092557fed62d0ae0456a16dfbb47506656465cb108c526eef11bb06c87c7c1b95e7f27e80548216831790556000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec805490911690911790556200020b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b6200020891905b80821115620001e75760008155600101620001f2565b90565b6134c8806200021b6000396000f30060606040526004361061024f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461025d57806306fdde031461028e578063097e34a11461031857806310d0ffdd1461033757806314ec2b0d1461034d57806317ef4e921461036557806318160ddd1461037e578063226093731461039157806327defa1f146103a75780632b152e40146103ce5780632bba8b57146104125780632fc2a5721461043e578063313ce5671461045d578063392efb52146104865780633ccfd60b1461049c57806343360a8e146104af5780634b750334146104d157806356d399e8146104e457806358e717fd146104f75780635c48c1fa1461051957806366b3fa601461052c578063688abbf71461053f5780636b2f46321461055757806370a082311461056a5780637468e367146105895780637547c7a3146105ae57806377e79b41146105c45780637af7d382146105e35780637dc572f3146105625780638328b610146105f95780638620410b1461060f57806389135ae914610622578063949e8acd1461063d57806395d89b4114610650578063a8e04f3414610663578063a9059cbb14610676578063b84c824614610698578063bf21e388146106e9578063c2150ec4146106ff578063c47f00271461075d578063d9a40bb1146107ae578063e4735104146107d9578063e4849b3214610817578063e5deb3041461082d578063e8beadfd1461084c578063e9fad8ee1461085f578063f088d54714610872578063f402db6d14610886578063fdb5a03e1461089c575b61025a3460006108af565b50005b341561026857600080fd5b61027c600160a060020a0360043516610ff0565b60405190815260200160405180910390f35b341561029957600080fd5b6102a161104b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102dd5780820151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032357600080fd5b61027c600160a060020a03600435166110e9565b341561034257600080fd5b61027c600435611104565b341561035857600080fd5b61036360043561113a565b005b341561037057600080fd5b61036360ff60043516611188565b341561038957600080fd5b61027c6111e7565b341561039c57600080fd5b61027c6004356111ee565b34156103b257600080fd5b6103ba611234565b604051901515815260200160405180910390f35b34156103d957600080fd5b6103f0600160a060020a036004351660243561123d565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561041d57600080fd5b610363600160a060020a03600435811690602435906044351660643561126d565b341561044957600080fd5b61027c600160a060020a03600435166112f7565b341561046857600080fd5b6104706113ad565b60405160ff909116815260200160405180910390f35b341561049157600080fd5b6103ba6004356113b2565b34156104a757600080fd5b6103636113c7565b34156104ba57600080fd5b6103f0600160a060020a0360043516602435611567565b34156104dc57600080fd5b61027c611597565b34156104ef57600080fd5b61027c6115f0565b341561050257600080fd5b610363600160a060020a03600435166024356115f6565b341561052457600080fd5b6103ba61165b565b341561053757600080fd5b61027c611798565b341561054a57600080fd5b61027c600435151561179e565b341561056257600080fd5b61027c6117e1565b341561057557600080fd5b61027c600160a060020a03600435166117ef565b341561059457600080fd5b610363600160a060020a036004351660243560443561180a565b34156105b957600080fd5b6103ba60043561187b565b34156105cf57600080fd5b61027c600160a060020a0360043516611963565b34156105ee57600080fd5b61036360043561197e565b341561060457600080fd5b6103636004356119cc565b341561061a57600080fd5b61027c611a1a565b341561062d57600080fd5b6103636004356024351515611a79565b341561064857600080fd5b61027c611ae2565b341561065b57600080fd5b6102a1611af5565b341561066e57600080fd5b610363611b60565b341561068157600080fd5b6103ba600160a060020a0360043516602435611bb5565b34156106a357600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611d6c95505050505050565b34156106f457600080fd5b610363600435611dcc565b341561070a57600080fd5b610363600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c43581169060e43581169061010435811690610124358116906101443516611e6d565b341561076857600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611fac95505050505050565b34156107b957600080fd5b610363600160a060020a0360043516602435604435606435608435612007565b34156107e457600080fd5b6107fb600160a060020a0360043516602435612092565b604051600160a060020a03909116815260200160405180910390f35b341561082257600080fd5b61036360043561223a565b341561083857600080fd5b61027c600160a060020a0360043516612391565b341561085757600080fd5b61027c6123a3565b341561086a57600080fd5b6103636123a9565b61027c600160a060020a03600435166123e0565b341561089157600080fd5b6103636004356123ec565b34156108a757600080fd5b61036361243a565b6000806000806000806000806000808b6000339050601a60009054906101000a900460ff1680156108f15750670de0b6b3a7640000826108ed6117e1565b0311155b15610cb357600160a060020a03811660009081526004602052604090205460ff16151560011480156109465750600160a060020a038116600090815260156020526040902054670de0b6b3a764000090830111155b151561095157600080fd5b600160a060020a03811660009081526015602052604090205461097490836125cb565b600160a060020a038216600090815260156020526040902055601c8e9055339a506109a48e6005606460126125e5565b601b8190556017546109b5916125cb565b601755601c546109ca906014606460126125e5565b601e55601c546109df906005606460126125e5565b601c54909a50601e99506109f7908a606460126125e5565b9750610a05601c548961262a565b9650610a108761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610a6257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610a7c5750601654610a7a87826125cb565b115b1515610a8757600080fd5b600160a060020a038d1615801590610ab157508a600160a060020a03168d600160a060020a031614155b8015610ad75750600354600160a060020a038e1660009081526005602052604090205410155b15610b2857610aea601e548e8d876126db565b678ac7230489e80000601c5410158015610b0f5750683635c9adc5dea00000601c5411155b15610b2357610b23601c54878d60006130b4565b610b73565b610b36601754601e546125cb565b601755601c54678ac7230489e800009010801590610b5f5750683635c9adc5dea00000601c5411155b15610b7357610b73601c54878d60016130b4565b60006016541115610bcd57610b8a601654876125cb565b6016819055604060020a8b02811515610b9f57fe5b60188054929091049091019055601654604060020a8b02811515610bbf57fe5b048602850385039450610bd3565b60168690555b600160a060020a038b16600090815260056020526040902054610bf690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b50610fdf565b601a805460ff19169055601c8e9055339a50610cd48e6005606460126125e5565b601b819055601754610ce5916125cb565b601755601c54610cfa906014606460126125e5565b601e55601c54610d0f906005606460126125e5565b601c54909a50601e9950610d27908a606460126125e5565b9750610d35601c548961262a565b9650610d408761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610d9257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610dac5750601654610daa87826125cb565b115b1515610db757600080fd5b600160a060020a038d1615801590610de157508a600160a060020a03168d600160a060020a031614155b8015610e075750600354600160a060020a038e1660009081526005602052604090205410155b15610e5857610e1a601e548e8d876126db565b678ac7230489e80000601c5410158015610e3f5750683635c9adc5dea00000601c5411155b15610e5357610e53601c54878d60006130b4565b610ea3565b610e66601754601e546125cb565b601755601c54678ac7230489e800009010801590610e8f5750683635c9adc5dea00000601c5411155b15610ea357610ea3601c54878d60016130b4565b60006016541115610efd57610eba601654876125cb565b6016819055604060020a8b02811515610ecf57fe5b60188054929091049091019055601654604060020a8b02811515610eef57fe5b048602850385039450610f03565b60168690555b600160a060020a038b16600090815260056020526040902054610f2690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b505b505050505050505050505092915050565b600160a060020a03811660009081526014602090815260408083205460068352818420546005845282852054601854600990955292852054604060020a93909101909302030490829061104390836125cb565b949350505050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b600160a060020a031660009081526014602052604090205490565b6000601e8180806111198685606460126125e5565b9250611125868461262a565b91506111308261263c565b9695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561118257600080fd5b50601755565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156111d057600080fd5b506002805460ff191660ff92909216919091179055565b6016545b90565b600080600080601654851115151561120557600080fd5b61120e856132d7565b925061121f836005606460126125e5565b915061122b838361262a565b95945050505050565b601a5460ff1681565b600160a060020a039182166000908152603260209081526040808320938352929052208054600190910154911691565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156112b557600080fd5b50600160a060020a039384166000908152603260209081526040808320958352949052929092208054600160a060020a03191691909316178255600190910155565b60008060008060008061132f42600760008a600160a060020a0316600160a060020a031681526020019081526020016000205461262a565b945061133e8562015180613346565b60025490945061135290859060ff1661335d565b600160a060020a03881660009081526006602052604090205490935061137c9084606460126125e5565b600160a060020a0388166000908152600660205260409020549092506113a290836125cb565b979650505050505050565b601281565b60196020526000908152604090205460ff1681565b60008060006113d6600161179e565b116113e057600080fd5b3391506113ed600061179e565b600160a060020a0383166000908152600960205260408120549192509011156114a757600160a060020a0382166000908152600960205260409020548190111561146c57600160a060020a0382166000908152600960209081526040808320546014909252909120805491839003604060020a029190910190556114a2565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918303604060020a029190910190555b6114cc565b600160a060020a03821660009081526014602052604090208054604060020a83020190555b600160a060020a038216600081815260086020818152604080842080546009845282862086905593909252929055929092019182156108fc0290839051600060405180830381858888f19350505050151561152657600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b603260209081526000928352604080842090915290825290208054600190910154600160a060020a039091169082565b600080600080601654600014156115b6576559ad19f9900093506115ea565b6115c7670de0b6b3a76400006132d7565b92506115d8836005606460126125e5565b91506115e4838361262a565b90508093505b50505090565b60035481565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561163e57600080fd5b50600160a060020a03909116600090815260146020526040902055565b6000806000806000806000806000611671611ae2565b1161167b57600080fd5b601a5433975060ff161580156116a75750600160a060020a038716600090815260076020526040812054115b15156116b257600080fd5b600160a060020a0387166000908152600660209081526040808320546007909252909120549096506116e590429061262a565b94506116f48562015180613346565b60025490945061170890859060ff1661335d565b92506117188684606460126125e5565b915061172486836125cb565b9050611732601654836125cb565b601655600160a060020a03871660009081526005602052604090205461175890826125cb565b600160a060020a03909716600090815260056020908152604080832099909955600681528882208290556007905296872096909655509495945050505050565b60175490565b600033826117b4576117af81610ff0565b6117d8565b600160a060020a0381166000908152600860205260409020546117d682610ff0565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526005602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561185257600080fd5b50600160a060020a03909216600090815260066020908152604080832093909355600790522055565b600080600080611889611ae2565b1161189357600080fd5b601a5433925060ff161580156118c15750600160a060020a0382166000908152600560205260409020548411155b15156118cc57600080fd5b6118de84670de0b6b3a764000061262a565b600160a060020a0383166000908152600760209081526040808320429055600690915290205490915061191190826125cb565b600160a060020a038316600090815260066020908152604080832093909355600590522054611940908261262a565b600160a060020a0390921660009081526005602052604090209190915550919050565b600160a060020a031660009081526007602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156119c657600080fd5b50601655565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611a1457600080fd5b50600355565b600080600080600060165460001415611a3b57655bdbe51f50009450611a72565b611a4c670de0b6b3a76400006132d7565b9350601e9250611a608484606460126125e5565b9150611a6c84836125cb565b90508094505b5050505090565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ac157600080fd5b50600091825260196020526040909120805460ff1916911515919091179055565b600033611aee816117ef565b91505b5090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ba857600080fd5b50601a805460ff19169055565b600080600080600080611bc6611ae2565b11611bd057600080fd5b601a5433945060ff16158015611bfe5750600160a060020a0384166000908152600560205260409020548611155b1515611c0957600080fd5b6000611c15600161179e565b1115611c2357611c236113c7565b611c32866005606460126125e5565b9250611c3e868461262a565b9150611c49836132d7565b9050611c576016548461262a565b601655600160a060020a038416600090815260056020526040902054611c7d908761262a565b600160a060020a038086166000908152600560205260408082209390935590891681522054611cac90836125cb565b600160a060020a0388811660008181526005602090815260408083209590955560188054948a16835260149091528482208054948c02909403909355825491815292909220805492850290920190915554601654611d1b9190604060020a8402811515611d1557fe5b046125cb565b601855600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611db457600080fd5b6001828051611dc792916020019061340e565b505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611e1557600080fd5b60175433925083901015611e2857600080fd5b600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515611e5957600080fd5b611e656017548461262a565b601755505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611eb657600080fd5b5050600160a060020a039a8b166000908152600a6020908152604080832080549d8f16600160a060020a03199e8f16179055600b825280832080549c8f169c8e169c909c17909b55600c81528a822080549a8e169a8d169a909a17909955600d89528981208054988d16988c1698909817909755600e88528887208054968c16968b1696909617909555600f87528786208054948b16948a1694909417909355601086528685208054928a16928916929092179091556011855285842080549189169188169190911790556012845284832080549188169187169190911790556013909252919091208054919093169116179055565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ff457600080fd5b6000828051611dc792916020019061340e565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561205057600080fd5b5050600160a060020a03909416600090815260096020908152604080832095909555600881528482209390935560338352838120949094556005909152912055565b600081600114156120be5750600160a060020a038083166000908152600a602052604090205416612234565b81600214156120e85750600160a060020a038083166000908152600b602052604090205416612234565b81600314156121125750600160a060020a038083166000908152600c602052604090205416612234565b816004141561213c5750600160a060020a038083166000908152600d602052604090205416612234565b81600514156121665750600160a060020a038083166000908152600e602052604090205416612234565b81600614156121905750600160a060020a038083166000908152600f602052604090205416612234565b81600714156121ba5750600160a060020a0380831660009081526010602052604090205416612234565b81600814156121e45750600160a060020a0380831660009081526011602052604090205416612234565b816009141561220e5750600160a060020a0380831660009081526012602052604090205416612234565b81600a14156122345750600160a060020a03808316600090815260136020526040902054165b92915050565b600080600080600080600061224d611ae2565b1161225757600080fd5b33600160a060020a03811660009081526005602052604090205490965087111561228057600080fd5b86945061228c856132d7565b935061229d846005606460126125e5565b92506122a9848461262a565b91506122b76016548661262a565b601655600160a060020a0386166000908152600560205260409020546122dd908661262a565b600160a060020a03871660009081526005602090815260408083209390935560185460149091529181208054928802604060020a86020192839003905560165491925090111561234457612340601854601654604060020a8602811515611d1557fe5b6018555b85600160a060020a03167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139868460405191825260208201526040908101905180910390a250505050505050565b60336020526000908152604090205481565b60185490565b33600160a060020a038116600090815260056020526040812054908111156123d4576123d48161223a565b6123dc6113c7565b5050565b60006117db34836108af565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561243457600080fd5b50601855565b60008060008061244a600161179e565b1161245457600080fd5b61245e600061179e565b33600160a060020a03811660009081526009602052604081205492955090935090111561251c57600160a060020a038216600090815260096020526040902054839011156124e157600160a060020a0382166000908152600960209081526040808320546014909252909120805491859003604060020a02919091019055612517565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918503604060020a029190910190555b612541565b600160a060020a03821660009081526014602052604090208054604060020a85020190555b600160a060020a0382166000908152600860208181526040808420805460098452918520859055929091529082905593909301926125809084906108af565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000828201838110156125da57fe5b8091505b5092915050565b600080600083600101600a0a86029150600a858381151561260257fe5b0460050181151561260f57fe5b049050670de0b6b3a764000087820204979650505050505050565b60008282111561263657fe5b50900390565b6016546000906d04ee2d6d415b85acef810000000090829064e8d4a510006126c86126c274015e531a0a1c872bad2ce16256fe82000000000000880269d3c21bcecceda10000006002860a02017208f7e32ce7bea5c6fe4820023a2000000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000001613388565b8561262a565b8115156126d157fe5b0403949350505050565b601e848155829085906126f3908290606460126125e5565b601f55601e54612708906014606460126125e5565b602055601e5461271d90600f606460126125e5565b602155601e5461273290600a606460126125e5565b602255601e54612747906005606460126125e5565b602355601e5461275c906005606460126125e5565b602455601e54612771906005606460126125e5565b602555601e54612786906003606460126125e5565b602655601e5461279b906003606460126125e5565b602755601e546127b0906002606460126125e5565b602855600160a060020a038281166000908152600a602090815260408083208054600160a060020a0319168a861617908190559093168252600890522054601f546127fb91906125cb565b600160a060020a038084166000908152600a60209081526040808320549093168252600890522055601f5461283190829061262a565b90506001831515141561284a5761284a858360016133bd565b600160a060020a038086166000908152600a602090815260408083205460298054600160a060020a03199081169287169290921790819055600b845282852054602a80548416918816919091179055600c845282852054602b80548416918816919091179055600d845282852054602c80548416918816919091179055600e845282852054602d80548416918816919091179055600f845282852054602e805484169188169190911790556010845282852054602f805484169188169190911790556011845282852054603080548416918816919091179055601290935292205460318054909316908416179091551615612a0557600160a060020a038086166000908152600a60209081526040808320548685168452600b83528184208054600160a060020a031916918616919091179081905590931682526008815291902054905461299891906125cb565b600160a060020a038084166000908152600b602090815260408083205490931682526008815291902091909155546129d190829061262a565b905060018315151415612a0557600160a060020a038086166000908152600a6020526040902054612a0591168360026133bd565b602a54600160a060020a031615612ad857600160a060020a038086166000908152600b60209081526040808320548685168452600c83528184208054600160a060020a03191691861691909117908190559093168252600890522054602154612a6e91906125cb565b600160a060020a038084166000908152600c60209081526040808320549093168252600890522055602154612aa490829061262a565b905060018315151415612ad857600160a060020a038086166000908152600b6020526040902054612ad891168360036133bd565b602b54600160a060020a031615612bab57600160a060020a038086166000908152600c60209081526040808320548685168452600d83528184208054600160a060020a03191691861691909117908190559093168252600890522054602254612b4191906125cb565b600160a060020a038084166000908152600d60209081526040808320549093168252600890522055602254612b7790829061262a565b905060018315151415612bab57600160a060020a038086166000908152600c6020526040902054612bab91168360046133bd565b602c54600160a060020a031615612c7e57600160a060020a038086166000908152600d60209081526040808320548685168452600e83528184208054600160a060020a03191691861691909117908190559093168252600890522054602354612c1491906125cb565b600160a060020a038084166000908152600e60209081526040808320549093168252600890522055602354612c4a90829061262a565b905060018315151415612c7e57600160a060020a038086166000908152600d6020526040902054612c7e91168360056133bd565b602d54600160a060020a031615612d5157600160a060020a038086166000908152600e60209081526040808320548685168452600f83528184208054600160a060020a03191691861691909117908190559093168252600890522054602454612ce791906125cb565b600160a060020a038084166000908152600f60209081526040808320549093168252600890522055602454612d1d90829061262a565b905060018315151415612d5157600160a060020a038086166000908152600e6020526040902054612d5191168360066133bd565b602e54600160a060020a031615612e2457600160a060020a038086166000908152600f60209081526040808320548685168452601083528184208054600160a060020a03191691861691909117908190559093168252600890522054602554612dba91906125cb565b600160a060020a038084166000908152601060209081526040808320549093168252600890522055602554612df090829061262a565b905060018315151415612e2457600160a060020a038086166000908152600f6020526040902054612e2491168360076133bd565b602f54600160a060020a031615612ef757600160a060020a038086166000908152601060209081526040808320548685168452601183528184208054600160a060020a03191691861691909117908190559093168252600890522054602654612e8d91906125cb565b600160a060020a038084166000908152601160209081526040808320549093168252600890522055602654612ec390829061262a565b905060018315151415612ef757600160a060020a03808616600090815260106020526040902054612ef791168360086133bd565b603054600160a060020a031615612fca57600160a060020a038086166000908152601160209081526040808320548685168452601283528184208054600160a060020a03191691861691909117908190559093168252600890522054602754612f6091906125cb565b600160a060020a038084166000908152601260209081526040808320549093168252600890522055602754612f9690829061262a565b905060018315151415612fca57600160a060020a03808616600090815260116020526040902054612fca91168360096133bd565b603154600160a060020a03161561309d57600160a060020a038086166000908152601260209081526040808320548685168452601383528184208054600160a060020a0319169186169190911790819055909316825260089052205460285461303391906125cb565b600160a060020a03808416600090815260136020908152604080832054909316825260089052205560285461306990829061262a565b90506001831515141561309d57600160a060020a0380861660009081526012602052604090205461309d911683600a6133bd565b6130a9601754826125cb565b601755505050505050565b6000678ac7230489e8000085108015906130d657506801158e460913d0000085105b156130ed576130ea846002606460126125e5565b90505b6801158e460913d00000851015801561310e57506802b5e3af16b188000085105b1561312557613122846003606460126125e5565b90505b6802b5e3af16b1880000851015801561314657506804563918244f40000085105b1561315d5761315a846005606460126125e5565b90505b6804563918244f400000851015801561317e575068056bc75e2d6310000085105b1561319557613192846007606460126125e5565b90505b68056bc75e2d6310000085101580156131b75750683635c9adc5dea000008511155b156131ce576131cb846008606460126125e5565b90505b60018215151415613266577318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a4895461322290826125cb565b7318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a489556132c1565b600160a060020a038084166000908152600a6020908152604080832054909316825260059052205461329890826125cb565b600160a060020a038085166000908152600a602090815260408083205490931682526005905220555b6132cd601654826125cb565b6016555050505050565b601654600090671bc16d674ec800008381019181019083906133336559ad19f99000828504650145f680b00002018702600283671bc16d674ec7ffff1982890a8b90030104650145f680b0000281151561332d57fe5b0461262a565b81151561333c57fe5b0495945050505050565b600080828481151561335457fe5b04949350505050565b60008083151561337057600091506125de565b5082820282848281151561338057fe5b04146125da57fe5b80600260018201045b818110156117db5780915060028182858115156133aa57fe5b04018115156133b557fe5b049050613391565b600160a060020a03928316600090815260336020908152604080832080546001908101918290556032845282852091855292529091208054600160a060020a03191693909416929092178355910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061344f57805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c578251825591602001919060010190613461565b50611af1926111eb9250905b80821115611af157600081556001016134885600a165627a7a723058204b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e010029

Deployed Bytecode

0x60606040526004361061024f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461025d57806306fdde031461028e578063097e34a11461031857806310d0ffdd1461033757806314ec2b0d1461034d57806317ef4e921461036557806318160ddd1461037e578063226093731461039157806327defa1f146103a75780632b152e40146103ce5780632bba8b57146104125780632fc2a5721461043e578063313ce5671461045d578063392efb52146104865780633ccfd60b1461049c57806343360a8e146104af5780634b750334146104d157806356d399e8146104e457806358e717fd146104f75780635c48c1fa1461051957806366b3fa601461052c578063688abbf71461053f5780636b2f46321461055757806370a082311461056a5780637468e367146105895780637547c7a3146105ae57806377e79b41146105c45780637af7d382146105e35780637dc572f3146105625780638328b610146105f95780638620410b1461060f57806389135ae914610622578063949e8acd1461063d57806395d89b4114610650578063a8e04f3414610663578063a9059cbb14610676578063b84c824614610698578063bf21e388146106e9578063c2150ec4146106ff578063c47f00271461075d578063d9a40bb1146107ae578063e4735104146107d9578063e4849b3214610817578063e5deb3041461082d578063e8beadfd1461084c578063e9fad8ee1461085f578063f088d54714610872578063f402db6d14610886578063fdb5a03e1461089c575b61025a3460006108af565b50005b341561026857600080fd5b61027c600160a060020a0360043516610ff0565b60405190815260200160405180910390f35b341561029957600080fd5b6102a161104b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102dd5780820151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032357600080fd5b61027c600160a060020a03600435166110e9565b341561034257600080fd5b61027c600435611104565b341561035857600080fd5b61036360043561113a565b005b341561037057600080fd5b61036360ff60043516611188565b341561038957600080fd5b61027c6111e7565b341561039c57600080fd5b61027c6004356111ee565b34156103b257600080fd5b6103ba611234565b604051901515815260200160405180910390f35b34156103d957600080fd5b6103f0600160a060020a036004351660243561123d565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561041d57600080fd5b610363600160a060020a03600435811690602435906044351660643561126d565b341561044957600080fd5b61027c600160a060020a03600435166112f7565b341561046857600080fd5b6104706113ad565b60405160ff909116815260200160405180910390f35b341561049157600080fd5b6103ba6004356113b2565b34156104a757600080fd5b6103636113c7565b34156104ba57600080fd5b6103f0600160a060020a0360043516602435611567565b34156104dc57600080fd5b61027c611597565b34156104ef57600080fd5b61027c6115f0565b341561050257600080fd5b610363600160a060020a03600435166024356115f6565b341561052457600080fd5b6103ba61165b565b341561053757600080fd5b61027c611798565b341561054a57600080fd5b61027c600435151561179e565b341561056257600080fd5b61027c6117e1565b341561057557600080fd5b61027c600160a060020a03600435166117ef565b341561059457600080fd5b610363600160a060020a036004351660243560443561180a565b34156105b957600080fd5b6103ba60043561187b565b34156105cf57600080fd5b61027c600160a060020a0360043516611963565b34156105ee57600080fd5b61036360043561197e565b341561060457600080fd5b6103636004356119cc565b341561061a57600080fd5b61027c611a1a565b341561062d57600080fd5b6103636004356024351515611a79565b341561064857600080fd5b61027c611ae2565b341561065b57600080fd5b6102a1611af5565b341561066e57600080fd5b610363611b60565b341561068157600080fd5b6103ba600160a060020a0360043516602435611bb5565b34156106a357600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611d6c95505050505050565b34156106f457600080fd5b610363600435611dcc565b341561070a57600080fd5b610363600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c43581169060e43581169061010435811690610124358116906101443516611e6d565b341561076857600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611fac95505050505050565b34156107b957600080fd5b610363600160a060020a0360043516602435604435606435608435612007565b34156107e457600080fd5b6107fb600160a060020a0360043516602435612092565b604051600160a060020a03909116815260200160405180910390f35b341561082257600080fd5b61036360043561223a565b341561083857600080fd5b61027c600160a060020a0360043516612391565b341561085757600080fd5b61027c6123a3565b341561086a57600080fd5b6103636123a9565b61027c600160a060020a03600435166123e0565b341561089157600080fd5b6103636004356123ec565b34156108a757600080fd5b61036361243a565b6000806000806000806000806000808b6000339050601a60009054906101000a900460ff1680156108f15750670de0b6b3a7640000826108ed6117e1565b0311155b15610cb357600160a060020a03811660009081526004602052604090205460ff16151560011480156109465750600160a060020a038116600090815260156020526040902054670de0b6b3a764000090830111155b151561095157600080fd5b600160a060020a03811660009081526015602052604090205461097490836125cb565b600160a060020a038216600090815260156020526040902055601c8e9055339a506109a48e6005606460126125e5565b601b8190556017546109b5916125cb565b601755601c546109ca906014606460126125e5565b601e55601c546109df906005606460126125e5565b601c54909a50601e99506109f7908a606460126125e5565b9750610a05601c548961262a565b9650610a108761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610a6257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610a7c5750601654610a7a87826125cb565b115b1515610a8757600080fd5b600160a060020a038d1615801590610ab157508a600160a060020a03168d600160a060020a031614155b8015610ad75750600354600160a060020a038e1660009081526005602052604090205410155b15610b2857610aea601e548e8d876126db565b678ac7230489e80000601c5410158015610b0f5750683635c9adc5dea00000601c5411155b15610b2357610b23601c54878d60006130b4565b610b73565b610b36601754601e546125cb565b601755601c54678ac7230489e800009010801590610b5f5750683635c9adc5dea00000601c5411155b15610b7357610b73601c54878d60016130b4565b60006016541115610bcd57610b8a601654876125cb565b6016819055604060020a8b02811515610b9f57fe5b60188054929091049091019055601654604060020a8b02811515610bbf57fe5b048602850385039450610bd3565b60168690555b600160a060020a038b16600090815260056020526040902054610bf690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b50610fdf565b601a805460ff19169055601c8e9055339a50610cd48e6005606460126125e5565b601b819055601754610ce5916125cb565b601755601c54610cfa906014606460126125e5565b601e55601c54610d0f906005606460126125e5565b601c54909a50601e9950610d27908a606460126125e5565b9750610d35601c548961262a565b9650610d408761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610d9257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610dac5750601654610daa87826125cb565b115b1515610db757600080fd5b600160a060020a038d1615801590610de157508a600160a060020a03168d600160a060020a031614155b8015610e075750600354600160a060020a038e1660009081526005602052604090205410155b15610e5857610e1a601e548e8d876126db565b678ac7230489e80000601c5410158015610e3f5750683635c9adc5dea00000601c5411155b15610e5357610e53601c54878d60006130b4565b610ea3565b610e66601754601e546125cb565b601755601c54678ac7230489e800009010801590610e8f5750683635c9adc5dea00000601c5411155b15610ea357610ea3601c54878d60016130b4565b60006016541115610efd57610eba601654876125cb565b6016819055604060020a8b02811515610ecf57fe5b60188054929091049091019055601654604060020a8b02811515610eef57fe5b048602850385039450610f03565b60168690555b600160a060020a038b16600090815260056020526040902054610f2690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b505b505050505050505050505092915050565b600160a060020a03811660009081526014602090815260408083205460068352818420546005845282852054601854600990955292852054604060020a93909101909302030490829061104390836125cb565b949350505050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b600160a060020a031660009081526014602052604090205490565b6000601e8180806111198685606460126125e5565b9250611125868461262a565b91506111308261263c565b9695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561118257600080fd5b50601755565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156111d057600080fd5b506002805460ff191660ff92909216919091179055565b6016545b90565b600080600080601654851115151561120557600080fd5b61120e856132d7565b925061121f836005606460126125e5565b915061122b838361262a565b95945050505050565b601a5460ff1681565b600160a060020a039182166000908152603260209081526040808320938352929052208054600190910154911691565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156112b557600080fd5b50600160a060020a039384166000908152603260209081526040808320958352949052929092208054600160a060020a03191691909316178255600190910155565b60008060008060008061132f42600760008a600160a060020a0316600160a060020a031681526020019081526020016000205461262a565b945061133e8562015180613346565b60025490945061135290859060ff1661335d565b600160a060020a03881660009081526006602052604090205490935061137c9084606460126125e5565b600160a060020a0388166000908152600660205260409020549092506113a290836125cb565b979650505050505050565b601281565b60196020526000908152604090205460ff1681565b60008060006113d6600161179e565b116113e057600080fd5b3391506113ed600061179e565b600160a060020a0383166000908152600960205260408120549192509011156114a757600160a060020a0382166000908152600960205260409020548190111561146c57600160a060020a0382166000908152600960209081526040808320546014909252909120805491839003604060020a029190910190556114a2565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918303604060020a029190910190555b6114cc565b600160a060020a03821660009081526014602052604090208054604060020a83020190555b600160a060020a038216600081815260086020818152604080842080546009845282862086905593909252929055929092019182156108fc0290839051600060405180830381858888f19350505050151561152657600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b603260209081526000928352604080842090915290825290208054600190910154600160a060020a039091169082565b600080600080601654600014156115b6576559ad19f9900093506115ea565b6115c7670de0b6b3a76400006132d7565b92506115d8836005606460126125e5565b91506115e4838361262a565b90508093505b50505090565b60035481565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561163e57600080fd5b50600160a060020a03909116600090815260146020526040902055565b6000806000806000806000806000611671611ae2565b1161167b57600080fd5b601a5433975060ff161580156116a75750600160a060020a038716600090815260076020526040812054115b15156116b257600080fd5b600160a060020a0387166000908152600660209081526040808320546007909252909120549096506116e590429061262a565b94506116f48562015180613346565b60025490945061170890859060ff1661335d565b92506117188684606460126125e5565b915061172486836125cb565b9050611732601654836125cb565b601655600160a060020a03871660009081526005602052604090205461175890826125cb565b600160a060020a03909716600090815260056020908152604080832099909955600681528882208290556007905296872096909655509495945050505050565b60175490565b600033826117b4576117af81610ff0565b6117d8565b600160a060020a0381166000908152600860205260409020546117d682610ff0565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526005602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561185257600080fd5b50600160a060020a03909216600090815260066020908152604080832093909355600790522055565b600080600080611889611ae2565b1161189357600080fd5b601a5433925060ff161580156118c15750600160a060020a0382166000908152600560205260409020548411155b15156118cc57600080fd5b6118de84670de0b6b3a764000061262a565b600160a060020a0383166000908152600760209081526040808320429055600690915290205490915061191190826125cb565b600160a060020a038316600090815260066020908152604080832093909355600590522054611940908261262a565b600160a060020a0390921660009081526005602052604090209190915550919050565b600160a060020a031660009081526007602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156119c657600080fd5b50601655565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611a1457600080fd5b50600355565b600080600080600060165460001415611a3b57655bdbe51f50009450611a72565b611a4c670de0b6b3a76400006132d7565b9350601e9250611a608484606460126125e5565b9150611a6c84836125cb565b90508094505b5050505090565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ac157600080fd5b50600091825260196020526040909120805460ff1916911515919091179055565b600033611aee816117ef565b91505b5090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ba857600080fd5b50601a805460ff19169055565b600080600080600080611bc6611ae2565b11611bd057600080fd5b601a5433945060ff16158015611bfe5750600160a060020a0384166000908152600560205260409020548611155b1515611c0957600080fd5b6000611c15600161179e565b1115611c2357611c236113c7565b611c32866005606460126125e5565b9250611c3e868461262a565b9150611c49836132d7565b9050611c576016548461262a565b601655600160a060020a038416600090815260056020526040902054611c7d908761262a565b600160a060020a038086166000908152600560205260408082209390935590891681522054611cac90836125cb565b600160a060020a0388811660008181526005602090815260408083209590955560188054948a16835260149091528482208054948c02909403909355825491815292909220805492850290920190915554601654611d1b9190604060020a8402811515611d1557fe5b046125cb565b601855600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611db457600080fd5b6001828051611dc792916020019061340e565b505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611e1557600080fd5b60175433925083901015611e2857600080fd5b600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515611e5957600080fd5b611e656017548461262a565b601755505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611eb657600080fd5b5050600160a060020a039a8b166000908152600a6020908152604080832080549d8f16600160a060020a03199e8f16179055600b825280832080549c8f169c8e169c909c17909b55600c81528a822080549a8e169a8d169a909a17909955600d89528981208054988d16988c1698909817909755600e88528887208054968c16968b1696909617909555600f87528786208054948b16948a1694909417909355601086528685208054928a16928916929092179091556011855285842080549189169188169190911790556012845284832080549188169187169190911790556013909252919091208054919093169116179055565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ff457600080fd5b6000828051611dc792916020019061340e565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561205057600080fd5b5050600160a060020a03909416600090815260096020908152604080832095909555600881528482209390935560338352838120949094556005909152912055565b600081600114156120be5750600160a060020a038083166000908152600a602052604090205416612234565b81600214156120e85750600160a060020a038083166000908152600b602052604090205416612234565b81600314156121125750600160a060020a038083166000908152600c602052604090205416612234565b816004141561213c5750600160a060020a038083166000908152600d602052604090205416612234565b81600514156121665750600160a060020a038083166000908152600e602052604090205416612234565b81600614156121905750600160a060020a038083166000908152600f602052604090205416612234565b81600714156121ba5750600160a060020a0380831660009081526010602052604090205416612234565b81600814156121e45750600160a060020a0380831660009081526011602052604090205416612234565b816009141561220e5750600160a060020a0380831660009081526012602052604090205416612234565b81600a14156122345750600160a060020a03808316600090815260136020526040902054165b92915050565b600080600080600080600061224d611ae2565b1161225757600080fd5b33600160a060020a03811660009081526005602052604090205490965087111561228057600080fd5b86945061228c856132d7565b935061229d846005606460126125e5565b92506122a9848461262a565b91506122b76016548661262a565b601655600160a060020a0386166000908152600560205260409020546122dd908661262a565b600160a060020a03871660009081526005602090815260408083209390935560185460149091529181208054928802604060020a86020192839003905560165491925090111561234457612340601854601654604060020a8602811515611d1557fe5b6018555b85600160a060020a03167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139868460405191825260208201526040908101905180910390a250505050505050565b60336020526000908152604090205481565b60185490565b33600160a060020a038116600090815260056020526040812054908111156123d4576123d48161223a565b6123dc6113c7565b5050565b60006117db34836108af565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561243457600080fd5b50601855565b60008060008061244a600161179e565b1161245457600080fd5b61245e600061179e565b33600160a060020a03811660009081526009602052604081205492955090935090111561251c57600160a060020a038216600090815260096020526040902054839011156124e157600160a060020a0382166000908152600960209081526040808320546014909252909120805491859003604060020a02919091019055612517565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918503604060020a029190910190555b612541565b600160a060020a03821660009081526014602052604090208054604060020a85020190555b600160a060020a0382166000908152600860208181526040808420805460098452918520859055929091529082905593909301926125809084906108af565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000828201838110156125da57fe5b8091505b5092915050565b600080600083600101600a0a86029150600a858381151561260257fe5b0460050181151561260f57fe5b049050670de0b6b3a764000087820204979650505050505050565b60008282111561263657fe5b50900390565b6016546000906d04ee2d6d415b85acef810000000090829064e8d4a510006126c86126c274015e531a0a1c872bad2ce16256fe82000000000000880269d3c21bcecceda10000006002860a02017208f7e32ce7bea5c6fe4820023a2000000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000001613388565b8561262a565b8115156126d157fe5b0403949350505050565b601e848155829085906126f3908290606460126125e5565b601f55601e54612708906014606460126125e5565b602055601e5461271d90600f606460126125e5565b602155601e5461273290600a606460126125e5565b602255601e54612747906005606460126125e5565b602355601e5461275c906005606460126125e5565b602455601e54612771906005606460126125e5565b602555601e54612786906003606460126125e5565b602655601e5461279b906003606460126125e5565b602755601e546127b0906002606460126125e5565b602855600160a060020a038281166000908152600a602090815260408083208054600160a060020a0319168a861617908190559093168252600890522054601f546127fb91906125cb565b600160a060020a038084166000908152600a60209081526040808320549093168252600890522055601f5461283190829061262a565b90506001831515141561284a5761284a858360016133bd565b600160a060020a038086166000908152600a602090815260408083205460298054600160a060020a03199081169287169290921790819055600b845282852054602a80548416918816919091179055600c845282852054602b80548416918816919091179055600d845282852054602c80548416918816919091179055600e845282852054602d80548416918816919091179055600f845282852054602e805484169188169190911790556010845282852054602f805484169188169190911790556011845282852054603080548416918816919091179055601290935292205460318054909316908416179091551615612a0557600160a060020a038086166000908152600a60209081526040808320548685168452600b83528184208054600160a060020a031916918616919091179081905590931682526008815291902054905461299891906125cb565b600160a060020a038084166000908152600b602090815260408083205490931682526008815291902091909155546129d190829061262a565b905060018315151415612a0557600160a060020a038086166000908152600a6020526040902054612a0591168360026133bd565b602a54600160a060020a031615612ad857600160a060020a038086166000908152600b60209081526040808320548685168452600c83528184208054600160a060020a03191691861691909117908190559093168252600890522054602154612a6e91906125cb565b600160a060020a038084166000908152600c60209081526040808320549093168252600890522055602154612aa490829061262a565b905060018315151415612ad857600160a060020a038086166000908152600b6020526040902054612ad891168360036133bd565b602b54600160a060020a031615612bab57600160a060020a038086166000908152600c60209081526040808320548685168452600d83528184208054600160a060020a03191691861691909117908190559093168252600890522054602254612b4191906125cb565b600160a060020a038084166000908152600d60209081526040808320549093168252600890522055602254612b7790829061262a565b905060018315151415612bab57600160a060020a038086166000908152600c6020526040902054612bab91168360046133bd565b602c54600160a060020a031615612c7e57600160a060020a038086166000908152600d60209081526040808320548685168452600e83528184208054600160a060020a03191691861691909117908190559093168252600890522054602354612c1491906125cb565b600160a060020a038084166000908152600e60209081526040808320549093168252600890522055602354612c4a90829061262a565b905060018315151415612c7e57600160a060020a038086166000908152600d6020526040902054612c7e91168360056133bd565b602d54600160a060020a031615612d5157600160a060020a038086166000908152600e60209081526040808320548685168452600f83528184208054600160a060020a03191691861691909117908190559093168252600890522054602454612ce791906125cb565b600160a060020a038084166000908152600f60209081526040808320549093168252600890522055602454612d1d90829061262a565b905060018315151415612d5157600160a060020a038086166000908152600e6020526040902054612d5191168360066133bd565b602e54600160a060020a031615612e2457600160a060020a038086166000908152600f60209081526040808320548685168452601083528184208054600160a060020a03191691861691909117908190559093168252600890522054602554612dba91906125cb565b600160a060020a038084166000908152601060209081526040808320549093168252600890522055602554612df090829061262a565b905060018315151415612e2457600160a060020a038086166000908152600f6020526040902054612e2491168360076133bd565b602f54600160a060020a031615612ef757600160a060020a038086166000908152601060209081526040808320548685168452601183528184208054600160a060020a03191691861691909117908190559093168252600890522054602654612e8d91906125cb565b600160a060020a038084166000908152601160209081526040808320549093168252600890522055602654612ec390829061262a565b905060018315151415612ef757600160a060020a03808616600090815260106020526040902054612ef791168360086133bd565b603054600160a060020a031615612fca57600160a060020a038086166000908152601160209081526040808320548685168452601283528184208054600160a060020a03191691861691909117908190559093168252600890522054602754612f6091906125cb565b600160a060020a038084166000908152601260209081526040808320549093168252600890522055602754612f9690829061262a565b905060018315151415612fca57600160a060020a03808616600090815260116020526040902054612fca91168360096133bd565b603154600160a060020a03161561309d57600160a060020a038086166000908152601260209081526040808320548685168452601383528184208054600160a060020a0319169186169190911790819055909316825260089052205460285461303391906125cb565b600160a060020a03808416600090815260136020908152604080832054909316825260089052205560285461306990829061262a565b90506001831515141561309d57600160a060020a0380861660009081526012602052604090205461309d911683600a6133bd565b6130a9601754826125cb565b601755505050505050565b6000678ac7230489e8000085108015906130d657506801158e460913d0000085105b156130ed576130ea846002606460126125e5565b90505b6801158e460913d00000851015801561310e57506802b5e3af16b188000085105b1561312557613122846003606460126125e5565b90505b6802b5e3af16b1880000851015801561314657506804563918244f40000085105b1561315d5761315a846005606460126125e5565b90505b6804563918244f400000851015801561317e575068056bc75e2d6310000085105b1561319557613192846007606460126125e5565b90505b68056bc75e2d6310000085101580156131b75750683635c9adc5dea000008511155b156131ce576131cb846008606460126125e5565b90505b60018215151415613266577318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a4895461322290826125cb565b7318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a489556132c1565b600160a060020a038084166000908152600a6020908152604080832054909316825260059052205461329890826125cb565b600160a060020a038085166000908152600a602090815260408083205490931682526005905220555b6132cd601654826125cb565b6016555050505050565b601654600090671bc16d674ec800008381019181019083906133336559ad19f99000828504650145f680b00002018702600283671bc16d674ec7ffff1982890a8b90030104650145f680b0000281151561332d57fe5b0461262a565b81151561333c57fe5b0495945050505050565b600080828481151561335457fe5b04949350505050565b60008083151561337057600091506125de565b5082820282848281151561338057fe5b04146125da57fe5b80600260018201045b818110156117db5780915060028182858115156133aa57fe5b04018115156133b557fe5b049050613391565b600160a060020a03928316600090815260336020908152604080832080546001908101918290556032845282852091855292529091208054600160a060020a03191693909416929092178355910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061344f57805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c578251825591602001919060010190613461565b50611af1926111eb9250905b80821115611af157600081556001016134885600a165627a7a723058204b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e010029

Deployed Bytecode Sourcemap

1250:41826:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10375:30;10390:9;10401:3;10375:14;:30::i;:::-;;1250:41826;19404:414;;;;;;;;;;-1:-1:-1;;;;;19404:414:0;;;;;;;;;;;;;;;;;;;;1423:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1423:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9775:132;;;;;;;;;;-1:-1:-1;;;;;9775:132:0;;;;;21043:499;;;;;;;;;;;;;;9186:134;;;;;;;;;;;;;;;;16778:144;;;;;;;;;;;;;;;;18389:90;;;;;;;;;;;;21553:437;;;;;;;;;;;;;;4062:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25640:211;;;;;;;;;;-1:-1:-1;;;;;25640:211:0;;;;;;;;;;-1:-1:-1;;;;;25640:211:0;;;;;;;;;;;;;;;;;;;;9919:272;;;;;;;;;;-1:-1:-1;;;;;9919:272:0;;;;;;;;;;;;;;;22727:633;;;;;;;;;;-1:-1:-1;;;;;22727:633:0;;;;;1569:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:46;;;;;;;;;;;;;;12195:1148;;;;;;;;;;;;25505:66;;;;;;;;;;-1:-1:-1;;;;;25505:66:0;;;;;;;19900:478;;;;;;;;;;;;2259:62;;;;;;;;;;;;9601:162;;;;;;;;;;-1:-1:-1;;;;;9601:162:0;;;;;;;23519:1178;;;;;;;;;;;;18223:101;;;;;;;;;;;;18802:286;;;;;;;;;;;;;;;;18053:96;;;;;;;;;;;;19176:137;;;;;;;;;;-1:-1:-1;;;;;19176:137:0;;;;;9332:257;;;;;;;;;;-1:-1:-1;;;;;9332:257:0;;;;;;;;;22002:691;;;;;;;;;;;;;;23372:135;;;;;;;;;;-1:-1:-1;;;;;23372:135:0;;;;;7254:150;;;;;;;;;;;;;;17098:155;;;;;;;;;;;;;;20461:571;;;;;;;;;;;;16934:152;;;;;;;;;;;;;;;;;;18558:161;;;;;;;;;;;;1499:63;;;;;;;;;;;;16646:120;;;;;;;;;;;;14827:1656;;;;;;;;;;-1:-1:-1;;;;;14827:1656:0;;;;;;;17397:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17397:126:0;;-1:-1:-1;17397:126:0;;-1:-1:-1;;;;;;17397:126:0;17535:324;;;;;;;;;;;;;;8008:900;;;;;;;;;;-1:-1:-1;;;;;8008:900:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17265:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17265:120:0;;-1:-1:-1;17265:120:0;;-1:-1:-1;;;;;;17265:120:0;7416:574;;;;;;;;;;-1:-1:-1;;;;;7416:574:0;;;;;;;;;;;;;26204:1052;;;;;;;;;;-1:-1:-1;;;;;26204:1052:0;;;;;;;;;;-1:-1:-1;;;;;26204:1052:0;;;;;;;;;;;;;;13411:1329;;;;;;;;;;;;;;25578:49;;;;;;;;;;-1:-1:-1;;;;;25578:49:0;;;;;9067:107;;;;;;;;;;;;11830:292;;;;;;;;;;;;10203:123;;-1:-1:-1;;;;;10203:123:0;;;;;8920:135;;;;;;;;;;;;;;10497:1263;;;;;;;;;;;;37047:3832;37170:7;37213:24;37648:18;37751:21;37843:19;37947:22;38029:23;38111:12;38182:20;40577:22;37134:17;4742:24;4769:10;4742:37;;4794:15;;;;;;;;;;;:86;;;;;2544:7;4840:17;4815:22;:20;:22::i;:::-;:42;4814:64;;4794:86;4790:823;;;-1:-1:-1;;;;;4982:30:0;;;;;;:12;:30;;;;;;;;:38;;:30;:38;:232;;;;-1:-1:-1;;;;;;5122:45:0;;;;;;:27;:45;;;;;;2472:7;5122:65;;;5121:93;;4982:232;4896:333;;;;;;;;-1:-1:-1;;;;;5355:45:0;;;;;;:27;:45;;;;;;5342:78;;5402:17;5342:12;:78::i;:::-;-1:-1:-1;;;;;5294:45:0;;;;;;:27;:45;;;;;:126;37272:6;:55;;;37251:10;;-1:-1:-1;37386:45:0;37310:17;1827:1;37424:3;37428:2;37386:16;:45::i;:::-;37348:12;:83;;;37493:16;;37480:44;;:12;:44::i;:::-;37442:16;:82;37600:6;;37583:44;;1760:2;37620:3;37624:2;37583:16;:44::i;:::-;37545:14;:82;37703:6;;37686:44;;1694:1;37723:3;37727:2;37686:16;:44::i;:::-;37898:6;;37648:82;;-1:-1:-1;37789:43:0;;-1:-1:-1;37881:45:0;;37789:43;37919:3;37923:2;37881:16;:45::i;:::-;37843:83;;37985:33;37998:6;;38006:11;37985:12;:33::i;:::-;37947:71;;38067:33;38085:14;38067:17;:33::i;:::-;-1:-1:-1;;;;;38258:39:0;;;;;;;:21;:39;;;;;;38029:71;;-1:-1:-1;;;;38149:22:0;;;-1:-1:-1;38220:4:0;;-1:-1:-1;38258:39:0;:85;38255:244;;-1:-1:-1;;;;;38394:39:0;;;;;;;:21;:39;;;;;;;;;;-1:-1:-1;38394:39:0;-1:-1:-1;38255:244:0;38545:1;38527:15;:19;:82;;;;-1:-1:-1;38596:12:0;;38551:42;38564:15;38596:12;38551;:42::i;:::-;:57;38527:82;38519:91;;;;;;;;-1:-1:-1;;;;;38727:57:0;;;;;;:134;;;38845:16;-1:-1:-1;;;;;38830:31:0;:11;-1:-1:-1;;;;;38830:31:0;;;38727:134;:205;;;;-1:-1:-1;38914:18:0;;-1:-1:-1;;;;;38878:32:0;;;;;;:19;:32;;;;;;:54;;38727:205;38665:935;;;38996:76;39015:14;;39030:11;39042:16;39059:12;38996:18;:76::i;:::-;39100:8;39090:6;;:18;;:42;;;;;39122:10;39112:6;;:20;;39090:42;39087:147;;;39153:65;39172:6;;39179:15;39195:16;39212:5;39153:18;:65::i;:::-;38665:935;;;39382:46;39395:16;;39413:14;;39382:12;:46::i;:::-;39348:16;:80;39446:6;;39456:8;39446:18;;;;;:42;;;39478:10;39468:6;;:20;;39446:42;39443:146;;;39509:64;39528:6;;39535:15;39551:16;39568:4;39509:18;:64::i;:::-;39679:1;39664:12;;:16;39661:711;;;39769:43;39782:12;;39796:15;39769:12;:43::i;:::-;39735:12;:77;;;-1:-1:-1;;;39987:22:0;;:39;;;;;;;39951:15;:76;;39987:39;;;;39951:76;;;;;40223:12;;-1:-1:-1;;;40197:22:0;;:39;;;;;;;;40178:15;:59;40172:4;:66;40164:4;:75;40130:109;;39661:711;;;40311:12;:49;;;39661:711;-1:-1:-1;;;;;40511:37:0;;;;;;:19;:37;;;;;;40498:68;;40550:15;40498:12;:68::i;:::-;40458:19;:37;40478:16;-1:-1:-1;;;;;40458:37:0;-1:-1:-1;;;;;40458:37:0;;;;;;;;;;;;:108;;;;40663:4;40644:15;40626;;:33;40625:42;40577:91;;40718:15;40679:10;:28;40690:16;-1:-1:-1;;;;;40679:28:0;-1:-1:-1;;;;;40679:28:0;;;;;;;;;;;;;:54;;;;;;;;;;;40826:11;-1:-1:-1;;;;;40767:71:0;40783:16;-1:-1:-1;;;;;40767:71:0;;40801:6;;40809:15;40767:71;;;;;;;;;;;;;;;;;;;;40856:15;40849:22;;4790:823;;;5558:15;:23;;-1:-1:-1;;5558:23:0;;;37272:6;:55;;;37251:10;;-1:-1:-1;37386:45:0;37310:17;1827:1;37424:3;37428:2;37386:16;:45::i;:::-;37348:12;:83;;;37493:16;;37480:44;;:12;:44::i;:::-;37442:16;:82;37600:6;;37583:44;;1760:2;37620:3;37624:2;37583:16;:44::i;:::-;37545:14;:82;37703:6;;37686:44;;1694:1;37723:3;37727:2;37686:16;:44::i;:::-;37898:6;;37648:82;;-1:-1:-1;37789:43:0;;-1:-1:-1;37881:45:0;;37789:43;37919:3;37923:2;37881:16;:45::i;:::-;37843:83;;37985:33;37998:6;;38006:11;37985:12;:33::i;:::-;37947:71;;38067:33;38085:14;38067:17;:33::i;:::-;-1:-1:-1;;;;;38258:39:0;;;;;;;:21;:39;;;;;;38029:71;;-1:-1:-1;;;;38149:22:0;;;-1:-1:-1;38220:4:0;;-1:-1:-1;38258:39:0;:85;38255:244;;-1:-1:-1;;;;;38394:39:0;;;;;;;:21;:39;;;;;;;;;;-1:-1:-1;38394:39:0;-1:-1:-1;38255:244:0;38545:1;38527:15;:19;:82;;;;-1:-1:-1;38596:12:0;;38551:42;38564:15;38596:12;38551;:42::i;:::-;:57;38527:82;38519:91;;;;;;;;-1:-1:-1;;;;;38727:57:0;;;;;;:134;;;38845:16;-1:-1:-1;;;;;38830:31:0;:11;-1:-1:-1;;;;;38830:31:0;;;38727:134;:205;;;;-1:-1:-1;38914:18:0;;-1:-1:-1;;;;;38878:32:0;;;;;;:19;:32;;;;;;:54;;38727:205;38665:935;;;38996:76;39015:14;;39030:11;39042:16;39059:12;38996:18;:76::i;:::-;39100:8;39090:6;;:18;;:42;;;;;39122:10;39112:6;;:20;;39090:42;39087:147;;;39153:65;39172:6;;39179:15;39195:16;39212:5;39153:18;:65::i;:::-;38665:935;;;39382:46;39395:16;;39413:14;;39382:12;:46::i;:::-;39348:16;:80;39446:6;;39456:8;39446:18;;;;;:42;;;39478:10;39468:6;;:20;;39446:42;39443:146;;;39509:64;39528:6;;39535:15;39551:16;39568:4;39509:18;:64::i;:::-;39679:1;39664:12;;:16;39661:711;;;39769:43;39782:12;;39796:15;39769:12;:43::i;:::-;39735:12;:77;;;-1:-1:-1;;;39987:22:0;;:39;;;;;;;39951:15;:76;;39987:39;;;;39951:76;;;;;40223:12;;-1:-1:-1;;;40197:22:0;;:39;;;;;;;;40178:15;:59;40172:4;:66;40164:4;:75;40130:109;;39661:711;;;40311:12;:49;;;39661:711;-1:-1:-1;;;;;40511:37:0;;;;;;:19;:37;;;;;;40498:68;;40550:15;40498:12;:68::i;:::-;40458:19;:37;40478:16;-1:-1:-1;;;;;40458:37:0;-1:-1:-1;;;;;40458:37:0;;;;;;;;;;;;:108;;;;40663:4;40644:15;40626;;:33;40625:42;40577:91;;40718:15;40679:10;:28;40690:16;-1:-1:-1;;;;;40679:28:0;-1:-1:-1;;;;;40679:28:0;;;;;;;;;;;;;:54;;;;;;;;;;;40826:11;-1:-1:-1;;;;;40767:71:0;40783:16;-1:-1:-1;;;;;40767:71:0;;40801:6;;40809:15;40767:71;;;;;;;;;;;;;;;;;;;;40856:15;40849:22;;5596:1;37047:3832;;;;;;;;;;;;;;;:::o;19404:414::-;-1:-1:-1;;;;;19641:28:0;;19471:7;19641:28;;;:10;:28;;;;;;;;;19599:19;:37;;;;;;19559:19;:37;;;;;;19540:15;;19730:11;:29;;;;;;;-1:-1:-1;;;19559:77:0;;;;19540:97;;;19531:138;19520:162;;19471:7;;19717:63;;19520:162;19717:12;:63::i;:::-;19693:87;19404:414;-1:-1:-1;;;;19404:414:0:o;1423:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9775:132::-;-1:-1:-1;;;;;9874:25:0;9848:6;9874:25;;;:10;:25;;;;;;;9775:132::o;21043:499::-;21122:7;21180:43;21122:7;;;21272:55;21289:16;21180:43;21320:3;21324:2;21272:16;:55::i;:::-;21234:93;;21376:43;21389:16;21407:11;21376:12;:43::i;:::-;21338:81;;21468:33;21486:14;21468:17;:33::i;:::-;21430:71;21043:499;-1:-1:-1;;;;;;21043:499:0:o;9186:134::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;9270:16:0;:42;9186:134::o;16778:144::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;16864:9:0;:50;;-1:-1:-1;;16864:50:0;;;;;;;;;;;;16778:144::o;18389:90::-;18459:12;;18389:90;;:::o;21553:437::-;21631:7;21700:17;21781:18;21877:22;21676:12;;21659:13;:29;;21651:38;;;;;;;;21738:32;21756:13;21738:17;:32::i;:::-;21700:70;-1:-1:-1;21819:47:0;21700:70;1694:1;21859:3;21863:2;21819:16;:47::i;:::-;21781:85;;21915:35;21928:9;21939:10;21915:12;:35::i;:::-;21877:73;21553:437;-1:-1:-1;;;;;21553:437:0:o;4062:35::-;;;;;;:::o;25640:211::-;-1:-1:-1;;;;;25757:22:0;;;25723:7;25757:22;;;:7;:22;;;;;;;;:30;;;;;;;:45;;;25803:39;;;;25757:45;;;25640:211::o;9919:272::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;10060:22:0;;;;;;;:7;:22;;;;;;;;:30;;;;;;;;;;:62;;-1:-1:-1;;;;;;10060:62:0;;;;;;;;-1:-1:-1;10133:39:0;;;:50;9919:272::o;22727:633::-;22801:7;22820:16;22918:17;23018:18;23101:17;23223:20;22858:49;22871:3;22876:12;:30;22889:16;-1:-1:-1;;;;;22876:30:0;-1:-1:-1;;;;;22876:30:0;;;;;;;;;;;;;22858:12;:49::i;:::-;22820:87;;22956:29;22969:8;22979:5;22956:12;:29::i;:::-;23080:9;;22918:67;;-1:-1:-1;23056:34:0;;22918:67;;23080:9;;23056:12;:34::i;:::-;-1:-1:-1;;;;;23156:37:0;;;;;;:19;:37;;;;;;23018:72;;-1:-1:-1;23139:73:0;;23018:72;23205:3;23209:2;23139:16;:73::i;:::-;-1:-1:-1;;;;;23274:37:0;;;;;;:19;:37;;;;;;23101:111;;-1:-1:-1;23261:61:0;;23101:111;23261:12;:61::i;:::-;23223:99;22727:633;-1:-1:-1;;;;;;;22727:633:0:o;1569:60::-;1627:2;1569:60;:::o;4009:46::-;;;;;;;;;;;;;;;:::o;12195:1148::-;12269:24;12328:18;4457:1;4437:17;4449:4;4437:11;:17::i;:::-;:21;4429:30;;;;;;12307:10;12269:48;;12366:18;12378:5;12366:11;:18::i;:::-;-1:-1:-1;;;;;12470:29:0;;12502:1;12470:29;;;:11;:29;;;;;;12328:56;;-1:-1:-1;12470:33:0;;12467:507;;;-1:-1:-1;;;;;12523:29:0;;;;;;:11;:29;;;;;;:42;;;12520:337;;;-1:-1:-1;;;;;12637:29:0;;;;;;:11;:29;;;;;;;;;12586:10;:28;;;;;;:107;;12637:42;;;;-1:-1:-1;;;12636:56:0;12586:107;;;;;;12520:337;;;-1:-1:-1;;;;;12798:29:0;;;;;;:11;:29;;;;;;;;;12734:10;:28;;;;;;:107;;12785:42;;;-1:-1:-1;;;12784:56:0;12734:107;;;;;;12520:337;12467:507;;;-1:-1:-1;;;;;12889:28:0;;;;;;:10;:28;;;;;:73;;-1:-1:-1;;;12939:22:0;;12889:73;;;12467:507;-1:-1:-1;;;;;13050:34:0;;;;;;:16;:34;;;;;;;;;;13095:11;:29;;;;;:39;;;13145:34;;;;:39;;;13011:73;;;;;13224:37;;;;;13011:73;;13224:37;;;;;;;;;;;;;;;;;;;;;;;;;13306:16;-1:-1:-1;;;;;13295:40:0;;13324:10;13295:40;;;;;;;;;;;;;;12195:1148;;:::o;25505:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25505:66:0;;;;;:::o;19900:478::-;19941:7;20086:17;20158:18;20254:22;19964:12;;19980:1;19964:17;19961:410;;;20004:49;;-1:-1:-1;19997:56:0;;19961:410;20120:23;20138:4;20120:17;:23::i;:::-;20086:57;-1:-1:-1;20192:47:0;20086:57;1694:1;20232:3;20236:2;20192:16;:47::i;:::-;20158:81;;20288:35;20301:9;20312:10;20288:12;:35::i;:::-;20254:69;;20345:14;20338:21;;19961:410;19900:478;;;;:::o;2259:62::-;;;;:::o;9601:162::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;9704:25:0;;;;;;;:10;:25;;;;;:51;9601:162::o;23519:1178::-;23575:4;23591:24;23775:23;23861:16;23959:17;24037:18;24120:17;24220:20;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;23710:15;;23629:10;;-1:-1:-1;23710:15:0;;23709:16;:54;;;;-1:-1:-1;;;;;;23729:30:0;;23762:1;23729:30;;;:12;:30;;;;;;:34;23709:54;23701:63;;;;;;;;-1:-1:-1;;;;;23813:37:0;;;;;;:19;:37;;;;;;;;;23917:12;:30;;;;;;;23813:37;;-1:-1:-1;23899:49:0;;23912:3;;23899:12;:49::i;:::-;23861:87;;23997:29;24010:8;24020:5;23997:12;:29::i;:::-;24099:9;;23959:67;;-1:-1:-1;24075:34:0;;23959:67;;24099:9;;24075:12;:34::i;:::-;24037:72;;24158:51;24175:15;24191:10;24202:3;24206:2;24158:16;:51::i;:::-;24120:89;;24258:39;24271:15;24287:9;24258:12;:39::i;:::-;24220:77;;24391:37;24404:12;;24418:9;24391:12;:37::i;:::-;24353:12;:75;-1:-1:-1;;;;;24525:37:0;;;;;;:19;:37;;;;;;24512:65;;24564:12;24512;:65::i;:::-;-1:-1:-1;;;;;24472:37:0;;;;;;;:19;:37;;;;;;;;:105;;;;24588:19;:37;;;;;:41;;;24640:12;:30;;;;;:39;;;;-1:-1:-1;23519:1178:0;;;-1:-1:-1;;;;;23519:1178:0:o;18223:101::-;18300:16;;18223:101;:::o;18802:286::-;18871:7;18929:10;18957:21;:122;;19050:29;19062:16;19050:11;:29::i;:::-;18957:122;;;-1:-1:-1;;;;;19013:34:0;;;;;;:16;:34;;;;;;18981:29;19030:16;18981:11;:29::i;:::-;:66;18957:122;18950:129;;18802:286;;;;;:::o;18053:96::-;-1:-1:-1;;;;;18129:4:0;:12;;18053:96;:::o;19176:137::-;-1:-1:-1;;;;;19268:37:0;19241:7;19268:37;;;:19;:37;;;;;;;19176:137::o;9332:257::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;9459:34:0;;;;;;;:19;:34;;;;;;;;:60;;;;9530:12;:27;;;:51;9332:257::o;22002:691::-;22080:4;22096:24;22302:33;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;22215:15;;22134:10;;-1:-1:-1;22215:15:0;;22214:16;:76;;;;-1:-1:-1;;;;;;22253:37:0;;;;;;:19;:37;;;;;;22234:56;;;22214:76;22206:85;;;;;;;;22340:35;22353:15;22370:4;22340:12;:35::i;:::-;-1:-1:-1;;;;;22386:30:0;;;;;;:12;:30;;;;;;;;22424:3;22386:41;;22491:19;:37;;;;;;22302:73;;-1:-1:-1;22478:78:0;;22302:73;22478:12;:78::i;:::-;-1:-1:-1;;;;;22438:37:0;;;;;;:19;:37;;;;;;;;:118;;;;22620:19;:37;;;;22607:78;;22659:25;22607:12;:78::i;:::-;-1:-1:-1;;;;;22567:37:0;;;;;;;:19;:37;;;;;:118;;;;-1:-1:-1;22002:691:0;;-1:-1:-1;22002:691:0:o;23372:135::-;-1:-1:-1;;;;;23469:30:0;23443:7;23469:30;;;:12;:30;;;;;;;23372:135::o;7254:150::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;7342:12:0;:54;7254:150::o;17098:155::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;17192:18:0;:53;17098:155::o;20461:571::-;20501:7;20646:17;20718:21;20810:19;20907:22;20524:12;;20540:1;20524:17;20521:504;;;20564:49;;-1:-1:-1;20557:56:0;;20521:504;20680:23;20698:4;20680:17;:23::i;:::-;20646:57;-1:-1:-1;20752:43:0;;-1:-1:-1;20844:48:0;20646:57;20752:43;20885:3;20889:2;20844:16;:48::i;:::-;20810:82;;20941:36;20954:9;20965:11;20941:12;:36::i;:::-;20907:70;;20999:14;20992:21;;20521:504;20461:571;;;;;:::o;16934:152::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;17033:27:0;;;;:14;:27;;;;;;:45;;-1:-1:-1;;17033:45:0;;;;;;;;;;16934:152::o;18558:161::-;18598:7;18656:10;18684:27;18656:10;18684:9;:27::i;:::-;18677:34;;18558:161;;;:::o;1499:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16646:120;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;16715:15:0;:43;;-1:-1:-1;;16715:43:0;;;16646:120::o;14827:1656::-;14922:4;14939:24;15351:17;15453:20;15542:18;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;15058:15;;14977:10;;-1:-1:-1;15058:15:0;;15057:16;:76;;;;-1:-1:-1;;;;;;15096:37:0;;;;;;:19;:37;;;;;;15077:56;;;15057:76;15049:85;;;;;;;;15221:1;15201:17;15213:4;15201:11;:17::i;:::-;:21;15198:36;;;15224:10;:8;:10::i;:::-;15389:53;15406:15;1694:1;15435:3;15439:2;15389:16;:53::i;:::-;15351:91;;15491:40;15504:15;15521:9;15491:12;:40::i;:::-;15453:78;;15580:28;15598:9;15580:17;:28::i;:::-;15542:66;;15689:37;15702:12;;15716:9;15689:12;:37::i;:::-;15651:12;:75;-1:-1:-1;;;;;15818:37:0;;;;;;:19;:37;;;;;;15805:68;;15857:15;15805:12;:68::i;:::-;-1:-1:-1;;;;;15765:37:0;;;;;;;:19;:37;;;;;;:108;;;;15935:31;;;;;;;15922:59;;15968:12;15922;:59::i;:::-;-1:-1:-1;;;;;15884:31:0;;;;;;;:19;:31;;;;;;;;:97;;;;16078:15;;;16029:28;;;;;:10;:28;;;;;;:83;;16078:33;;;16029:83;;;;;;16172:15;;16123:22;;;;;;;:80;;16172:30;;;16123:80;;;;;;16310:15;16354:12;;16297:70;;16310:15;-1:-1:-1;;;16328:22:0;;16327:39;;;;;;;;16297:12;:70::i;:::-;16259:15;:108;-1:-1:-1;;;;;16401:52:0;;;;;;;16440:12;16401:52;;;;;;;;;;;;;;-1:-1:-1;16471:4:0;;14827:1656;-1:-1:-1;;;;;;14827:1656:0:o;17397:126::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17470:6;17508:7;;17470:45;;;;;;;;:::i;:::-;;17397:126;;:::o;17535:324::-;17626:21;4576:10;4605:14;17626:21;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17681:16;;17652:10;;-1:-1:-1;17681:35:0;;;;17673:44;;;;;;-1:-1:-1;;;;;17728:22:0;;:39;;;;17751:15;17728:39;;;;;;;;;;;;;;;;;;;;;;;;;;17804:47;17817:16;;17835:15;17804:12;:47::i;:::-;17778:16;:73;-1:-1:-1;;;17535:324:0:o;8008:900::-;8254:25;4576:10;4605:14;8254:25;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;;8319:40:0;;;;;;;:21;:40;;;;;;;;:47;;;;;-1:-1:-1;;;;;;8319:47:0;;;;;;8377:21;:40;;;;;:47;;;;;;;;;;;;;;;8435:21;:40;;;;;:47;;;;;;;;;;;;;;;8493:21;:40;;;;;:47;;;;;;;;;;;;;;;8551:21;:40;;;;;:47;;;;;;;;;;;;;;;8609:21;:40;;;;;:47;;;;;;;;;;;;;;;8667:21;:40;;;;;:47;;;;;;;;;;;;;;;8725:21;:40;;;;;:47;;;;;;;;;;;;;;8783:21;:40;;;;;:47;;;;;;;;;;;;;;8841:22;:41;;;;;;;:49;;;;;;;;;;;8008:900::o;17265:120::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17334:4;17372:5;;17334:43;;;;;;;;:::i;7416:574::-;7620:25;4576:10;4605:14;7620:25;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;;7685:30:0;;;;;;;:11;:30;;;;;;;;:54;;;;7760:16;:35;;;;;:59;;;;7840:14;:33;;;;;:57;;;;7918:19;:38;;;;;:54;7416:574::o;26204:1052::-;26279:10;26305:6;26315:1;26305:11;26302:926;;;-1:-1:-1;;;;;;26338:39:0;;;;;;;:21;:39;;;;;;;26302:926;;;26398:6;26408:1;26398:11;26395:833;;;-1:-1:-1;;;;;;26431:39:0;;;;;;;:21;:39;;;;;;;26395:833;;;26491:6;26501:1;26491:11;26488:740;;;-1:-1:-1;;;;;;26524:39:0;;;;;;;:21;:39;;;;;;;26488:740;;;26584:6;26594:1;26584:11;26581:647;;;-1:-1:-1;;;;;;26617:39:0;;;;;;;:21;:39;;;;;;;26581:647;;;26677:6;26687:1;26677:11;26674:554;;;-1:-1:-1;;;;;;26710:39:0;;;;;;;:21;:39;;;;;;;26674:554;;;26770:6;26780:1;26770:11;26767:461;;;-1:-1:-1;;;;;;26803:39:0;;;;;;;:21;:39;;;;;;;26767:461;;;26863:6;26873:1;26863:11;26860:368;;;-1:-1:-1;;;;;;26896:39:0;;;;;;;:21;:39;;;;;;;26860:368;;;26956:6;26966:1;26956:11;26953:275;;;-1:-1:-1;;;;;;26989:39:0;;;;;;;:21;:39;;;;;;;26953:275;;;27049:6;27059:1;27049:11;27046:182;;;-1:-1:-1;;;;;;27082:39:0;;;;;;;:21;:39;;;;;;;27046:182;;;27142:6;27152:2;27142:12;27139:89;;;-1:-1:-1;;;;;;27176:40:0;;;;;;;:22;:40;;;;;;;27139:89;26204:1052;;;;:::o;13411:1329::-;13485:24;13620:15;13684:17;13759:18;13855:22;14204;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;13523:10;-1:-1:-1;;;;;13571:37:0;;;;;;:19;:37;;;;;;13523:10;;-1:-1:-1;13552:56:0;;;13544:65;;;;;;13658:15;13620:53;;13722:26;13740:7;13722:17;:26::i;:::-;13684:64;-1:-1:-1;13797:47:0;13684:64;1694:1;13837:3;13841:2;13797:16;:47::i;:::-;13759:85;;13893:35;13906:9;13917:10;13893:12;:35::i;:::-;13855:73;;14010:35;14023:12;;14037:7;14010:12;:35::i;:::-;13972:12;:73;-1:-1:-1;;;;;14109:37:0;;;;;;:19;:37;;;;;;14096:60;;14148:7;14096:12;:60::i;:::-;-1:-1:-1;;;;;14056:37:0;;;;;;:19;:37;;;;;;;;:100;;;;14252:15;;14320:10;:28;;;;;;:54;;14252:25;;;-1:-1:-1;;;14281:26:0;;14252:56;14320:54;;;;;;14439:12;;14252:56;;-1:-1:-1;14439:16:0;;14435:210;;;14563:70;14576:15;;14620:12;;-1:-1:-1;;;14594:10:0;:22;14593:39;;;;;;14563:70;14529:15;:104;14435:210;14690:16;-1:-1:-1;;;;;14678:54:0;;14708:7;14717:14;14678:54;;;;;;;;;;;;;;;;;;;;13411:1329;;;;;;;:::o;25578:49::-;;;;;;;;;;;;;:::o;9067:107::-;9151:15;;9067:107;:::o;11830:292::-;11957:10;-1:-1:-1;;;;;12016:37:0;;11919:24;12016:37;;;:19;:37;;;;;;;12067:11;;12064:29;;;12080:13;12085:7;12080:4;:13::i;:::-;12104:10;:8;:10::i;:::-;11830:292;;:::o;10203:123::-;10260:7;10280:38;10295:9;10306:11;10280:14;:38::i;8920:135::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;9006:15:0;:41;8920:135::o;10497:1263::-;10576:18;10728:24;11596:15;4457:1;4437:17;4449:4;4437:11;:17::i;:::-;:21;4429:30;;;;;;10614:18;10626:5;10614:11;:18::i;:::-;10766:10;-1:-1:-1;;;;;10790:29:0;;10822:1;10790:29;;;:11;:29;;;;;;10576:56;;-1:-1:-1;10766:10:0;;-1:-1:-1;10790:33:0;;10787:507;;;-1:-1:-1;;;;;10843:29:0;;;;;;:11;:29;;;;;;:42;;;10840:337;;;-1:-1:-1;;;;;10957:29:0;;;;;;:11;:29;;;;;;;;;10906:10;:28;;;;;;:107;;10957:42;;;;-1:-1:-1;;;10956:56:0;10906:107;;;;;;10840:337;;;-1:-1:-1;;;;;11118:29:0;;;;;;:11;:29;;;;;;;;;11054:10;:28;;;;;;:107;;11105:42;;;-1:-1:-1;;;11104:56:0;11054:107;;;;;;10840:337;10787:507;;;-1:-1:-1;;;;;11209:28:0;;;;;;:10;:28;;;;;:73;;-1:-1:-1;;;11259:22:0;;11209:73;;;10787:507;-1:-1:-1;;;;;11375:34:0;;;;;;:16;:34;;;;;;;;;;11420:11;:29;;;;;:39;;;11470:34;;;;:39;;;;11336:73;;;;;11634:31;;11336:73;;11634:14;:31::i;:::-;11596:69;;11714:16;-1:-1:-1;;;;;11699:53:0;;11732:10;11744:7;11699:53;;;;;;;;;;;;;;;;;;;;10497:1263;;;:::o;1096:147::-;1154:7;1186:5;;;1209:6;;;;1202:14;;;;1234:1;1227:8;;1096:147;;;;;;:::o;147:306::-;248:13;274:15;335:14;312:9;322:1;312:11;305:2;:19;293:9;:31;274:50;;388:2;368:11;355:10;:24;;;;;;;;383:1;354:30;353:37;;;;;;;;;-1:-1:-1;425:19:0;409:15;;;:35;;147:306;-1:-1:-1;;;;;;;147:306:0:o;967:123::-;1025:7;1052:6;;;;1045:14;;;;-1:-1:-1;1077:5:0;;;967:123::o;41175:919::-;42028:12;;41243:7;;41301:25;;41243:7;;2037:14;41420:555;41456:457;41602:52;;;41718:27;41827:1;41748:15;;41717:47;41517:248;41827:45;:58;;41517:369;41518:21;41517:369;41456:4;:457::i;:::-;41938:18;41420:12;:555::i;:::-;41401:614;;;;;;;;41386:655;;41175:919;-1:-1:-1;;;;41175:919:0:o;27268:8275::-;27514:14;:51;;;27434:7;;27486:17;;27620:42;;27486:17;;27655:3;27659:2;27620:16;:42::i;:::-;27586:8;:76;27724:14;;27707:42;;27739:2;27742:3;27746:2;27707:16;:42::i;:::-;27673:8;:76;27811:14;;27794:42;;27826:2;27829:3;27833:2;27794:16;:42::i;:::-;27760:8;:76;27898:14;;27881:42;;27913:2;27916:3;27920:2;27881:16;:42::i;:::-;27847:8;:76;27985:14;;27968:41;;28000:1;28002:3;28006:2;27968:16;:41::i;:::-;27934:8;:75;28071:14;;28054:41;;28086:1;28088:3;28092:2;28054:16;:41::i;:::-;28020:8;:75;28157:14;;28140:41;;28172:1;28174:3;28178:2;28140:16;:41::i;:::-;28106:8;:75;28243:14;;28226:41;;28258:1;28260:3;28264:2;28226:16;:41::i;:::-;28192:8;:75;28329:14;;28312:41;;28344:1;28346:3;28350:2;28312:16;:41::i;:::-;28278:8;:75;28415:14;;28398:41;;28430:1;28432:3;28436:2;28398:16;:41::i;:::-;28364:9;:75;-1:-1:-1;;;;;28480:39:0;;;;;;;:21;:39;;;;;;;;:73;;-1:-1:-1;;;;;;28480:73:0;;;;;;;;;28656:39;;;28639:57;;:16;:57;;;;28698:8;;28626:81;;28639:57;28626:12;:81::i;:::-;-1:-1:-1;;;;;28581:39:0;;;28564:57;28581:39;;;:21;:39;;;;;;;;;;;;28564:57;;:16;:57;;;:143;28812:8;;28780:41;;28793:17;;28780:12;:41::i;:::-;28718:103;-1:-1:-1;28851:4:0;28835:20;;;;28832:100;;;28872:48;28887:11;28900:16;28918:1;28872:14;:48::i;:::-;-1:-1:-1;;;;;28986:34:0;;;;;;;:21;:34;;;;;;;;;28952:6;:68;;-1:-1:-1;;;;;;28952:68:0;;;28986:34;;;28952:68;;;;;;;;29065:21;:34;;;;;;29031:6;:68;;;;29065:34;;;29031:68;;;;;;29144:21;:34;;;;;;29110:6;:68;;;;29144:34;;;29110:68;;;;;;29223:21;:34;;;;;;29189:6;:68;;;;29223:34;;;29189:68;;;;;;29302:21;:34;;;;;;29268:6;:68;;;;29302:34;;;29268:68;;;;;;29381:21;:34;;;;;;29347:6;:68;;;;29381:34;;;29347:68;;;;;;29460:21;:34;;;;;;29426:6;:68;;;;29460:34;;;29426:68;;;;;;29539:21;:34;;;;;;29505:6;:68;;;;29539:34;;;29505:68;;;;;;29618:21;:34;;;;;;29584:7;:68;;;;;29618:34;;;29584:68;;;;29696:6;:52;29693:601;;-1:-1:-1;;;;;29827:34:0;;;;;;;:21;:34;;;;;;;;;29765:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;29765:96:0;29827:34;;;29765:96;;;;;;;;29968:39;;;29951:57;;:16;:57;;;;;;30010:8;;29938:81;;29951:57;29938:12;:81::i;:::-;-1:-1:-1;;;;;29893:39:0;;;29876:57;29893:39;;;:21;:39;;;;;;;;;;;;29876:57;;:16;:57;;;;;:143;;;;30128:8;30096:41;;30109:17;;30096:12;:41::i;:::-;30034:103;-1:-1:-1;30171:4:0;30155:20;;;;30152:131;;;-1:-1:-1;;;;;30211:34:0;;;;;;;:21;:34;;;;;;30196:71;;30211:34;30247:16;30265:1;30196:14;:71::i;:::-;30337:6;;-1:-1:-1;;;;;30337:6:0;:52;30334:601;;-1:-1:-1;;;;;30468:34:0;;;;;;;:21;:34;;;;;;;;;30406:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;30406:96:0;30468:34;;;30406:96;;;;;;;;30609:39;;;30592:57;;:16;:57;;;;30651:8;;30579:81;;30592:57;30579:12;:81::i;:::-;-1:-1:-1;;;;;30534:39:0;;;30517:57;30534:39;;;:21;:39;;;;;;;;;;;;30517:57;;:16;:57;;;:143;30769:8;;30737:41;;30750:17;;30737:12;:41::i;:::-;30675:103;-1:-1:-1;30812:4:0;30796:20;;;;30793:131;;;-1:-1:-1;;;;;30852:34:0;;;;;;;:21;:34;;;;;;30837:71;;30852:34;30888:16;30906:1;30837:14;:71::i;:::-;30978:6;;-1:-1:-1;;;;;30978:6:0;:52;30975:601;;-1:-1:-1;;;;;31109:34:0;;;;;;;:21;:34;;;;;;;;;31047:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;31047:96:0;31109:34;;;31047:96;;;;;;;;31250:39;;;31233:57;;:16;:57;;;;31292:8;;31220:81;;31233:57;31220:12;:81::i;:::-;-1:-1:-1;;;;;31175:39:0;;;31158:57;31175:39;;;:21;:39;;;;;;;;;;;;31158:57;;:16;:57;;;:143;31410:8;;31378:41;;31391:17;;31378:12;:41::i;:::-;31316:103;-1:-1:-1;31453:4:0;31437:20;;;;31434:131;;;-1:-1:-1;;;;;31493:34:0;;;;;;;:21;:34;;;;;;31478:71;;31493:34;31529:16;31547:1;31478:14;:71::i;:::-;31619:6;;-1:-1:-1;;;;;31619:6:0;:52;31616:601;;-1:-1:-1;;;;;31750:34:0;;;;;;;:21;:34;;;;;;;;;31688:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;31688:96:0;31750:34;;;31688:96;;;;;;;;31891:39;;;31874:57;;:16;:57;;;;31933:8;;31861:81;;31874:57;31861:12;:81::i;:::-;-1:-1:-1;;;;;31816:39:0;;;31799:57;31816:39;;;:21;:39;;;;;;;;;;;;31799:57;;:16;:57;;;:143;32051:8;;32019:41;;32032:17;;32019:12;:41::i;:::-;31957:103;-1:-1:-1;32094:4:0;32078:20;;;;32075:131;;;-1:-1:-1;;;;;32134:34:0;;;;;;;:21;:34;;;;;;32119:71;;32134:34;32170:16;32188:1;32119:14;:71::i;:::-;32260:6;;-1:-1:-1;;;;;32260:6:0;:52;32257:601;;-1:-1:-1;;;;;32391:34:0;;;;;;;:21;:34;;;;;;;;;32329:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;32329:96:0;32391:34;;;32329:96;;;;;;;;32532:39;;;32515:57;;:16;:57;;;;32574:8;;32502:81;;32515:57;32502:12;:81::i;:::-;-1:-1:-1;;;;;32457:39:0;;;32440:57;32457:39;;;:21;:39;;;;;;;;;;;;32440:57;;:16;:57;;;:143;32692:8;;32660:41;;32673:17;;32660:12;:41::i;:::-;32598:103;-1:-1:-1;32735:4:0;32719:20;;;;32716:131;;;-1:-1:-1;;;;;32775:34:0;;;;;;;:21;:34;;;;;;32760:71;;32775:34;32811:16;32829:1;32760:14;:71::i;:::-;32901:6;;-1:-1:-1;;;;;32901:6:0;:52;32898:601;;-1:-1:-1;;;;;33032:34:0;;;;;;;:21;:34;;;;;;;;;32970:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;32970:96:0;33032:34;;;32970:96;;;;;;;;33173:39;;;33156:57;;:16;:57;;;;33215:8;;33143:81;;33156:57;33143:12;:81::i;:::-;-1:-1:-1;;;;;33098:39:0;;;33081:57;33098:39;;;:21;:39;;;;;;;;;;;;33081:57;;:16;:57;;;:143;33333:8;;33301:41;;33314:17;;33301:12;:41::i;:::-;33239:103;-1:-1:-1;33376:4:0;33360:20;;;;33357:131;;;-1:-1:-1;;;;;33416:34:0;;;;;;;:21;:34;;;;;;33401:71;;33416:34;33452:16;33470:1;33401:14;:71::i;:::-;33542:6;;-1:-1:-1;;;;;33542:6:0;:52;33539:601;;-1:-1:-1;;;;;33673:34:0;;;;;;;:21;:34;;;;;;;;;33611:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;33611:96:0;33673:34;;;33611:96;;;;;;;;33814:39;;;33797:57;;:16;:57;;;;33856:8;;33784:81;;33797:57;33784:12;:81::i;:::-;-1:-1:-1;;;;;33739:39:0;;;33722:57;33739:39;;;:21;:39;;;;;;;;;;;;33722:57;;:16;:57;;;:143;33974:8;;33942:41;;33955:17;;33942:12;:41::i;:::-;33880:103;-1:-1:-1;34017:4:0;34001:20;;;;33998:131;;;-1:-1:-1;;;;;34057:34:0;;;;;;;:21;:34;;;;;;34042:71;;34057:34;34093:16;34111:1;34042:14;:71::i;:::-;34183:6;;-1:-1:-1;;;;;34183:6:0;:52;34180:601;;-1:-1:-1;;;;;34314:34:0;;;;;;;:21;:34;;;;;;;;;34252:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;34252:96:0;34314:34;;;34252:96;;;;;;;;34455:39;;;34438:57;;:16;:57;;;;34497:8;;34425:81;;34438:57;34425:12;:81::i;:::-;-1:-1:-1;;;;;34380:39:0;;;34363:57;34380:39;;;:21;:39;;;;;;;;;;;;34363:57;;:16;:57;;;:143;34615:8;;34583:41;;34596:17;;34583:12;:41::i;:::-;34521:103;-1:-1:-1;34658:4:0;34642:20;;;;34639:131;;;-1:-1:-1;;;;;34698:34:0;;;;;;;:21;:34;;;;;;34683:71;;34698:34;34734:16;34752:1;34683:14;:71::i;:::-;34825:7;;-1:-1:-1;;;;;34825:7:0;:53;34822:606;;-1:-1:-1;;;;;34957:34:0;;;;;;;:21;:34;;;;;;;;;34895:40;;;;;:22;:40;;;;;:96;;-1:-1:-1;;;;;;34895:96:0;34957:34;;;34895:96;;;;;;;;35098:40;;;35081:58;;:16;:58;;;;35141:9;;35068:83;;35081:58;35068:12;:83::i;:::-;-1:-1:-1;;;;;35023:40:0;;;35006:58;35023:40;;;:22;:40;;;;;;;;;;;;35006:58;;:16;:58;;;:145;35260:9;;35228:42;;35241:17;;35228:12;:42::i;:::-;35166:104;-1:-1:-1;35304:4:0;35288:20;;;;35285:132;;;-1:-1:-1;;;;;35344:34:0;;;;;;;:21;:34;;;;;;35329:72;;35344:34;35380:16;35398:2;35329:14;:72::i;:::-;35486:49;35499:16;;35517:17;35486:12;:49::i;:::-;35448:16;:87;-1:-1:-1;;;;;;27268:8275:0:o;35551:1490::-;35688:20;35752:8;35741:19;;;;;:41;;;35774:8;35764:7;:18;35741:41;35738:149;;;35833:42;35850:15;35866:1;35868:3;35872:2;35833:16;:42::i;:::-;35799:76;;35738:149;35911:8;35900:7;:19;;:41;;;;;35933:8;35923:7;:18;35900:41;35897:149;;;35992:42;36009:15;36025:1;36027:3;36031:2;35992:16;:42::i;:::-;35958:76;;35897:149;36070:8;36059:7;:19;;:41;;;;;36092:8;36082:7;:18;36059:41;36056:149;;;36151:42;36168:15;36184:1;36186:3;36190:2;36151:16;:42::i;:::-;36117:76;;36056:149;36229:8;36218:7;:19;;:42;;;;;36251:9;36241:7;:19;36218:42;36215:150;;;36311:42;36328:15;36344:1;36346:3;36350:2;36311:16;:42::i;:::-;36277:76;;36215:150;36389:9;36378:7;:20;;:45;;;;;36413:10;36402:7;:21;;36378:45;36375:153;;;36474:42;36491:15;36507:1;36509:3;36513:2;36474:16;:42::i;:::-;36440:76;;36375:153;36569:4;36551:22;;;;36548:401;;;36692:42;36672:63;;:19;:63;;;;36659:91;;36737:12;36659;:91::i;:::-;36610:42;36590:63;;:19;:63;;;:160;36548:401;;;-1:-1:-1;;;;;36882:39:0;;;36862:60;36882:39;;;:21;:39;;;;;;;;;;;;36862:60;;:19;:60;;;;36849:88;;36924:12;36849;:88::i;:::-;-1:-1:-1;;;;;36803:39:0;;;36783:60;36803:39;;;:21;:39;;;;;;;;;;;;36783:60;;:19;:60;;;:154;36548:401;36993:40;37006:12;;37020;36993;:40::i;:::-;36959:12;:74;-1:-1:-1;;;;;35551:1490:0:o;42161:696::-;42351:12;;42227:7;;42296:4;42286:14;;;;42351:19;;;42227:7;;42444:357;42525:147;42603:17;;;2116:15;42577:44;42525:147;42498:214;;42785:1;42296:4;-1:-1:-1;;42758:10:0;;;:18;;;;42757:25;2116:15;42733:50;42732:54;;;;;;;;42444:12;:357::i;:::-;:372;;;;;;;;;42161:696;-1:-1:-1;;;;;42161:696:0:o;673:288::-;731:7;830:9;846:1;842;:5;;;;;;;;;673:288;-1:-1:-1;;;;673:288:0:o;459:208::-;517:7;;541:6;;537:47;;;571:1;564:8;;;;537:47;-1:-1:-1;606:5:0;;;610:1;606;:5;629;;;;;;;;:10;622:18;;;42869:198;42943:5;42952:1;42947;42943:5;;42942:11;42980:80;42991:1;42987;:5;42980:80;;;43013:1;43009:5;;43047:1;43042;43038;43034;:5;;;;;;;;:9;43033:15;;;;;;;;43029:19;;42980:80;;25863:333;-1:-1:-1;;;;;25969:29:0;;;26011:11;25969:29;;;:14;:29;;;;;;;;:31;;;;;;;;;;26065:7;:22;;;;;:30;;;;;;;;:62;;-1:-1:-1;;;;;;26065:62:0;;;;;;;;;;;26138:39;;:50;25863:333::o;1250:41826::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1250:41826:0;;;;-1:-1:-1;1250:41826:0;;;;;;;;;;;;;;

Swarm Source

bzzr://4b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e01
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.