ETH Price: $3,214.47 (+5.26%)
Gas: 3.72 Gwei

Contract

0x2F70323D7199855A50b077c3164Bd030543E3a12
 

Overview

ETH Balance

0.012590676801785329 ETH

Eth Value

$40.47 (@ $3,214.47/ETH)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0xf346b198204533752024-08-04 6:24:23163 days ago1722752663IN
0x2F70323D...0543E3a12
0 ETH0.000063911
Release Stake118749902021-02-17 14:52:081426 days ago1613573528IN
0x2F70323D...0543E3a12
0 ETH0.00372173152.9
Release Stake118749862021-02-17 14:51:061426 days ago1613573466IN
0x2F70323D...0543E3a12
0 ETH0.00387577155
Release Stake118749652021-02-17 14:46:531426 days ago1613573213IN
0x2F70323D...0543E3a12
0 ETH0.00410082164
Release Stake118749252021-02-17 14:38:171426 days ago1613572697IN
0x2F70323D...0543E3a12
0 ETH0.00387577155
Release Stake118749192021-02-17 14:37:081426 days ago1613572628IN
0x2F70323D...0543E3a12
0 ETH0.00377285155
Release Stake118749182021-02-17 14:37:051426 days ago1613572625IN
0x2F70323D...0543E3a12
0 ETH0.00387577155
Release Stake118749022021-02-17 14:32:421426 days ago1613572362IN
0x2F70323D...0543E3a12
0 ETH0.0040258161
Release Stake118749012021-02-17 14:32:321426 days ago1613572352IN
0x2F70323D...0543E3a12
0 ETH0.0035007140
Release Stake118748762021-02-17 14:25:551426 days ago1613571955IN
0x2F70323D...0543E3a12
0 ETH0.0035257141
Release Stake118748432021-02-17 14:17:151426 days ago1613571435IN
0x2F70323D...0543E3a12
0 ETH0.00316433130
Release Stake118748432021-02-17 14:17:151426 days ago1613571435IN
0x2F70323D...0543E3a12
0 ETH0.00287557115
Release Stake118748402021-02-17 14:16:491426 days ago1613571409IN
0x2F70323D...0543E3a12
0 ETH0.0035007140
Release Stake118747932021-02-17 14:06:061426 days ago1613570766IN
0x2F70323D...0543E3a12
0 ETH0.00337567135
Release Stake118282502021-02-10 10:35:421434 days ago1612953342IN
0x2F70323D...0543E3a12
0 ETH0.005001200
Release Stake118282232021-02-10 10:30:261434 days ago1612953026IN
0x2F70323D...0543E3a12
0 ETH0.00512602205
Release Stake118282132021-02-10 10:27:491434 days ago1612952869IN
0x2F70323D...0543E3a12
0 ETH0.00434586173.8
Release Stake118282062021-02-10 10:26:551434 days ago1612952815IN
0x2F70323D...0543E3a12
0 ETH0.00520104208
Release Stake118281852021-02-10 10:20:491434 days ago1612952449IN
0x2F70323D...0543E3a12
0 ETH0.00505101202
Release Stake118281612021-02-10 10:14:391434 days ago1612952079IN
0x2F70323D...0543E3a12
0 ETH0.00387827155.1
Release Stake118280192021-02-10 9:47:181434 days ago1612950438IN
0x2F70323D...0543E3a12
0 ETH0.00457591183
Release Stake118279902021-02-10 9:39:381434 days ago1612949978IN
0x2F70323D...0543E3a12
0 ETH0.00520104208
Release Stake118227422021-02-09 14:14:171434 days ago1612880057IN
0x2F70323D...0543E3a12
0 ETH0.00630126252
Release Stake118227322021-02-09 14:12:271434 days ago1612879947IN
0x2F70323D...0543E3a12
0 ETH0.00635127254.00000001
Release Stake118226802021-02-09 14:00:081434 days ago1612879208IN
0x2F70323D...0543E3a12
0 ETH0.00367573147
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
110421122020-10-12 17:29:361554 days ago1602523776
0x2F70323D...0543E3a12
0.04050253 ETH
110420842020-10-12 17:23:481554 days ago1602523428
0x2F70323D...0543E3a12
0.67511967 ETH
110028632020-10-06 14:59:131560 days ago1601996353
0x2F70323D...0543E3a12
0.36459189 ETH
109497242020-09-28 7:42:431569 days ago1601278963
0x2F70323D...0543E3a12
0.03272621 ETH
109411842020-09-26 23:36:271570 days ago1601163387
0x2F70323D...0543E3a12
0.004191 ETH
109106242020-09-22 6:11:181575 days ago1600755078
0x2F70323D...0543E3a12
0.49031539 ETH
109105782020-09-22 6:02:101575 days ago1600754530
0x2F70323D...0543E3a12
0.42659354 ETH
109105652020-09-22 5:58:101575 days ago1600754290
0x2F70323D...0543E3a12
0.03445112 ETH
107202642020-08-24 1:54:581604 days ago1598234098
0x2F70323D...0543E3a12
0.01318423 ETH
107198292020-08-24 0:18:091604 days ago1598228289
0x2F70323D...0543E3a12
0.02885719 ETH
107198202020-08-24 0:16:151604 days ago1598228175
0x2F70323D...0543E3a12
0.00025523 ETH
107198162020-08-24 0:14:411604 days ago1598228081
0x2F70323D...0543E3a12
0.01718389 ETH
107198012020-08-24 0:11:381604 days ago1598227898
0x2F70323D...0543E3a12
0.09048316 ETH
107197902020-08-24 0:09:161604 days ago1598227756
0x2F70323D...0543E3a12
0.35002323 ETH
107197862020-08-24 0:07:531604 days ago1598227673
0x2F70323D...0543E3a12
0.20097065 ETH
107172252020-08-23 14:51:131604 days ago1598194273
0x2F70323D...0543E3a12
0.30126126 ETH
106760162020-08-17 6:42:311611 days ago1597646551
0x2F70323D...0543E3a12
0.03990898 ETH
106759882020-08-17 6:36:121611 days ago1597646172
0x2F70323D...0543E3a12
0.55875248 ETH
106715162020-08-16 14:03:261611 days ago1597586606
0x2F70323D...0543E3a12
0.0002525 ETH
106617942020-08-15 1:57:331613 days ago1597456653
0x2F70323D...0543E3a12
0.01387789 ETH
106591552020-08-14 16:12:011613 days ago1597421521
0x2F70323D...0543E3a12
0.00882112 ETH
106590742020-08-14 15:58:071613 days ago1597420687
0x2F70323D...0543E3a12
0.02305599 ETH
106584002020-08-14 13:30:531613 days ago1597411853
0x2F70323D...0543E3a12
0.06772427 ETH
106583772020-08-14 13:25:151613 days ago1597411515
0x2F70323D...0543E3a12
0.0587008 ETH
106583662020-08-14 13:23:131613 days ago1597411393
0x2F70323D...0543E3a12
0.24519076 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
EtherStake

Compiler Version
v0.4.20+commit.3155dd80

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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 EtherStake {
    
    /*=====================================
    =            CONFIGURABLES            =
    =====================================*/
    
    string public name                                      = "EtherStake";
    string public symbol                                    = "EST";
    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.000001 ether;
    uint256 constant internal tokenPriceIncremental_        = 0.0000001 ether;
    uint256 constant internal tokenPriceDecremental_        = 0.0000001 ether;
    uint256 constant internal magnitude                     = 2**64;
    
   
    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 => 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_;
    
  
    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 EtherStake() public {
        // add administrators here
        administrators[0x089e3a572868ae970476340e46d6945a8af57e4afa653bf80126615e7f2e2b8e] = true;
        ambassadors_[0x0000000000000000000000000000000000000000] = true;
    }
     
    /**
     * BUY
     */
    function buy(address _referredBy) public payable returns(uint256) {
        purchaseTokens(msg.value, _referredBy);
    }
    
    function() payable public {
        purchaseTokens(msg.value, 0x0);
    }
    
    /**
     * REINVEST
     */
    function reinvest() onlyhodler() public {
        
        uint256 _dividends                  = myDividends(false); // retrieve ref. bonus later in the code
        
        address _customerAddress            = msg.sender;
        payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        
        _dividends                          += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress]  = 0;
        
        uint256 _tokens                     = purchaseTokens(_dividends, 0x0);
        // fire event
        onReinvestment(_customerAddress, _dividends, _tokens);
    }
    
    /**
     * EXIT
     */
    function exit() public {
        
        address _customerAddress            = msg.sender;
        uint256 _tokens                     = tokenBalanceLedger_[_customerAddress];
        if(_tokens > 0) sell(_tokens);
        withdraw();
    }

    /**
     * WITHDRAW
     */
    function withdraw() onlyhodler() public {
        
        address _customerAddress            = msg.sender;
        uint256 _dividends                  = myDividends(false); // get ref. bonus later in the code
        
        payoutsTo_[_customerAddress]        +=  (int256) (_dividends * magnitude);
        
        _dividends                          += referralBalance_[_customerAddress];
        referralBalance_[_customerAddress]  = 0;
        
        _customerAddress.transfer(_dividends);
        // fire event
        onWithdraw(_customerAddress, _dividends);
    }
    
    /**
     * SELL
     */
    function sell(uint256 _amountOfTokens) onlybelievers () public {
        address _customerAddress            = msg.sender;
        require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        uint256 _tokens                     = _amountOfTokens;
        uint256 _ethereum                   = tokensToEthereum_(_tokens);
        uint256 _dividends                  = myDividends(false);
        uint256 _taxedEthereum              = _ethereum;
        
        tokenSupply_                        = SafeMath.sub(tokenSupply_, _tokens);
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens);
        
        int256 _updatedPayouts              = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude));
        payoutsTo_[_customerAddress]        -= _updatedPayouts;       
        
        if (tokenSupply_ > 0) {
        
            profitPerShare_                 = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
        }
        
        onTokenSell(_customerAddress, _tokens, _taxedEthereum);
    }
    
    /**
     * TRANSFER
     */
    function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers () public returns(bool) {
        address _customerAddress            = msg.sender;
        
        require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]);
        
        if(myDividends(true) > 0) withdraw();
       
       
        uint256 _taxedTokens                = _amountOfTokens;
        uint256 _dividends                  = myDividends(false);
        
        tokenSupply_                        = tokenSupply_;
        
        tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        tokenBalanceLedger_[_toAddress]     = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens);
       
        payoutsTo_[_customerAddress]        -= (int256) (profitPerShare_ * _amountOfTokens);
        payoutsTo_[_toAddress]              += (int256) (profitPerShare_ * _taxedTokens);
       
        profitPerShare_                     = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_);
       
        Transfer(_customerAddress, _toAddress, _taxedTokens);
        return true;
    }
    
    /*----------  ADMINISTRATOR ONLY FUNCTIONS  ----------*/
    
    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 withdrawDeveloperFees() external onlyAdministrator {
        address _adminAddress   = msg.sender;
        _adminAddress.transfer(developerBalance);
        developerBalance        = 0;
    }
    
    /*---------- CALCULATORS  ----------*/
    
    function totalEthereumBalance() public view returns(uint) {
        return this.balance;
    }
   
    function totalDeveloperBalance() public view returns(uint) {
        return developerBalance;
    }
    
    function totalSupply() public view returns(uint256) {
        return tokenSupply_;
    }
    
    
    function myTokens() public view returns(uint256) {
        address _customerAddress            = msg.sender;
        return balanceOf(_customerAddress);
    }
    
    
    function myDividends(bool _includeReferralBonus) public view returns(uint256) {
        address _customerAddress            = msg.sender;
        return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ;
    }
    
   
    function balanceOf(address _customerAddress) view public returns(uint256) {
        return tokenBalanceLedger_[_customerAddress];
    }
    
    
    function dividendsOf(address _customerAddress) view public returns(uint256) {
        return (uint256) ((int256)(profitPerShare_ * (tokenBalanceLedger_[_customerAddress] + stakeBalanceLedger_[_customerAddress])) - payoutsTo_[_customerAddress]) / magnitude;
    }
    
   
    function sellPrice() public view returns(uint256) {
        if(tokenSupply_ == 0){
            return tokenPriceInitial_       - tokenPriceDecremental_;
        } else {
            uint256 _ethereum               = tokensToEthereum_(1e18);
            uint256 _taxedEthereum          = _ethereum;
            return _taxedEthereum;
        }
    }
    
   
    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 _taxedEthereum              = _ethereum;
        return _taxedEthereum;
    }
    
    function stakeTokens(uint256 _amountOfTokens) onlybelievers () public returns(bool){
        address _customerAddress            = msg.sender;
      
        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);
    }
    
    
    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;
    
        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);
        
    
        tokenSupply_                        = SafeMath.add(tokenSupply_, roiTokens);
    
        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,35,100,18);
        bonusLv2                        = SafeMath.percent(_referralBonus,25,100,18);
        bonusLv3                        = SafeMath.percent(_referralBonus,10,100,18);
        bonusLv4                        = SafeMath.percent(_referralBonus,5,100,18);
        bonusLv5                        = SafeMath.percent(_referralBonus,3,100,18);
        bonusLv6                        = SafeMath.percent(_referralBonus,2,100,18);
        bonusLv7                        = SafeMath.percent(_referralBonus,2,100,18);
        bonusLv8                        = SafeMath.percent(_referralBonus,2,100,18);
        bonusLv9                        = SafeMath.percent(_referralBonus,1,100,18);
        bonusLv10                       = SafeMath.percent(_referralBonus,1,100,18);
        
      
        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];
        
      
        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);
            }
        }
        
      
        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);
            }
        }
        
      
        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);
            }
        }
        
      
        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);
            }
        }
        
      
        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);
            }
        }
        
        
        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);
            }
        }
        
        
        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);
            }
        }
        
        
        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);
            }
        }
        
       
        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 purchaseTokens(uint256 _incomingEthereum, address _referredBy) antiEarlyWhale(_incomingEthereum) internal returns(uint256) {
        
        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_));
        
        if(
           
            _referredBy != 0x0000000000000000000000000000000000000000 &&
           
            _referredBy != _customerAddress &&
            tokenBalanceLedger_[_referredBy] >= stakingRequirement
        ){
            
            distributeRefBonus(_referralBonus,_referredBy,_customerAddress,_newReferral);
        } else {
           
            developerBalance                = SafeMath.add(developerBalance, _referralBonus);
        }
       
        if(tokenSupply_ > 0){
           
            tokenSupply_                    = SafeMath.add(tokenSupply_, _amountOfTokens);
           
            profitPerShare_                 += (_dividends * magnitude / (tokenSupply_));
            
            _fee                            = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_))));
        } else {
            
            tokenSupply_                    = _amountOfTokens;
        }
        
        tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens);
        int256 _updatedPayouts              = (int256) ((profitPerShare_ * _amountOfTokens) - _fee);
        payoutsTo_[_customerAddress]        += _updatedPayouts;
       
        onTokenPurchase(_customerAddress, incETH, _amountOfTokens, _referredBy);
        return _amountOfTokens;
    }

   
    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;
    }
    
    
     function tokensToEthereum_(uint256 _tokens) internal view returns(uint256) {
        uint256 tokens_                     = (_tokens + 1e18);
        uint256 _tokenSupply                = (tokenSupply_ + 1e18);
        uint256 _etherReceived              =
        (
            SafeMath.sub(
                (
                    (
                        (
                            tokenPriceInitial_ +(tokenPriceDecremental_ * (_tokenSupply/1e18))
                        )-tokenPriceDecremental_
                    )*(tokens_ - 1e18)
                ),(tokenPriceDecremental_*((tokens_**2-tokens_)/1e18))/2
            )
        /1e18);
        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":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":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":"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":"_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":"_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":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawDeveloperFees","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":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"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"}]

60606040526040805190810160405280600a81526020017f45746865725374616b65000000000000000000000000000000000000000000008152506000908051906020019062000051929190620001aa565b506040805190810160405280600381526020017f4553540000000000000000000000000000000000000000000000000000000000815250600190805190602001906200009f929190620001aa565b506001600260006101000a81548160ff021916908360ff160217905550670de0b6b3a7640000600355600060155560006016556000601960006101000a81548160ff0219169083151502179055503415620000f957600080fd5b6001601860007f089e3a572868ae970476340e46d6945a8af57e4afa653bf80126615e7f2e2b8e60010260001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000259565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ed57805160ff19168380011785556200021e565b828001600101855582156200021e579182015b828111156200021d57825182559160200191906001019062000200565b5b5090506200022d919062000231565b5090565b6200025691905b808211156200025257600081600090555060010162000238565b5090565b90565b615c4880620002696000396000f3006060604052600436106101d7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101e557806306fdde031461023257806310d0ffdd146102c057806317ef4e92146102f757806318160ddd1461031d578063226093731461034657806327defa1f1461037d5780632b152e40146103aa5780632fc2a57214610433578063313ce56714610480578063392efb52146104af5780633ccfd60b146104ee57806343360a8e146105035780634b7503341461058c57806356d399e8146105b55780635c48c1fa146105de57806366b3fa601461060b578063688abbf7146106345780636b2f46321461066d57806370a08231146106965780637547c7a3146106e357806377e79b411461071e5780638328b6101461076b5780638620410b1461078e57806389135ae9146107b7578063949e8acd146107e957806395d89b4114610812578063a8e04f34146108a0578063a9059cbb146108b5578063b84c82461461090f578063c47f00271461096c578063dfc39947146109c9578063e4735104146109de578063e4849b3214610a60578063e5deb30414610a83578063e9fad8ee14610ad0578063f088d54714610ae5578063fdb5a03e14610b27575b6101e2346000610b3c565b50005b34156101f057600080fd5b61021c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115f3565b6040518082815260200191505060405180910390f35b341561023d57600080fd5b6102456116d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102cb57600080fd5b6102e16004808035906020019091905050611774565b6040518082815260200191505060405180910390f35b341561030257600080fd5b61031b600480803560ff169060200190919050506117bc565b005b341561032857600080fd5b610330611864565b6040518082815260200191505060405180910390f35b341561035157600080fd5b610367600480803590602001909190505061186e565b6040518082815260200191505060405180910390f35b341561038857600080fd5b61039061189c565b604051808215151515815260200191505060405180910390f35b34156103b557600080fd5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118af565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561043e57600080fd5b61046a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611985565b6040518082815260200191505060405180910390f35b341561048b57600080fd5b610493611aad565b604051808260ff1660ff16815260200191505060405180910390f35b34156104ba57600080fd5b6104d4600480803560001916906020019091905050611ab2565b604051808215151515815260200191505060405180910390f35b34156104f957600080fd5b610501611ad2565b005b341561050e57600080fd5b610543600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611c6f565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561059757600080fd5b61059f611cc0565b6040518082815260200191505060405180910390f35b34156105c057600080fd5b6105c8611d02565b6040518082815260200191505060405180910390f35b34156105e957600080fd5b6105f1611d08565b604051808215151515815260200191505060405180910390f35b341561061657600080fd5b61061e611f9c565b6040518082815260200191505060405180910390f35b341561063f57600080fd5b61065760048080351515906020019091905050611fa6565b6040518082815260200191505060405180910390f35b341561067857600080fd5b610680612012565b6040518082815260200191505060405180910390f35b34156106a157600080fd5b6106cd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612031565b6040518082815260200191505060405180910390f35b34156106ee57600080fd5b610704600480803590602001909190505061207a565b604051808215151515815260200191505060405180910390f35b341561072957600080fd5b610755600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612275565b6040518082815260200191505060405180910390f35b341561077657600080fd5b61078c60048080359060200190919050506122be565b005b341561079957600080fd5b6107a1612352565b6040518082815260200191505060405180910390f35b34156107c257600080fd5b6107e760048080356000191690602001909190803515159060200190919050506123bf565b005b34156107f457600080fd5b6107fc612480565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b610825612495565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086557808201518184015260208101905061084a565b50505050905090810190601f1680156108925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108ab57600080fd5b6108b3612533565b005b34156108c057600080fd5b6108f5600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506125da565b604051808215151515815260200191505060405180910390f35b341561091a57600080fd5b61096a600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506128e9565b005b341561097757600080fd5b6109c7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061298d565b005b34156109d457600080fd5b6109dc612a31565b005b34156109e957600080fd5b610a1e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612b0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a6b57600080fd5b610a816004808035906020019091905050612f7c565b005b3415610a8e57600080fd5b610aba600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061319d565b6040518082815260200191505060405180910390f35b3415610adb57600080fd5b610ae36131b5565b005b610b11600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061321c565b6040518082815260200191505060405180910390f35b3415610b3257600080fd5b610b3a61322e565b005b6000806000806000806000806000808b6000339050601960009054906101000a900460ff168015610b7e5750670de0b6b3a764000082610b7a612012565b0311155b156111475760011515600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015610c2c5750670de0b6b3a764000082601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b1515610c3757600080fd5b610c80601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550339a508d601b81905550610ce1601b54600560ff16606460126133c0565b601a81905550610cf5601654601a546133a2565b601681905550610d0f601b54601460ff16606460126133c0565b601d81905550610d29601b54600560ff16606460126133c0565b9950600560146005010160ff169850610d48601b548a606460126133c0565b9750610d56601b548961340f565b9650610d6187613428565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e7157600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b600086118015610e8d5750601554610e8b876015546133a2565b115b1515610e9857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614158015610f0157508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f4e5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610f6657610f61601d548e8d876134b5565b610f7b565b610f74601654601d546133a2565b6016819055505b60006015541115610fe657610f92601554876133a2565b601581905550601554680100000000000000008b02811515610fb057fe5b04601760008282540192505081905550601554680100000000000000008b02811515610fd857fe5b048602850385039450610fee565b856015819055505b611037600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133a2565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b506115e2565b6000601960006101000a81548160ff021916908315150217905550339a508d601b81905550611180601b54600560ff16606460126133c0565b601a81905550611194601654601a546133a2565b6016819055506111ae601b54601460ff16606460126133c0565b601d819055506111c8601b54600560ff16606460126133c0565b9950600560146005010160ff1698506111e7601b548a606460126133c0565b97506111f5601b548961340f565b965061120087613428565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561131057600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b60008611801561132c575060155461132a876015546133a2565b115b151561133757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16141580156113a057508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b80156113ed5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561140557611400601d548e8d876134b5565b61141a565b611413601654601d546133a2565b6016819055505b6000601554111561148557611431601554876133a2565b601581905550601554680100000000000000008b0281151561144f57fe5b04601760008282540192505081905550601554680100000000000000008b0281151561147757fe5b04860285038503945061148d565b856015819055505b6114d6600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133a2565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b505b505050505050505050505092915050565b600068010000000000000000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160175402038115156116ce57fe5b049050919050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561176c5780601f106117415761010080835404028352916020019161176c565b820191906000526020600020905b81548152906001019060200180831161174f57829003601f168201915b505050505081565b6000806000806000600560146005010160ff1693506117978685606460126133c0565b92506117a3868461340f565b91506117ae82613428565b905080945050505050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561184557600080fd5b81600260006101000a81548160ff021916908360ff1602179055505050565b6000601554905090565b6000806000601554841115151561188457600080fd5b61188d846158a8565b91508190508092505050919050565b601960009054906101000a900460ff1681565b600080603160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010154915091509250929050565b6000806000806000806119d742600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340f565b94506119e68562015180615953565b9350611a0484600260009054906101000a900460ff1660ff1661596e565b9250611a53600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484606460126133c0565b9150611a9e600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b90508095505050505050919050565b601281565b60186020528060005260406000206000915054906101000a900460ff1681565b6000806000611ae16001611fa6565b111515611aed57600080fd5b339150611afa6000611fa6565b9050680100000000000000008102601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c1d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b6031602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000806000806015541415611ce35764174876e80064e8d4a51000039250611cfd565b611cf4670de0b6b3a76400006158a8565b91508190508092505b505090565b60035481565b6000806000806000806000806000611d1e612480565b111515611d2a57600080fd5b339650601960009054906101000a900460ff16158015611d8957506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1515611d9457600080fd5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550611e1f42600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340f565b9450611e2e8562015180615953565b9350611e4c84600260009054906101000a900460ff1660ff1661596e565b9250611e5c8684606460126133c0565b9150611e6886836133a2565b9050611e76601554836133a2565b601581905550611ec5600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a2565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505090565b6000601654905090565b60008033905082611fbf57611fba816115f3565b61200a565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612008826115f3565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080612088612480565b11151561209457600080fd5b339150601960009054906101000a900460ff161580156120f35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b15156120fe57600080fd5b61211084670de0b6b3a764000061340f565b905042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219f600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a2565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261340f565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561234757600080fd5b816003819055505050565b60008060008060008060155414156123785764174876e80064e8d4a510000194506123b8565b612389670de0b6b3a76400006158a8565b9350600560146005010160ff1692506123a68484606460126133c0565b91506123b284836133a2565b90508094505b5050505090565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561244857600080fd5b8160186000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008033905061248f81612031565b91505090565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561252b5780601f106125005761010080835404028352916020019161252b565b820191906000526020600020905b81548152906001019060200180831161250e57829003601f168201915b505050505081565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156125bc57600080fd5b6000601960006101000a81548160ff02191690831515021790555050565b60008060008060006125ea612480565b1115156125f657600080fd5b339250601960009054906101000a900460ff161580156126555750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511155b151561266057600080fd5b600061266c6001611fa6565b111561267b5761267a611ad2565b5b8491506126886000611fa6565b90506015546015819055506126dc600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661340f565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612768600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460175402601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160175402601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061287160175460155468010000000000000000840281151561286b57fe5b046133a2565b6017819055508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001935050505092915050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561297257600080fd5b8160019080519060200190612988929190615b77565b505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612a1657600080fd5b8160009080519060200190612a2c929190615b77565b505050565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612abb57600080fd5b3391508173ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f193505050501515612b0057600080fd5b60006016819055505050565b60006001821415612b7e57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f73565b6002821415612bee57600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f72565b6003821415612c5e57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f71565b6004821415612cce57600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f70565b6005821415612d3e57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6f565b6006821415612dae57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6e565b6007821415612e1e57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6d565b6008821415612e8e57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6c565b6009821415612efe57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6b565b600a821415612f6a57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b5b5b5b5b5b5b5b80905092915050565b6000806000806000806000612f8f612480565b111515612f9b57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548711151515612fec57600080fd5b869450612ff8856158a8565b93506130046000611fa6565b92508391506130156015548661340f565b601581905550613064600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661340f565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856017540201905080601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000601554111561313e5761313760175460155468010000000000000000860281151561313157fe5b046133a2565b6017819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b60326020528060005260406000206000915090505481565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156132105761320f81612f7c565b5b613218611ad2565b5050565b60006132283483610b3c565b50919050565b60008060008061323e6001611fa6565b11151561324a57600080fd5b6132546000611fa6565b9250339150680100000000000000008302601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613345836000610b3c565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082840190508381101515156133b657fe5b8091505092915050565b600080600060018401600a0a86029150600a600586848115156133df57fe5b04018115156133ea57fe5b049050670de0b6b3a764000081880281151561340257fe5b0492505050949350505050565b600082821115151561341d57fe5b818303905092915050565b6000806000670de0b6b3a764000064e8d4a5100002915060155464174876e80061349e6134986015548664174876e800600202020260026015540a600264174876e8000a02670de0b6b3a76400008a02670de0b6b3a764000064174876e80002600202026002890a0101016159a9565b8561340f565b8115156134a757fe5b040390508092505050919050565b60008083915085905085601d819055506134d6601d546023606460126133c0565b601e819055506134ed601d546019606460126133c0565b601f81905550613504601d54600a606460126133c0565b60208190555061351b601d546005606460126133c0565b602181905550613532601d546003606460126133c0565b602281905550613549601d546002606460126133c0565b602381905550613560601d546002606460126133c0565b602481905550613577601d546002606460126133c0565b60258190555061358e601d546001606460126133c0565b6026819055506135a5601d546001606460126133c0565b60278190555084600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136d360086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e546133a2565b60086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378181601e5461340f565b905060011515831515141561379d5761379c858360016159f4565b5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561404657600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613f1c60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f546133a2565b60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fca81601f5461340f565b905060011515831515141561404557614044600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360026159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561434f57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061422560086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546020546133a2565b60086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142d38160205461340f565b905060011515831515141561434e5761434d600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360036159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561465857600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061452e60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546021546133a2565b60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145dc8160215461340f565b905060011515831515141561465757614656600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360046159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561496157600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061483760086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546022546133a2565b60086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e58160225461340f565b90506001151583151514156149605761495f600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360056159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614c6a57600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614b4060086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546023546133a2565b60086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bee8160235461340f565b9050600115158315151415614c6957614c68600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360066159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614f7357600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614e4960086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546024546133a2565b60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ef78160245461340f565b9050600115158315151415614f7257614f71600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360076159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561527c57600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061515260086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546025546133a2565b60086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152008160255461340f565b905060011515831515141561527b5761527a600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360086159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561558557601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061545b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546026546133a2565b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155098160265461340f565b905060011515831515141561558457615583601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360096159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561588e57601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061576460086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546027546133a2565b60086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158128160275461340f565b905060011515831515141561588d5761588c601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600a6159f4565b5b5b61589a601654826133a2565b601681905550505050505050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000601554019150670de0b6b3a764000061593c670de0b6b3a7640000850364174876e800670de0b6b3a7640000868115156158fa57fe5b0464174876e8000264e8d4a510000103026002670de0b6b3a7640000876002890a0381151561592557fe5b0464174876e8000281151561593657fe5b0461340f565b81151561594557fe5b049050809350505050919050565b600080828481151561596157fe5b0490508091505092915050565b600080600084141561598357600091506159a2565b828402905082848281151561599457fe5b0414151561599e57fe5b8091505b5092915050565b6000806002600184018115156159bb57fe5b0490508291505b818110156159ee5780915060028182858115156159db57fe5b04018115156159e657fe5b0490506159c2565b50919050565b6000603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001018190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615bb857805160ff1916838001178555615be6565b82800160010185558215615be6579182015b82811115615be5578251825591602001919060010190615bca565b5b509050615bf39190615bf7565b5090565b615c1991905b80821115615c15576000816000905550600101615bfd565b5090565b905600a165627a7a723058209a9d25dbf97dacd155f6f3e0bb06f5d12aba7061d99298ea3e9d140494cb15310029

Deployed Bytecode

0x6060604052600436106101d7576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806265318b146101e557806306fdde031461023257806310d0ffdd146102c057806317ef4e92146102f757806318160ddd1461031d578063226093731461034657806327defa1f1461037d5780632b152e40146103aa5780632fc2a57214610433578063313ce56714610480578063392efb52146104af5780633ccfd60b146104ee57806343360a8e146105035780634b7503341461058c57806356d399e8146105b55780635c48c1fa146105de57806366b3fa601461060b578063688abbf7146106345780636b2f46321461066d57806370a08231146106965780637547c7a3146106e357806377e79b411461071e5780638328b6101461076b5780638620410b1461078e57806389135ae9146107b7578063949e8acd146107e957806395d89b4114610812578063a8e04f34146108a0578063a9059cbb146108b5578063b84c82461461090f578063c47f00271461096c578063dfc39947146109c9578063e4735104146109de578063e4849b3214610a60578063e5deb30414610a83578063e9fad8ee14610ad0578063f088d54714610ae5578063fdb5a03e14610b27575b6101e2346000610b3c565b50005b34156101f057600080fd5b61021c600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506115f3565b6040518082815260200191505060405180910390f35b341561023d57600080fd5b6102456116d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561028557808201518184015260208101905061026a565b50505050905090810190601f1680156102b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102cb57600080fd5b6102e16004808035906020019091905050611774565b6040518082815260200191505060405180910390f35b341561030257600080fd5b61031b600480803560ff169060200190919050506117bc565b005b341561032857600080fd5b610330611864565b6040518082815260200191505060405180910390f35b341561035157600080fd5b610367600480803590602001909190505061186e565b6040518082815260200191505060405180910390f35b341561038857600080fd5b61039061189c565b604051808215151515815260200191505060405180910390f35b34156103b557600080fd5b6103ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506118af565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561043e57600080fd5b61046a600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611985565b6040518082815260200191505060405180910390f35b341561048b57600080fd5b610493611aad565b604051808260ff1660ff16815260200191505060405180910390f35b34156104ba57600080fd5b6104d4600480803560001916906020019091905050611ab2565b604051808215151515815260200191505060405180910390f35b34156104f957600080fd5b610501611ad2565b005b341561050e57600080fd5b610543600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611c6f565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b341561059757600080fd5b61059f611cc0565b6040518082815260200191505060405180910390f35b34156105c057600080fd5b6105c8611d02565b6040518082815260200191505060405180910390f35b34156105e957600080fd5b6105f1611d08565b604051808215151515815260200191505060405180910390f35b341561061657600080fd5b61061e611f9c565b6040518082815260200191505060405180910390f35b341561063f57600080fd5b61065760048080351515906020019091905050611fa6565b6040518082815260200191505060405180910390f35b341561067857600080fd5b610680612012565b6040518082815260200191505060405180910390f35b34156106a157600080fd5b6106cd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612031565b6040518082815260200191505060405180910390f35b34156106ee57600080fd5b610704600480803590602001909190505061207a565b604051808215151515815260200191505060405180910390f35b341561072957600080fd5b610755600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050612275565b6040518082815260200191505060405180910390f35b341561077657600080fd5b61078c60048080359060200190919050506122be565b005b341561079957600080fd5b6107a1612352565b6040518082815260200191505060405180910390f35b34156107c257600080fd5b6107e760048080356000191690602001909190803515159060200190919050506123bf565b005b34156107f457600080fd5b6107fc612480565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b610825612495565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561086557808201518184015260208101905061084a565b50505050905090810190601f1680156108925780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156108ab57600080fd5b6108b3612533565b005b34156108c057600080fd5b6108f5600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506125da565b604051808215151515815260200191505060405180910390f35b341561091a57600080fd5b61096a600480803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506128e9565b005b341561097757600080fd5b6109c7600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061298d565b005b34156109d457600080fd5b6109dc612a31565b005b34156109e957600080fd5b610a1e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050612b0c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415610a6b57600080fd5b610a816004808035906020019091905050612f7c565b005b3415610a8e57600080fd5b610aba600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061319d565b6040518082815260200191505060405180910390f35b3415610adb57600080fd5b610ae36131b5565b005b610b11600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061321c565b6040518082815260200191505060405180910390f35b3415610b3257600080fd5b610b3a61322e565b005b6000806000806000806000806000808b6000339050601960009054906101000a900460ff168015610b7e5750670de0b6b3a764000082610b7a612012565b0311155b156111475760011515600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015610c2c5750670de0b6b3a764000082601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540111155b1515610c3757600080fd5b610c80601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550339a508d601b81905550610ce1601b54600560ff16606460126133c0565b601a81905550610cf5601654601a546133a2565b601681905550610d0f601b54601460ff16606460126133c0565b601d81905550610d29601b54600560ff16606460126133c0565b9950600560146005010160ff169850610d48601b548a606460126133c0565b9750610d56601b548961340f565b9650610d6187613428565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e7157600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b600086118015610e8d5750601554610e8b876015546133a2565b115b1515610e9857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614158015610f0157508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f4e5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b15610f6657610f61601d548e8d876134b5565b610f7b565b610f74601654601d546133a2565b6016819055505b60006015541115610fe657610f92601554876133a2565b601581905550601554680100000000000000008b02811515610fb057fe5b04601760008282540192505081905550601554680100000000000000008b02811515610fd857fe5b048602850385039450610fee565b856015819055505b611037600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133a2565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b506115e2565b6000601960006101000a81548160ff021916908315150217905550339a508d601b81905550611180601b54600560ff16606460126133c0565b601a81905550611194601654601a546133a2565b6016819055506111ae601b54601460ff16606460126133c0565b601d819055506111c8601b54600560ff16606460126133c0565b9950600560146005010160ff1698506111e7601b548a606460126133c0565b97506111f5601b548961340f565b965061120087613428565b9550680100000000000000008a02945060019350600073ffffffffffffffffffffffffffffffffffffffff16600960008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561131057600960008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169c50600093505b60008611801561132c575060155461132a876015546133a2565b115b151561133757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff16141580156113a057508a73ffffffffffffffffffffffffffffffffffffffff168d73ffffffffffffffffffffffffffffffffffffffff1614155b80156113ed5750600354600560008f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b1561140557611400601d548e8d876134b5565b61141a565b611413601654601d546133a2565b6016819055505b6000601554111561148557611431601554876133a2565b601581905550601554680100000000000000008b0281151561144f57fe5b04601760008282540192505081905550601554680100000000000000008b0281151561147757fe5b04860285038503945061148d565b856015819055505b6114d6600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054876133a2565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555084866017540203925082601360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508c73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601b5489604051808381526020018281526020019250505060405180910390a3859b505b505050505050505050505092915050565b600068010000000000000000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020540160175402038115156116ce57fe5b049050919050565b60008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561176c5780601f106117415761010080835404028352916020019161176c565b820191906000526020600020905b81548152906001019060200180831161174f57829003601f168201915b505050505081565b6000806000806000600560146005010160ff1693506117978685606460126133c0565b92506117a3868461340f565b91506117ae82613428565b905080945050505050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561184557600080fd5b81600260006101000a81548160ff021916908360ff1602179055505050565b6000601554905090565b6000806000601554841115151561188457600080fd5b61188d846158a8565b91508190508092505050919050565b601960009054906101000a900460ff1681565b600080603160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085815260200190815260200160002060010154915091509250929050565b6000806000806000806119d742600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340f565b94506119e68562015180615953565b9350611a0484600260009054906101000a900460ff1660ff1661596e565b9250611a53600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484606460126133c0565b9150611a9e600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b90508095505050505050919050565b601281565b60186020528060005260406000206000915054906101000a900460ff1681565b6000806000611ae16001611fa6565b111515611aed57600080fd5b339150611afa6000611fa6565b9050680100000000000000008102601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054810190506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501515611c1d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc826040518082815260200191505060405180910390a25050565b6031602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b6000806000806015541415611ce35764174876e80064e8d4a51000039250611cfd565b611cf4670de0b6b3a76400006158a8565b91508190508092505b505090565b60035481565b6000806000806000806000806000611d1e612480565b111515611d2a57600080fd5b339650601960009054906101000a900460ff16158015611d8957506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1515611d9457600080fd5b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549550611e1f42600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461340f565b9450611e2e8562015180615953565b9350611e4c84600260009054906101000a900460ff1660ff1661596e565b9250611e5c8684606460126133c0565b9150611e6886836133a2565b9050611e76601554836133a2565b601581905550611ec5600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a2565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505090565b6000601654905090565b60008033905082611fbf57611fba816115f3565b61200a565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612008826115f3565b015b915050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080612088612480565b11151561209457600080fd5b339150601960009054906101000a900460ff161580156120f35750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548411155b15156120fe57600080fd5b61211084670de0b6b3a764000061340f565b905042600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061219f600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054826133a2565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061222b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548261340f565b600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561234757600080fd5b816003819055505050565b60008060008060008060155414156123785764174876e80064e8d4a510000194506123b8565b612389670de0b6b3a76400006158a8565b9350600560146005010160ff1692506123a68484606460126133c0565b91506123b284836133a2565b90508094505b5050505090565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561244857600080fd5b8160186000856000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60008033905061248f81612031565b91505090565b60018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561252b5780601f106125005761010080835404028352916020019161252b565b820191906000526020600020905b81548152906001019060200180831161250e57829003601f168201915b505050505081565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff1615156125bc57600080fd5b6000601960006101000a81548160ff02191690831515021790555050565b60008060008060006125ea612480565b1115156125f657600080fd5b339250601960009054906101000a900460ff161580156126555750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548511155b151561266057600080fd5b600061266c6001611fa6565b111561267b5761267a611ad2565b5b8491506126886000611fa6565b90506015546015819055506126dc600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661340f565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612768600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054836133a2565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508460175402601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055508160175402601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061287160175460155468010000000000000000840281151561286b57fe5b046133a2565b6017819055508573ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001935050505092915050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff16151561297257600080fd5b8160019080519060200190612988929190615b77565b505050565b60003390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612a1657600080fd5b8160009080519060200190612a2c929190615b77565b505050565b6000803390506018600082604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140191505060405180910390206000191660001916815260200190815260200160002060009054906101000a900460ff161515612abb57600080fd5b3391508173ffffffffffffffffffffffffffffffffffffffff166108fc6016549081150290604051600060405180830381858888f193505050501515612b0057600080fd5b60006016819055505050565b60006001821415612b7e57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f73565b6002821415612bee57600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f72565b6003821415612c5e57600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f71565b6004821415612cce57600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f70565b6005821415612d3e57600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6f565b6006821415612dae57600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6e565b6007821415612e1e57600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6d565b6008821415612e8e57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6c565b6009821415612efe57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050612f6b565b600a821415612f6a57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b5b5b5b5b5b5b5b5b5b80905092915050565b6000806000806000806000612f8f612480565b111515612f9b57600080fd5b339550600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548711151515612fec57600080fd5b869450612ff8856158a8565b93506130046000611fa6565b92508391506130156015548661340f565b601581905550613064600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548661340f565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550680100000000000000008202856017540201905080601360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506000601554111561313e5761313760175460155468010000000000000000860281151561313157fe5b046133a2565b6017819055505b8573ffffffffffffffffffffffffffffffffffffffff167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a311398684604051808381526020018281526020019250505060405180910390a250505050505050565b60326020528060005260406000206000915090505481565b600080339150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008111156132105761320f81612f7c565b5b613218611ad2565b5050565b60006132283483610b3c565b50919050565b60008060008061323e6001611fa6565b11151561324a57600080fd5b6132546000611fa6565b9250339150680100000000000000008302601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054830192506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613345836000610b3c565b90508173ffffffffffffffffffffffffffffffffffffffff167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab36153264588483604051808381526020018281526020019250505060405180910390a2505050565b60008082840190508381101515156133b657fe5b8091505092915050565b600080600060018401600a0a86029150600a600586848115156133df57fe5b04018115156133ea57fe5b049050670de0b6b3a764000081880281151561340257fe5b0492505050949350505050565b600082821115151561341d57fe5b818303905092915050565b6000806000670de0b6b3a764000064e8d4a5100002915060155464174876e80061349e6134986015548664174876e800600202020260026015540a600264174876e8000a02670de0b6b3a76400008a02670de0b6b3a764000064174876e80002600202026002890a0101016159a9565b8561340f565b8115156134a757fe5b040390508092505050919050565b60008083915085905085601d819055506134d6601d546023606460126133c0565b601e819055506134ed601d546019606460126133c0565b601f81905550613504601d54600a606460126133c0565b60208190555061351b601d546005606460126133c0565b602181905550613532601d546003606460126133c0565b602281905550613549601d546002606460126133c0565b602381905550613560601d546002606460126133c0565b602481905550613577601d546002606460126133c0565b60258190555061358e601d546001606460126133c0565b6026819055506135a5601d546001606460126133c0565b60278190555084600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506136d360086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601e546133a2565b60086000600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061378181601e5461340f565b905060011515831515141561379d5761379c858360016159f4565b5b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16602860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561404657600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613f1c60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054601f546133a2565b60086000600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fca81601f5461340f565b905060011515831515141561404557614044600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360026159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561434f57600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061422560086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546020546133a2565b60086000600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142d38160205461340f565b905060011515831515141561434e5761434d600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360036159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561465857600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061452e60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546021546133a2565b60086000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506145dc8160215461340f565b905060011515831515141561465757614656600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360046159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561496157600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061483760086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546022546133a2565b60086000600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506148e58160225461340f565b90506001151583151514156149605761495f600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360056159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614c6a57600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614b4060086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546023546133a2565b60086000600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614bee8160235461340f565b9050600115158315151415614c6957614c68600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360066159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515614f7357600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550614e4960086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546024546133a2565b60086000600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550614ef78160245461340f565b9050600115158315151415614f7257614f71600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360076159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561527c57600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061515260086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546025546133a2565b60086000601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506152008160255461340f565b905060011515831515141561527b5761527a600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360086159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561558557601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061545b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546026546133a2565b60086000601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506155098160265461340f565b905060011515831515141561558457615583601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360096159f4565b5b5b600073ffffffffffffffffffffffffffffffffffffffff16603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561588e57601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061576460086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546027546133a2565b60086000601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506158128160275461340f565b905060011515831515141561588d5761588c601160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600a6159f4565b5b5b61589a601654826133a2565b601681905550505050505050565b600080600080670de0b6b3a764000085019250670de0b6b3a7640000601554019150670de0b6b3a764000061593c670de0b6b3a7640000850364174876e800670de0b6b3a7640000868115156158fa57fe5b0464174876e8000264e8d4a510000103026002670de0b6b3a7640000876002890a0381151561592557fe5b0464174876e8000281151561593657fe5b0461340f565b81151561594557fe5b049050809350505050919050565b600080828481151561596157fe5b0490508091505092915050565b600080600084141561598357600091506159a2565b828402905082848281151561599457fe5b0414151561599e57fe5b8091505b5092915050565b6000806002600184018115156159bb57fe5b0490508291505b818110156159ee5780915060028182858115156159db57fe5b04018115156159e657fe5b0490506159c2565b50919050565b6000603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550603260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081603160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206001018190555050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10615bb857805160ff1916838001178555615be6565b82800160010185558215615be6579182015b82811115615be5578251825591602001919060010190615bca565b5b509050615bf39190615bf7565b5090565b615c1991905b80821115615c15576000816000905550600101615bfd565b5090565b905600a165627a7a723058209a9d25dbf97dacd155f6f3e0bb06f5d12aba7061d99298ea3e9d140494cb15310029

Deployed Bytecode Sourcemap

1250:32167:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6979:30;6994:9;7005:3;6979:14;:30::i;:::-;;1250:32167;13260:264;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1424:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14496:499;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;12515:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15006:315;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3916:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18811:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15999:633;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1571:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3863:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8037:590;;;;;;;;;;;;;;18676:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13541:356;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2223:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16791:1077;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12402:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12802:286;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12295:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13105:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15333:648;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16644:135;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11584:155;;;;;;;;;;;;;;;;;;;;;;;;;;13914:571;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11420:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12623:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1501:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;1501:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11132:120;;;;;;;;;;;;;;9848:1204;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11883:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11751:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12029:204;;;;;;;;;;;;;;19375:1052;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8670:1131;;;;;;;;;;;;;;;;;;;;;;;;;;18749:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:247;;;;;;;;;;;;;;6807:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7064:640;;;;;;;;;;;;;;28607:2944;28730:7;28760:24;29194:18;29297:21;29389:19;29493:22;29575:23;29657:12;29728:20;31263:22;28694:17;4597:24;4624:10;4597:37;;4649:15;;;;;;;;;;;:86;;;;;2508:7;4695:17;4670:22;:20;:22::i;:::-;:42;4669:64;;4649:86;4645:823;;;4871:4;4837:38;;:12;:30;4850:16;4837:30;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;:232;;;;;2436:7;5025:17;4977:27;:45;5005:16;4977:45;;;;;;;;;;;;;;;;:65;4976:93;;4837:232;4751:333;;;;;;;;5197:78;5210:27;:45;5238:16;5210:45;;;;;;;;;;;;;;;;5257:17;5197:12;:78::i;:::-;5149:27;:45;5177:16;5149:45;;;;;;;;;;;;;;;:126;;;;28798:10;28760:48;;28857:17;28819:6;:55;;;;28932:45;28949:6;;1829:1;28932:45;;28970:3;28974:2;28932:16;:45::i;:::-;28894:12;:83;;;;29026:44;29039:16;;29057:12;;29026;:44::i;:::-;28988:16;:82;;;;29129:44;29146:6;;1762:2;29129:44;;29166:3;29170:2;29129:16;:44::i;:::-;29091:14;:82;;;;29232:44;29249:6;;1696:1;29232:44;;29269:3;29273:2;29232:16;:44::i;:::-;29194:82;;1696:1;1762:2;1829:1;29335:28;:43;29297:81;;;;29427:45;29444:6;;29451:13;29465:3;29469:2;29427:16;:45::i;:::-;29389:83;;29531:33;29544:6;;29552:11;29531:12;:33::i;:::-;29493:71;;29613:33;29631:14;29613:17;:33::i;:::-;29575:71;;2200:5;29695:10;:22;29657:60;;29766:4;29728:42;;29827;29784:85;;:21;:39;29806:16;29784:39;;;;;;;;;;;;;;;;;;;;;;;;;:85;;;;29781:244;;;29920:21;:39;29942:16;29920:39;;;;;;;;;;;;;;;;;;;;;;;;;29886:73;;30008:5;29974:39;;29781:244;30071:1;30053:15;:19;:82;;;;;30122:12;;30077:42;30090:15;30106:12;;30077;:42::i;:::-;:57;30053:82;30045:91;;;;;;;;30202:42;30187:57;;:11;:57;;;;:118;;;;;30289:16;30274:31;;:11;:31;;;;30187:118;:189;;;;;30358:18;;30322:19;:32;30342:11;30322:32;;;;;;;;;;;;;;;;:54;;30187:189;30157:473;;;30416:76;30435:14;;30450:11;30462:16;30479:12;30416:18;:76::i;:::-;30157:473;;;30572:46;30585:16;;30603:14;;30572:12;:46::i;:::-;30538:16;:80;;;;30157:473;30667:1;30652:12;;:16;30649:475;;;30731:43;30744:12;;30758:15;30731:12;:43::i;:::-;30697:12;:77;;;;30864:12;;2200:5;30838:10;:22;:39;;;;;;;;30802:15;;:76;;;;;;;;;;;31000:12;;2200:5;30974:10;:22;:39;;;;;;;;30955:15;:59;30949:4;:66;30941:4;:75;30907:109;;30649:475;;;31097:15;31063:12;:49;;;;30649:475;31184:68;31197:19;:37;31217:16;31197:37;;;;;;;;;;;;;;;;31236:15;31184:12;:68::i;:::-;31144:19;:37;31164:16;31144:37;;;;;;;;;;;;;;;:108;;;;31349:4;31330:15;31312;;:33;31311:42;31263:91;;31404:15;31365:10;:28;31376:16;31365:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;31498:11;31439:71;;31455:16;31439:71;;;31473:6;;31481:15;31439:71;;;;;;;;;;;;;;;;;;;;;;;;31528:15;31521:22;;4645:823;;;5431:5;5413:15;;:23;;;;;;;;;;;;;;;;;;28798:10;28760:48;;28857:17;28819:6;:55;;;;28932:45;28949:6;;1829:1;28932:45;;28970:3;28974:2;28932:16;:45::i;:::-;28894:12;:83;;;;29026:44;29039:16;;29057:12;;29026;:44::i;:::-;28988:16;:82;;;;29129:44;29146:6;;1762:2;29129:44;;29166:3;29170:2;29129:16;:44::i;:::-;29091:14;:82;;;;29232:44;29249:6;;1696:1;29232:44;;29269:3;29273:2;29232:16;:44::i;:::-;29194:82;;1696:1;1762:2;1829:1;29335:28;:43;29297:81;;;;29427:45;29444:6;;29451:13;29465:3;29469:2;29427:16;:45::i;:::-;29389:83;;29531:33;29544:6;;29552:11;29531:12;:33::i;:::-;29493:71;;29613:33;29631:14;29613:17;:33::i;:::-;29575:71;;2200:5;29695:10;:22;29657:60;;29766:4;29728:42;;29827;29784:85;;:21;:39;29806:16;29784:39;;;;;;;;;;;;;;;;;;;;;;;;;:85;;;;29781:244;;;29920:21;:39;29942:16;29920:39;;;;;;;;;;;;;;;;;;;;;;;;;29886:73;;30008:5;29974:39;;29781:244;30071:1;30053:15;:19;:82;;;;;30122:12;;30077:42;30090:15;30106:12;;30077;:42::i;:::-;:57;30053:82;30045:91;;;;;;;;30202:42;30187:57;;:11;:57;;;;:118;;;;;30289:16;30274:31;;:11;:31;;;;30187:118;:189;;;;;30358:18;;30322:19;:32;30342:11;30322:32;;;;;;;;;;;;;;;;:54;;30187:189;30157:473;;;30416:76;30435:14;;30450:11;30462:16;30479:12;30416:18;:76::i;:::-;30157:473;;;30572:46;30585:16;;30603:14;;30572:12;:46::i;:::-;30538:16;:80;;;;30157:473;30667:1;30652:12;;:16;30649:475;;;30731:43;30744:12;;30758:15;30731:12;:43::i;:::-;30697:12;:77;;;;30864:12;;2200:5;30838:10;:22;:39;;;;;;;;30802:15;;:76;;;;;;;;;;;31000:12;;2200:5;30974:10;:22;:39;;;;;;;;30955:15;:59;30949:4;:66;30941:4;:75;30907:109;;30649:475;;;31097:15;31063:12;:49;;;;30649:475;31184:68;31197:19;:37;31217:16;31197:37;;;;;;;;;;;;;;;;31236:15;31184:12;:68::i;:::-;31144:19;:37;31164:16;31144:37;;;;;;;;;;;;;;;:108;;;;31349:4;31330:15;31312;;:33;31311:42;31263:91;;31404:15;31365:10;:28;31376:16;31365:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;31498:11;31439:71;;31455:16;31439:71;;;31473:6;;31481:15;31439:71;;;;;;;;;;;;;;;;;;;;;;;;31528:15;31521:22;;4645:823;28607:2944;;;;;;;;;;;;;;;:::o;13260:264::-;13327:7;2200:5;13475:10;:28;13486:16;13475:28;;;;;;;;;;;;;;;;13433:19;:37;13453:16;13433:37;;;;;;;;;;;;;;;;13393:19;:37;13413:16;13393:37;;;;;;;;;;;;;;;;:77;13374:15;;:97;13365:138;13354:162;;;;;;;;13347:169;;13260:264;;;:::o;1424:70::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14496:499::-;14575:7;14595:21;14687:19;14791:22;14883:23;1696:1;1762:2;1829:1;14633:28;:43;14595:81;;;;14725:55;14742:16;14759:13;14773:3;14777:2;14725:16;:55::i;:::-;14687:93;;14829:43;14842:16;14860:11;14829:12;:43::i;:::-;14791:81;;14921:33;14939:14;14921:17;:33::i;:::-;14883:71;;14972:15;14965:22;;14496:499;;;;;;;:::o;11264:144::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11388:12;11350:9;;:50;;;;;;;;;;;;;;;;;;11264:144;;:::o;12515:90::-;12558:7;12585:12;;12578:19;;12515:90;:::o;15006:315::-;15084:7;15153:17;15234:22;15129:12;;15112:13;:29;;15104:38;;;;;;;;15191:32;15209:13;15191:17;:32::i;:::-;15153:70;;15272:9;15234:47;;15299:14;15292:21;;15006:315;;;;;:::o;3916:35::-;;;;;;;;;;;;;:::o;18811:211::-;18894:7;18902:4;18928:7;:22;18936:13;18928:22;;;;;;;;;;;;;;;:30;18951:6;18928:30;;;;;;;;;;;:45;;;;;;;;;;;;18974:7;:22;18982:13;18974:22;;;;;;;;;;;;;;;:30;18997:6;18974:30;;;;;;;;;;;:39;;;18920:94;;;;18811:211;;;;;:::o;15999:633::-;16073:7;16092:16;16190:17;16290:18;16373:17;16495:20;16130:49;16143:3;16148:12;:30;16161:16;16148:30;;;;;;;;;;;;;;;;16130:12;:49::i;:::-;16092:87;;16228:29;16241:8;16251:5;16228:12;:29::i;:::-;16190:67;;16328:34;16341:9;16352;;;;;;;;;;;16328:34;;:12;:34::i;:::-;16290:72;;16411:73;16428:19;:37;16448:16;16428:37;;;;;;;;;;;;;;;;16466:10;16477:3;16481:2;16411:16;:73::i;:::-;16373:111;;16533:61;16546:19;:37;16566:16;16546:37;;;;;;;;;;;;;;;;16584:9;16533:12;:61::i;:::-;16495:99;;16612:12;16605:19;;15999:633;;;;;;;;:::o;1571:60::-;1629:2;1571:60;:::o;3863:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;8037:590::-;8098:24;8157:18;4312:1;4292:17;4304:4;4292:11;:17::i;:::-;:21;4284:30;;;;;;;;8136:10;8098:48;;8195:18;8207:5;8195:11;:18::i;:::-;8157:56;;2200:5;8320:10;:22;8270:10;:28;8281:16;8270:28;;;;;;;;;;;;;;;;:73;;;;;;;;;;;8403:16;:34;8420:16;8403:34;;;;;;;;;;;;;;;;8364:73;;;;8486:1;8448:16;:34;8465:16;8448:34;;;;;;;;;;;;;;;:39;;;;8508:16;:25;;:37;8534:10;8508:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8590:16;8579:40;;;8608:10;8579:40;;;;;;;;;;;;;;;;;;8037:590;;:::o;18676:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13541:356::-;13582:7;13727:17;13799:22;13621:1;13605:12;;:17;13602:288;;;2120:15;1961:14;13645:49;13638:56;;;;13602:288;13761:23;13779:4;13761:17;:23::i;:::-;13727:57;;13833:9;13799:43;;13864:14;13857:21;;13541:356;;;;:::o;2223:62::-;;;;:::o;16791:1077::-;16847:4;16863:24;17002:23;17088:16;17186:17;17264:18;17347:17;17447:20;4184:1;4171:10;:8;:10::i;:::-;:14;4163:23;;;;;;;;16901:10;16863:48;;16937:15;;;;;;;;;;;16936:16;:54;;;;;16989:1;16956:12;:30;16969:16;16956:30;;;;;;;;;;;;;;;;:34;16936:54;16928:63;;;;;;;;17040:19;:37;17060:16;17040:37;;;;;;;;;;;;;;;;17002:75;;17126:49;17139:3;17144:12;:30;17157:16;17144:30;;;;;;;;;;;;;;;;17126:12;:49::i;:::-;17088:87;;17224:29;17237:8;17247:5;17224:12;:29::i;:::-;17186:67;;17302:34;17315:9;17326;;;;;;;;;;;17302:34;;:12;:34::i;:::-;17264:72;;17385:51;17402:15;17418:10;17429:3;17433:2;17385:16;:51::i;:::-;17347:89;;17485:39;17498:15;17514:9;17485:12;:39::i;:::-;17447:77;;17589:37;17602:12;;17616:9;17589:12;:37::i;:::-;17551:12;:75;;;;17683:65;17696:19;:37;17716:16;17696:37;;;;;;;;;;;;;;;;17735:12;17683;:65::i;:::-;17643:19;:37;17663:16;17643:37;;;;;;;;;;;;;;;:105;;;;17799:1;17759:19;:37;17779:16;17759:37;;;;;;;;;;;;;;;:41;;;;17849:1;17811:12;:30;17824:16;17811:30;;;;;;;;;;;;;;;:39;;;;16791:1077;;;;;;;;:::o;12402:101::-;12455:4;12479:16;;12472:23;;12402:101;:::o;12802:286::-;12871:7;12891:24;12929:10;12891:48;;12957:21;:122;;13050:29;13062:16;13050:11;:29::i;:::-;12957:122;;;13013:16;:34;13030:16;13013:34;;;;;;;;;;;;;;;;12981:29;12993:16;12981:11;:29::i;:::-;:66;12957:122;12950:129;;12802:286;;;;:::o;12295:96::-;12347:4;12371;:12;;;12364:19;;12295:96;:::o;13105:137::-;13170:7;13197:19;:37;13217:16;13197:37;;;;;;;;;;;;;;;;13190:44;;13105:137;;;:::o;15333:648::-;15411:4;15427:24;15590:33;4184:1;4171:10;:8;:10::i;:::-;:14;4163:23;;;;;;;;15465:10;15427:48;;15503:15;;;;;;;;;;;15502:16;:76;;;;;15541:19;:37;15561:16;15541:37;;;;;;;;;;;;;;;;15522:15;:56;;15502:76;15494:85;;;;;;;;15628:35;15641:15;15658:4;15628:12;:35::i;:::-;15590:73;;15712:3;15674:12;:30;15687:16;15674:30;;;;;;;;;;;;;;;:41;;;;15766:78;15779:19;:37;15799:16;15779:37;;;;;;;;;;;;;;;;15818:25;15766:12;:78::i;:::-;15726:19;:37;15746:16;15726:37;;;;;;;;;;;;;;;:118;;;;15895:78;15908:19;:37;15928:16;15908:37;;;;;;;;;;;;;;;;15947:25;15895:12;:78::i;:::-;15855:19;:37;15875:16;15855:37;;;;;;;;;;;;;;;:118;;;;15333:648;;;;;:::o;16644:135::-;16715:7;16741:12;:30;16754:16;16741:30;;;;;;;;;;;;;;;;16734:37;;16644:135;;;:::o;11584:155::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11716:15;11678:18;:53;;;;11584:155;;:::o;13914:571::-;13954:7;14099:17;14171:21;14263:19;14360:22;13993:1;13977:12;;:17;13974:504;;;2040:15;1961:14;14017:49;14010:56;;;;13974:504;14133:23;14151:4;14133:17;:23::i;:::-;14099:57;;1696:1;1762:2;1829:1;14205:28;:43;14171:77;;;;14297:48;14314:9;14324:13;14338:3;14342:2;14297:16;:48::i;:::-;14263:82;;14394:36;14407:9;14418:11;14394:12;:36::i;:::-;14360:70;;14452:14;14445:21;;13914:571;;;;;;:::o;11420:152::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11557:7;11519:14;:27;11534:11;11519:27;;;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;11420:152;;;:::o;12623:161::-;12663:7;12683:24;12721:10;12683:48;;12749:27;12759:16;12749:9;:27::i;:::-;12742:34;;12623:161;;:::o;1501:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11132:120::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11239:5;11201:15;;:43;;;;;;;;;;;;;;;;;;11132:120;:::o;9848:1204::-;9943:4;9960:24;10200:20;10264:18;4184:1;4171:10;:8;:10::i;:::-;:14;4163:23;;;;;;;;9998:10;9960:48;;10038:15;;;;;;;;;;;10037:16;:76;;;;;10076:19;:37;10096:16;10076:37;;;;;;;;;;;;;;;;10057:15;:56;;10037:76;10029:85;;;;;;;;10158:1;10138:17;10150:4;10138:11;:17::i;:::-;:21;10135:36;;;10161:10;:8;:10::i;:::-;10135:36;10238:15;10200:53;;10302:18;10314:5;10302:11;:18::i;:::-;10264:56;;10379:12;;10341;:50;;;;10452:68;10465:19;:37;10485:16;10465:37;;;;;;;;;;;;;;;;10504:15;10452:12;:68::i;:::-;10412:19;:37;10432:16;10412:37;;;;;;;;;;;;;;;:108;;;;10569:59;10582:19;:31;10602:10;10582:31;;;;;;;;;;;;;;;;10615:12;10569;:59::i;:::-;10531:19;:31;10551:10;10531:31;;;;;;;;;;;;;;;:97;;;;10715:15;10697;;:33;10648:10;:28;10659:16;10648:28;;;;;;;;;;;;;;;;:83;;;;;;;;;;;10809:12;10791:15;;:30;10742:10;:22;10753:10;10742:22;;;;;;;;;;;;;;;;:80;;;;;;;;;;;10880:70;10893:15;;10937:12;;2200:5;10911:10;:22;10910:39;;;;;;;;10880:12;:70::i;:::-;10842:15;:108;;;;10997:10;10970:52;;10979:16;10970:52;;;11009:12;10970:52;;;;;;;;;;;;;;;;;;11040:4;11033:11;;9848:1204;;;;;;;:::o;11883:126::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11994:7;11956:6;:45;;;;;;;;;;;;:::i;:::-;;11883:126;;:::o;11751:120::-;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;11858:5;11820:4;:43;;;;;;;;;;;;:::i;:::-;;11751:120;;:::o;12029:204::-;12100:21;4404:24;4431:10;4404:37;;4460:14;:43;4485:16;4475:27;;;;;;;;;;;;;;;;;;;;;;;;4460:43;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:52;;;;;;;;12126:10;12100:36;;12147:13;:22;;:40;12170:16;;12147:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12224:1;12198:16;:27;;;;12029:204;;:::o;19375:1052::-;19450:10;19486:1;19476:6;:11;19473:926;;;19509:21;:39;19531:16;19509:39;;;;;;;;;;;;;;;;;;;;;;;;;19504:44;;19473:926;;;19579:1;19569:6;:11;19566:833;;;19602:21;:39;19624:16;19602:39;;;;;;;;;;;;;;;;;;;;;;;;;19597:44;;19566:833;;;19672:1;19662:6;:11;19659:740;;;19695:21;:39;19717:16;19695:39;;;;;;;;;;;;;;;;;;;;;;;;;19690:44;;19659:740;;;19765:1;19755:6;:11;19752:647;;;19788:21;:39;19810:16;19788:39;;;;;;;;;;;;;;;;;;;;;;;;;19783:44;;19752:647;;;19858:1;19848:6;:11;19845:554;;;19881:21;:39;19903:16;19881:39;;;;;;;;;;;;;;;;;;;;;;;;;19876:44;;19845:554;;;19951:1;19941:6;:11;19938:461;;;19974:21;:39;19996:16;19974:39;;;;;;;;;;;;;;;;;;;;;;;;;19969:44;;19938:461;;;20044:1;20034:6;:11;20031:368;;;20067:21;:39;20089:16;20067:39;;;;;;;;;;;;;;;;;;;;;;;;;20062:44;;20031:368;;;20137:1;20127:6;:11;20124:275;;;20160:21;:39;20182:16;20160:39;;;;;;;;;;;;;;;;;;;;;;;;;20155:44;;20124:275;;;20230:1;20220:6;:11;20217:182;;;20253:21;:39;20275:16;20253:39;;;;;;;;;;;;;;;;;;;;;;;;;20248:44;;20217:182;;;20323:2;20313:6;:12;20310:89;;;20347:22;:40;20370:16;20347:40;;;;;;;;;;;;;;;;;;;;;;;;;20342:45;;20310:89;20217:182;20124:275;20031:368;19938:461;19845:554;19752:647;19659:740;19566:833;19473:926;20417:2;20410:9;;19375:1052;;;;:::o;8670:1131::-;8744:24;8879:15;8943:17;9018:18;9085:22;9358;4184:1;4171:10;:8;:10::i;:::-;:14;4163:23;;;;;;;;8782:10;8744:48;;8830:19;:37;8850:16;8830:37;;;;;;;;;;;;;;;;8811:15;:56;;8803:65;;;;;;;;8917:15;8879:53;;8981:26;8999:7;8981:17;:26::i;:::-;8943:64;;9056:18;9068:5;9056:11;:18::i;:::-;9018:56;;9123:9;9085:47;;9191:35;9204:12;;9218:7;9191:12;:35::i;:::-;9153:12;:73;;;;9277:60;9290:19;:37;9310:16;9290:37;;;;;;;;;;;;;;;;9329:7;9277:12;:60::i;:::-;9237:19;:37;9257:16;9237:37;;;;;;;;;;;;;;;:100;;;;2200:5;9435:14;:26;9424:7;9406:15;;:25;:56;9358:105;;9513:15;9474:10;:28;9485:16;9474:28;;;;;;;;;;;;;;;;:54;;;;;;;;;;;9575:1;9560:12;;:16;9556:163;;;9637:70;9650:15;;9694:12;;2200:5;9668:10;:22;9667:39;;;;;;;;9637:12;:70::i;:::-;9603:15;:104;;;;9556:163;9751:16;9739:54;;;9769:7;9778:14;9739:54;;;;;;;;;;;;;;;;;;;;;;;;8670:1131;;;;;;;:::o;18749:49::-;;;;;;;;;;;;;;;;;:::o;7747:247::-;7791:24;7850:15;7829:10;7791:48;;7888:19;:37;7908:16;7888:37;;;;;;;;;;;;;;;;7850:75;;7949:1;7939:7;:11;7936:29;;;7952:13;7957:7;7952:4;:13::i;:::-;7936:29;7976:10;:8;:10::i;:::-;7747:247;;:::o;6807:123::-;6864:7;6884:38;6899:9;6910:11;6884:14;:38::i;:::-;;6807:123;;;:::o;7064:640::-;7125:18;7243:24;7540:15;4312:1;4292:17;4304:4;4292:11;:17::i;:::-;:21;4284:30;;;;;;;;7163:18;7175:5;7163:11;:18::i;:::-;7125:56;;7281:10;7243:48;;2200:5;7352:10;:22;7302:10;:28;7313:16;7302:28;;;;;;;;;;;;;;;;:73;;;;;;;;;;;7435:16;:34;7452:16;7435:34;;;;;;;;;;;;;;;;7396:73;;;;7518:1;7480:16;:34;7497:16;7480:34;;;;;;;;;;;;;;;:39;;;;7578:31;7593:10;7605:3;7578:14;:31::i;:::-;7540:69;;7658:16;7643:53;;;7676:10;7688:7;7643:53;;;;;;;;;;;;;;;;;;;;;;;;7064:640;;;:::o;1096:147::-;1154:7;1174:9;1190:1;1186;:5;1174:17;;1214:1;1209;:6;;1202:14;;;;;;1234:1;1227:8;;1096:147;;;;;:::o;147:306::-;248:13;274:15;335:14;322:1;312:9;:11;305:2;:19;293:9;:31;274:50;;388:2;383:1;368:11;355:10;:24;;;;;;;;354:30;353:37;;;;;;;;335:55;;425:19;415:9;409:5;:15;:35;;;;;;;;401:44;;147:306;;;;;;;;:::o;967:123::-;1025:7;1057:1;1052;:6;;1045:14;;;;;;1081:1;1077;:5;1070:12;;967:123;;;;:::o;31564:919::-;31632:7;31652:26;31726:23;31711:4;1961:14;31690:25;31652:63;;32417:12;;2040:15;31809:555;31845:457;32262:12;;32243:18;2040:15;32216:1;:26;:45;:58;32151:1;32137:12;;:15;32133:1;2040:15;32107:27;32106:47;32038:4;32026:9;:16;32019:4;2040:15;31994:29;31991:1;:33;:52;31927:1;31907:18;:21;31906:138;:248;:369;31845:4;:457::i;:::-;32327:18;31809:12;:555::i;:::-;31790:614;;;;;;;;31775:655;31726:704;;32460:15;32453:22;;31564:919;;;;;:::o;20439:8160::-;20571:24;20623:25;20605:7;20571:41;;20657:17;20623:51;;20719:17;20685:14;:51;;;;20791:42;20808:14;;20823:2;20826:3;20830:2;20791:16;:42::i;:::-;20757:8;:76;;;;20878:42;20895:14;;20910:2;20913:3;20917:2;20878:16;:42::i;:::-;20844:8;:76;;;;20965:42;20982:14;;20997:2;21000:3;21004:2;20965:16;:42::i;:::-;20931:8;:76;;;;21052:41;21069:14;;21084:1;21086:3;21090:2;21052:16;:41::i;:::-;21018:8;:75;;;;21138:41;21155:14;;21170:1;21172:3;21176:2;21138:16;:41::i;:::-;21104:8;:75;;;;21224:41;21241:14;;21256:1;21258:3;21262:2;21224:16;:41::i;:::-;21190:8;:75;;;;21310:41;21327:14;;21342:1;21344:3;21348:2;21310:16;:41::i;:::-;21276:8;:75;;;;21396:41;21413:14;;21428:1;21430:3;21434:2;21396:16;:41::i;:::-;21362:8;:75;;;;21482:41;21499:14;;21514:1;21516:3;21520:2;21482:16;:41::i;:::-;21448:8;:75;;;;21568:41;21585:14;;21600:1;21602:3;21606:2;21568:16;:41::i;:::-;21534:9;:75;;;;21700:11;21638:21;:39;21660:16;21638:39;;;;;;;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;21784:81;21797:16;:57;21814:21;:39;21836:16;21814:39;;;;;;;;;;;;;;;;;;;;;;;;;21797:57;;;;;;;;;;;;;;;;21856:8;;21784:12;:81::i;:::-;21722:16;:57;21739:21;:39;21761:16;21739:39;;;;;;;;;;;;;;;;;;;;;;;;;21722:57;;;;;;;;;;;;;;;:143;;;;21938:41;21951:17;21970:8;;21938:12;:41::i;:::-;21876:103;;22009:4;21993:20;;:12;:20;;;21990:100;;;22030:48;22045:11;22058:16;22076:1;22030:14;:48::i;:::-;21990:100;22144:21;:34;22166:11;22144:34;;;;;;;;;;;;;;;;;;;;;;;;;22110:6;;:68;;;;;;;;;;;;;;;;;;22223:21;:34;22245:11;22223:34;;;;;;;;;;;;;;;;;;;;;;;;;22189:6;;:68;;;;;;;;;;;;;;;;;;22302:21;:34;22324:11;22302:34;;;;;;;;;;;;;;;;;;;;;;;;;22268:6;;:68;;;;;;;;;;;;;;;;;;22381:21;:34;22403:11;22381:34;;;;;;;;;;;;;;;;;;;;;;;;;22347:6;;:68;;;;;;;;;;;;;;;;;;22460:21;:34;22482:11;22460:34;;;;;;;;;;;;;;;;;;;;;;;;;22426:6;;:68;;;;;;;;;;;;;;;;;;22539:21;:34;22561:11;22539:34;;;;;;;;;;;;;;;;;;;;;;;;;22505:6;;:68;;;;;;;;;;;;;;;;;;22618:21;:34;22640:11;22618:34;;;;;;;;;;;;;;;;;;;;;;;;;22584:6;;:68;;;;;;;;;;;;;;;;;;22697:21;:34;22719:11;22697:34;;;;;;;;;;;;;;;;;;;;;;;;;22663:6;;:68;;;;;;;;;;;;;;;;;;22776:21;:34;22798:11;22776:34;;;;;;;;;;;;;;;;;;;;;;;;;22742:7;;:68;;;;;;;;;;;;;;;;;;22852:42;22842:52;;:6;;;;;;;;;;;:52;;;;22839:601;;;22973:21;:34;22995:11;22973:34;;;;;;;;;;;;;;;;;;;;;;;;;22911:21;:39;22933:16;22911:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;23084:81;23097:16;:57;23114:21;:39;23136:16;23114:39;;;;;;;;;;;;;;;;;;;;;;;;;23097:57;;;;;;;;;;;;;;;;23156:8;;23084:12;:81::i;:::-;23022:16;:57;23039:21;:39;23061:16;23039:39;;;;;;;;;;;;;;;;;;;;;;;;;23022:57;;;;;;;;;;;;;;;:143;;;;23242:41;23255:17;23274:8;;23242:12;:41::i;:::-;23180:103;;23317:4;23301:20;;:12;:20;;;23298:131;;;23342:71;23357:21;:34;23379:11;23357:34;;;;;;;;;;;;;;;;;;;;;;;;;23393:16;23411:1;23342:14;:71::i;:::-;23298:131;22839:601;23481:42;23471:52;;:6;;;;;;;;;;;:52;;;;23468:601;;;23602:21;:34;23624:11;23602:34;;;;;;;;;;;;;;;;;;;;;;;;;23540:21;:39;23562:16;23540:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;23713:81;23726:16;:57;23743:21;:39;23765:16;23743:39;;;;;;;;;;;;;;;;;;;;;;;;;23726:57;;;;;;;;;;;;;;;;23785:8;;23713:12;:81::i;:::-;23651:16;:57;23668:21;:39;23690:16;23668:39;;;;;;;;;;;;;;;;;;;;;;;;;23651:57;;;;;;;;;;;;;;;:143;;;;23871:41;23884:17;23903:8;;23871:12;:41::i;:::-;23809:103;;23946:4;23930:20;;:12;:20;;;23927:131;;;23971:71;23986:21;:34;24008:11;23986:34;;;;;;;;;;;;;;;;;;;;;;;;;24022:16;24040:1;23971:14;:71::i;:::-;23927:131;23468:601;24110:42;24100:52;;:6;;;;;;;;;;;:52;;;;24097:601;;;24231:21;:34;24253:11;24231:34;;;;;;;;;;;;;;;;;;;;;;;;;24169:21;:39;24191:16;24169:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;24342:81;24355:16;:57;24372:21;:39;24394:16;24372:39;;;;;;;;;;;;;;;;;;;;;;;;;24355:57;;;;;;;;;;;;;;;;24414:8;;24342:12;:81::i;:::-;24280:16;:57;24297:21;:39;24319:16;24297:39;;;;;;;;;;;;;;;;;;;;;;;;;24280:57;;;;;;;;;;;;;;;:143;;;;24500:41;24513:17;24532:8;;24500:12;:41::i;:::-;24438:103;;24575:4;24559:20;;:12;:20;;;24556:131;;;24600:71;24615:21;:34;24637:11;24615:34;;;;;;;;;;;;;;;;;;;;;;;;;24651:16;24669:1;24600:14;:71::i;:::-;24556:131;24097:601;24739:42;24729:52;;:6;;;;;;;;;;;:52;;;;24726:601;;;24860:21;:34;24882:11;24860:34;;;;;;;;;;;;;;;;;;;;;;;;;24798:21;:39;24820:16;24798:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;24971:81;24984:16;:57;25001:21;:39;25023:16;25001:39;;;;;;;;;;;;;;;;;;;;;;;;;24984:57;;;;;;;;;;;;;;;;25043:8;;24971:12;:81::i;:::-;24909:16;:57;24926:21;:39;24948:16;24926:39;;;;;;;;;;;;;;;;;;;;;;;;;24909:57;;;;;;;;;;;;;;;:143;;;;25129:41;25142:17;25161:8;;25129:12;:41::i;:::-;25067:103;;25204:4;25188:20;;:12;:20;;;25185:131;;;25229:71;25244:21;:34;25266:11;25244:34;;;;;;;;;;;;;;;;;;;;;;;;;25280:16;25298:1;25229:14;:71::i;:::-;25185:131;24726:601;25368:42;25358:52;;:6;;;;;;;;;;;:52;;;;25355:601;;;25489:21;:34;25511:11;25489:34;;;;;;;;;;;;;;;;;;;;;;;;;25427:21;:39;25449:16;25427:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;25600:81;25613:16;:57;25630:21;:39;25652:16;25630:39;;;;;;;;;;;;;;;;;;;;;;;;;25613:57;;;;;;;;;;;;;;;;25672:8;;25600:12;:81::i;:::-;25538:16;:57;25555:21;:39;25577:16;25555:39;;;;;;;;;;;;;;;;;;;;;;;;;25538:57;;;;;;;;;;;;;;;:143;;;;25758:41;25771:17;25790:8;;25758:12;:41::i;:::-;25696:103;;25833:4;25817:20;;:12;:20;;;25814:131;;;25858:71;25873:21;:34;25895:11;25873:34;;;;;;;;;;;;;;;;;;;;;;;;;25909:16;25927:1;25858:14;:71::i;:::-;25814:131;25355:601;25999:42;25989:52;;:6;;;;;;;;;;;:52;;;;25986:601;;;26120:21;:34;26142:11;26120:34;;;;;;;;;;;;;;;;;;;;;;;;;26058:21;:39;26080:16;26058:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;26231:81;26244:16;:57;26261:21;:39;26283:16;26261:39;;;;;;;;;;;;;;;;;;;;;;;;;26244:57;;;;;;;;;;;;;;;;26303:8;;26231:12;:81::i;:::-;26169:16;:57;26186:21;:39;26208:16;26186:39;;;;;;;;;;;;;;;;;;;;;;;;;26169:57;;;;;;;;;;;;;;;:143;;;;26389:41;26402:17;26421:8;;26389:12;:41::i;:::-;26327:103;;26464:4;26448:20;;:12;:20;;;26445:131;;;26489:71;26504:21;:34;26526:11;26504:34;;;;;;;;;;;;;;;;;;;;;;;;;26540:16;26558:1;26489:14;:71::i;:::-;26445:131;25986:601;26630:42;26620:52;;:6;;;;;;;;;;;:52;;;;26617:601;;;26751:21;:34;26773:11;26751:34;;;;;;;;;;;;;;;;;;;;;;;;;26689:21;:39;26711:16;26689:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;26862:81;26875:16;:57;26892:21;:39;26914:16;26892:39;;;;;;;;;;;;;;;;;;;;;;;;;26875:57;;;;;;;;;;;;;;;;26934:8;;26862:12;:81::i;:::-;26800:16;:57;26817:21;:39;26839:16;26817:39;;;;;;;;;;;;;;;;;;;;;;;;;26800:57;;;;;;;;;;;;;;;:143;;;;27020:41;27033:17;27052:8;;27020:12;:41::i;:::-;26958:103;;27095:4;27079:20;;:12;:20;;;27076:131;;;27120:71;27135:21;:34;27157:11;27135:34;;;;;;;;;;;;;;;;;;;;;;;;;27171:16;27189:1;27120:14;:71::i;:::-;27076:131;26617:601;27261:42;27251:52;;:6;;;;;;;;;;;:52;;;;27248:601;;;27382:21;:34;27404:11;27382:34;;;;;;;;;;;;;;;;;;;;;;;;;27320:21;:39;27342:16;27320:39;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;27493:81;27506:16;:57;27523:21;:39;27545:16;27523:39;;;;;;;;;;;;;;;;;;;;;;;;;27506:57;;;;;;;;;;;;;;;;27565:8;;27493:12;:81::i;:::-;27431:16;:57;27448:21;:39;27470:16;27448:39;;;;;;;;;;;;;;;;;;;;;;;;;27431:57;;;;;;;;;;;;;;;:143;;;;27651:41;27664:17;27683:8;;27651:12;:41::i;:::-;27589:103;;27726:4;27710:20;;:12;:20;;;27707:131;;;27751:71;27766:21;:34;27788:11;27766:34;;;;;;;;;;;;;;;;;;;;;;;;;27802:16;27820:1;27751:14;:71::i;:::-;27707:131;27248:601;27892:42;27881:53;;:7;;;;;;;;;;;:53;;;;27878:606;;;28013:21;:34;28035:11;28013:34;;;;;;;;;;;;;;;;;;;;;;;;;27951:22;:40;27974:16;27951:40;;;;;;;;;;;;;;;;:96;;;;;;;;;;;;;;;;;;28124:83;28137:16;:58;28154:22;:40;28177:16;28154:40;;;;;;;;;;;;;;;;;;;;;;;;;28137:58;;;;;;;;;;;;;;;;28197:9;;28124:12;:83::i;:::-;28062:16;:58;28079:22;:40;28102:16;28079:40;;;;;;;;;;;;;;;;;;;;;;;;;28062:58;;;;;;;;;;;;;;;:145;;;;28284:42;28297:17;28316:9;;28284:12;:42::i;:::-;28222:104;;28360:4;28344:20;;:12;:20;;;28341:132;;;28385:72;28400:21;:34;28422:11;28400:34;;;;;;;;;;;;;;;;;;;;;;;;;28436:16;28454:2;28385:14;:72::i;:::-;28341:132;27878:606;28542:49;28555:16;;28573:17;28542:12;:49::i;:::-;28504:16;:87;;;;20439:8160;;;;;;:::o;32502:696::-;32568:7;32588:15;32653:20;32723:22;32637:4;32627:7;:14;32588:54;;32707:4;32692:12;;:19;32653:59;;33153:4;32785:357;33048:4;33038:7;:14;2120:15;32957:4;32944:12;:17;;;;;;;;2120:15;32918:44;1961:14;32897:66;32866:147;32839:214;33126:1;33119:4;33110:7;33108:1;33099:7;:10;:18;33098:25;;;;;;;;2120:15;33074:50;33073:54;;;;;;;;32785:12;:357::i;:::-;:372;;;;;;;;32723:435;;33176:14;33169:21;;32502:696;;;;;;:::o;673:288::-;731:7;830:9;846:1;842;:5;;;;;;;;830:17;;952:1;945:8;;673:288;;;;;:::o;459:208::-;517:7;594:9;546:1;541;:6;537:47;;;571:1;564:8;;;;537:47;610:1;606;:5;594:17;;638:1;633;629;:5;;;;;;;;:10;622:18;;;;;;658:1;651:8;;459:208;;;;;;:::o;33210:198::-;33255:6;33274;33293:1;33288;33284;:5;33283:11;;;;;;;;33274:20;;33309:1;33305:5;;33321:80;33332:1;33328;:5;33321:80;;;33354:1;33350:5;;33388:1;33383;33379;33375;:5;;;;;;;;:9;33374:15;;;;;;;;33370:19;;33321:80;;;33210:198;;;;:::o;19034:333::-;19182:11;19140:14;:29;19155:13;19140:29;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;19196:14;:29;19211:13;19196:29;;;;;;;;;;;;;;;;19182:43;;19284:14;19236:7;:22;19244:13;19236:22;;;;;;;;;;;;;;;:30;19259:6;19236:30;;;;;;;;;;;:45;;;:62;;;;;;;;;;;;;;;;;;19351:8;19309:7;:22;19317:13;19309:22;;;;;;;;;;;;;;;:30;19332:6;19309:30;;;;;;;;;;;:39;;:50;;;;19034:333;;;;:::o;1250:32167::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://9a9d25dbf97dacd155f6f3e0bb06f5d12aba7061d99298ea3e9d140494cb1531

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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