ERC-20
Overview
Max Total Supply
14,153.306186886062038309 XDM
Holders
146
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.094145837196087494 XDMValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
XcelDream
Compiler Version
v0.4.20+commit.3155dd80
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-06-05 */ pragma solidity ^0.4.20; /** * @title SafeMath * @dev Math operations with safety checks that throw on error */ library SafeMath { function percent(uint value,uint numerator, uint denominator, uint precision) internal pure returns(uint quotient) { uint _numerator = numerator * 10 ** (precision+1); uint _quotient = ((_numerator / denominator) + 5) / 10; return (value*_quotient/1000000000000000000); } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } contract XcelDream { /*===================================== = CONFIGURABLES = =====================================*/ string public name = "XcelDream"; string public symbol = "XDM"; uint8 constant public decimals = 18; uint8 constant internal dividendFee_ = 5; uint8 constant internal referralPer_ = 20; uint8 constant internal developerFee_ = 5; uint8 internal stakePer_ = 1; uint256 constant internal tokenPriceInitial_ = 0.0001 ether; uint256 constant internal tokenPriceIncremental_ = 0.000001 ether; uint256 constant internal tokenPriceDecremental_ = 0.0000014 ether; uint256 constant internal magnitude = 2**64; // Proof of stake (defaults at 1 token) uint256 public stakingRequirement = 1e18; // Ambassador program mapping(address => bool) internal ambassadors_; uint256 constant internal ambassadorMaxPurchase_ = 1 ether; uint256 constant internal ambassadorQuota_ = 1 ether; /*================================ = DATASETS = ================================*/ mapping(address => uint256) internal tokenBalanceLedger_; mapping(address => uint256) internal stakeBalanceLedger_; mapping(address => uint256) internal stakingTime_; mapping(address => uint256) internal referralBalance_; mapping(address => uint256) internal dividendBal; mapping(address => address) internal referralLevel1Address; mapping(address => address) internal referralLevel2Address; mapping(address => address) internal referralLevel3Address; mapping(address => address) internal referralLevel4Address; mapping(address => address) internal referralLevel5Address; mapping(address => address) internal referralLevel6Address; mapping(address => address) internal referralLevel7Address; mapping(address => address) internal referralLevel8Address; mapping(address => address) internal referralLevel9Address; mapping(address => address) internal referralLevel10Address; mapping(address => int256) internal payoutsTo_; mapping(address => uint256) internal ambassadorAccumulatedQuota_; uint256 internal tokenSupply_ = 0; uint256 internal developerBalance = 0; uint256 internal profitPerShare_; // administrator list (see above on what they can do) mapping(bytes32 => bool) public administrators; bool public onlyAmbassadors = false; /*================================= = MODIFIERS = =================================*/ // Only people with tokens modifier onlybelievers () { require(myTokens() > 0); _; } // Only people with profits modifier onlyhodler() { require(myDividends(true) > 0); _; } // Only admin modifier onlyAdministrator(){ address _customerAddress = msg.sender; require(administrators[keccak256(_customerAddress)]); _; } modifier antiEarlyWhale(uint256 _amountOfEthereum){ address _customerAddress = msg.sender; if( onlyAmbassadors && ((totalEthereumBalance() - _amountOfEthereum) <= ambassadorQuota_ )){ require( // is the customer in the ambassador list? ambassadors_[_customerAddress] == true && // does the customer purchase exceed the max ambassador quota? (ambassadorAccumulatedQuota_[_customerAddress] + _amountOfEthereum) <= ambassadorMaxPurchase_ ); // updated the accumulated quota ambassadorAccumulatedQuota_[_customerAddress] = SafeMath.add(ambassadorAccumulatedQuota_[_customerAddress], _amountOfEthereum); _; } else { // in case the ether count drops low, the ambassador phase won't reinitiate onlyAmbassadors = false; _; } } /*============================== = EVENTS = ==============================*/ event onTokenPurchase( address indexed customerAddress, uint256 incomingEthereum, uint256 tokensMinted, address indexed referredBy ); event onTokenSell( address indexed customerAddress, uint256 tokensBurned, uint256 ethereumEarned ); event onReinvestment( address indexed customerAddress, uint256 ethereumReinvested, uint256 tokensMinted ); event onWithdraw( address indexed customerAddress, uint256 ethereumWithdrawn ); event Transfer( address indexed from, address indexed to, uint256 tokens ); /*======================================= = PUBLIC FUNCTIONS = =======================================*/ /* * -- APPLICATION ENTRY POINTS -- */ function XcelDream() public { // add administrators here administrators[0x1c7e1ee4ebab752213b974d44db8e1663058edfc86410f1c3deb4e26b17d13d4] = true; administrators[0x3a4f2b5f51038ac3477927ddb4625adaa1cbecd63aeaeb90f3456c6549c3de5a] = true; ambassadors_[0x0000000000000000000000000000000000000000] = true; } /** * Converts all incoming Ethereum to tokens for the caller, and passes down the referral address (if any) */ function migrateEth() public payable returns(uint256) { return this.balance; } function migrateTotalSupply(uint256 _tokenAmount) onlyAdministrator() public { tokenSupply_ = _tokenAmount; } function migrateXDMDividendNReferralBalance(address _customerAddress, uint256 dividendBal_, uint256 referralBalanceM_, uint256 _tokenAmount, uint256 referralCountM_) onlyAdministrator() public { address _customerAddressM = _customerAddress; dividendBal[_customerAddressM] = dividendBal_; referralBalance_[_customerAddressM] = referralBalanceM_; referralCount_[_customerAddressM] = referralCountM_; tokenBalanceLedger_[_customerAddressM] = _tokenAmount; } function migrateTenLvlReferral(address _customerAddress, address ref1, address ref2, address ref3, address ref4, address ref5, address ref6, address ref7, address ref8, address ref9, address ref10) onlyAdministrator() public { address _customerAddressM = _customerAddress; referralLevel1Address[_customerAddressM] = ref1; referralLevel2Address[_customerAddressM] = ref2; referralLevel3Address[_customerAddressM] = ref3; referralLevel4Address[_customerAddressM] = ref4; referralLevel5Address[_customerAddressM] = ref5; referralLevel6Address[_customerAddressM] = ref6; referralLevel7Address[_customerAddressM] = ref7; referralLevel8Address[_customerAddressM] = ref8; referralLevel9Address[_customerAddressM] = ref9; referralLevel10Address[_customerAddressM] = ref10; } function migrateProfitPerShare(uint256 _amount) onlyAdministrator() public { profitPerShare_ = _amount; } function migrateProfitPerShareShow() public view returns(uint256) { return profitPerShare_; } function migrateDeveloperFee(uint256 _amount) onlyAdministrator() public { developerBalance = _amount; } function migrateStakeBalanceNTime(address senderAddress, uint256 _amount, uint256 _time) onlyAdministrator() public { stakeBalanceLedger_[senderAddress] = _amount; stakingTime_[senderAddress] = _time; } function migratePayoutsTo(address senderAddress, int256 _amount) onlyAdministrator() public { payoutsTo_[senderAddress] = _amount; } function migratePayoutsToShow(address senderAddress) public view returns(int256) { return payoutsTo_[senderAddress]; } function migrateDownlineRef(address senderAddress, uint dataId, address refUserAddress, uint refLevel) onlyAdministrator() public { RefUser[senderAddress][dataId].refUserAddress = refUserAddress; RefUser[senderAddress][dataId].refLevel = refLevel; } function buy(address _referredBy) public payable returns(uint256) { purchaseTokens(msg.value, _referredBy); } function() payable public { purchaseTokens(msg.value, 0x0); } /** * Converts all of caller's dividends to tokens. */ function reinvest() onlyhodler() public { // fetch dividends uint256 _dividends = myDividends(false); // retrieve ref. bonus later in the code // pay out the dividends virtually address _customerAddress = msg.sender; if(dividendBal[_customerAddress] > 0) { if(dividendBal[_customerAddress] > _dividends) { payoutsTo_[_customerAddress] += (int256) ((dividendBal[_customerAddress] - _dividends) * magnitude); } else { payoutsTo_[_customerAddress] += (int256) ((_dividends - dividendBal[_customerAddress]) * magnitude); } } else { payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); } // retrieve ref. bonus _dividends += referralBalance_[_customerAddress]; dividendBal[_customerAddress] = 0; referralBalance_[_customerAddress] = 0; // dispatch a buy order with the virtualized "withdrawn dividends" uint256 _tokens = purchaseTokens(_dividends, 0x0); // fire event onReinvestment(_customerAddress, _dividends, _tokens); } /** * Alias of sell() and withdraw(). */ function exit() public { // get token count for caller & sell them all address _customerAddress = msg.sender; uint256 _tokens = tokenBalanceLedger_[_customerAddress]; if(_tokens > 0) sell(_tokens); withdraw(); } /** * Withdraws all of the callers earnings. */ function withdraw() onlyhodler() public { // setup data address _customerAddress = msg.sender; uint256 _dividends = myDividends(false); // get ref. bonus later in the code // update dividend tracker if(dividendBal[_customerAddress] > 0) { if(dividendBal[_customerAddress] > _dividends) { payoutsTo_[_customerAddress] += (int256) ((dividendBal[_customerAddress] - _dividends) * magnitude); } else { payoutsTo_[_customerAddress] += (int256) ((_dividends - dividendBal[_customerAddress]) * magnitude); } } else { payoutsTo_[_customerAddress] += (int256) (_dividends * magnitude); } // add ref. bonus _dividends += referralBalance_[_customerAddress]; dividendBal[_customerAddress] = 0; referralBalance_[_customerAddress] = 0; // delivery service _customerAddress.transfer(_dividends); // fire event onWithdraw(_customerAddress, _dividends); } /** * Liquifies tokens to ethereum. */ function sell(uint256 _amountOfTokens) onlybelievers () public { address _customerAddress = msg.sender; require(_amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _tokens = _amountOfTokens; uint256 _ethereum = tokensToEthereum_(_tokens); uint256 _dividends = SafeMath.percent(_ethereum,dividendFee_,100,18); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); // burn the sold tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokens); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _tokens); // update dividends tracker int256 _updatedPayouts = (int256) (profitPerShare_ * _tokens + (_taxedEthereum * magnitude)); payoutsTo_[_customerAddress] -= _updatedPayouts; // dividing by zero is a bad idea if (tokenSupply_ > 0) { // update the amount of dividends per token profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_); } // fire event onTokenSell(_customerAddress, _tokens, _taxedEthereum); } /** * Transfer tokens from the caller to a new holder. */ function transfer(address _toAddress, uint256 _amountOfTokens) onlybelievers () public returns(bool) { address _customerAddress = msg.sender; // make sure we have the requested tokens require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]); // withdraw all outstanding dividends first if(myDividends(true) > 0) withdraw(); // liquify 10% of the tokens that are transfered // these are dispersed to shareholders uint256 _tokenFee = SafeMath.percent(_amountOfTokens,dividendFee_,100,18); uint256 _taxedTokens = SafeMath.sub(_amountOfTokens, _tokenFee); uint256 _dividends = tokensToEthereum_(_tokenFee); // burn the fee tokens tokenSupply_ = SafeMath.sub(tokenSupply_, _tokenFee); // exchange tokens tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokens); tokenBalanceLedger_[_toAddress] = SafeMath.add(tokenBalanceLedger_[_toAddress], _taxedTokens); // update dividend trackers payoutsTo_[_customerAddress] -= (int256) (profitPerShare_ * _amountOfTokens); payoutsTo_[_toAddress] += (int256) (profitPerShare_ * _taxedTokens); // disperse dividends among holders profitPerShare_ = SafeMath.add(profitPerShare_, (_dividends * magnitude) / tokenSupply_); // fire event Transfer(_customerAddress, _toAddress, _taxedTokens); return true; } /*---------- ADMINISTRATOR ONLY FUNCTIONS ----------*/ /** * administrator can manually disable the ambassador phase. */ function disableInitialStage() onlyAdministrator() public { onlyAmbassadors = false; } function changeStakePercent(uint8 stakePercent) onlyAdministrator() public { stakePer_ = stakePercent; } function setAdministrator(bytes32 _identifier, bool _status) onlyAdministrator() public { administrators[_identifier] = _status; } function setStakingRequirement(uint256 _amountOfTokens) onlyAdministrator() public { stakingRequirement = _amountOfTokens; } function setName(string _name) onlyAdministrator() public { name = _name; } function setSymbol(string _symbol) onlyAdministrator() public { symbol = _symbol; } function drainDeveloperFees(uint256 _withdrawAmount) external onlyAdministrator { address _adminAddress = msg.sender; require(developerBalance >= _withdrawAmount); _adminAddress.transfer(_withdrawAmount); developerBalance = SafeMath.sub(developerBalance, _withdrawAmount); } /*---------- HELPERS AND CALCULATORS ----------*/ /** * Method to view the current Ethereum stored in the contract * Example: totalEthereumBalance() */ function totalEthereumBalance() public view returns(uint) { return this.balance; } /** * Retrieve the total developer fee balance. */ function totalDeveloperBalance() public view returns(uint) { return developerBalance; } /** * Retrieve the total token supply. */ function totalSupply() public view returns(uint256) { return tokenSupply_; } /** * Retrieve the tokens owned by the caller. */ function myTokens() public view returns(uint256) { address _customerAddress = msg.sender; return balanceOf(_customerAddress); } /** * Retrieve the dividends owned by the caller. */ function myDividends(bool _includeReferralBonus) public view returns(uint256) { address _customerAddress = msg.sender; return _includeReferralBonus ? dividendsOf(_customerAddress) + referralBalance_[_customerAddress] : dividendsOf(_customerAddress) ; } /** * Retrieve the token balance of any single address. */ function balanceOf(address _customerAddress) view public returns(uint256) { return tokenBalanceLedger_[_customerAddress]; } /** * Retrieve the dividend balance of any single address. */ function dividendsOf(address _customerAddress) view public returns(uint256) { uint256 calculatedDividend = (uint256) ((int256)(profitPerShare_ * (tokenBalanceLedger_[_customerAddress] + stakeBalanceLedger_[_customerAddress])) - payoutsTo_[_customerAddress]) / magnitude; uint256 finalBalance = SafeMath.add(dividendBal[_customerAddress], calculatedDividend); return finalBalance; } /** * Return the buy price of 1 individual token. */ function sellPrice() public view returns(uint256) { if(tokenSupply_ == 0){ return tokenPriceInitial_ - tokenPriceDecremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 _dividends = SafeMath.percent(_ethereum,dividendFee_,100,18); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } } /** * Return the sell price of 1 individual token. */ function buyPrice() public view returns(uint256) { if(tokenSupply_ == 0){ return tokenPriceInitial_ + tokenPriceIncremental_; } else { uint256 _ethereum = tokensToEthereum_(1e18); uint256 untotalDeduct = developerFee_ + referralPer_ + dividendFee_; uint256 totalDeduct = SafeMath.percent(_ethereum,untotalDeduct,100,18); uint256 _taxedEthereum = SafeMath.add(_ethereum, totalDeduct); return _taxedEthereum; } } function calculateTokensReceived(uint256 _ethereumToSpend) public view returns(uint256) { uint256 untotalDeduct = developerFee_ + referralPer_ + dividendFee_; uint256 totalDeduct = SafeMath.percent(_ethereumToSpend,untotalDeduct,100,18); uint256 _taxedEthereum = SafeMath.sub(_ethereumToSpend, totalDeduct); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); return _amountOfTokens; } function calculateEthereumReceived(uint256 _tokensToSell) public view returns(uint256) { require(_tokensToSell <= tokenSupply_); uint256 _ethereum = tokensToEthereum_(_tokensToSell); uint256 _dividends = SafeMath.percent(_ethereum,dividendFee_,100,18); uint256 _taxedEthereum = SafeMath.sub(_ethereum, _dividends); return _taxedEthereum; } function stakeTokens(uint256 _amountOfTokens) onlybelievers () public returns(bool){ address _customerAddress = msg.sender; // make sure we have the requested tokens require(!onlyAmbassadors && _amountOfTokens <= tokenBalanceLedger_[_customerAddress]); uint256 _amountOfTokensWith1Token = SafeMath.sub(_amountOfTokens, 1e18); stakingTime_[_customerAddress] = now; stakeBalanceLedger_[_customerAddress] = SafeMath.add(stakeBalanceLedger_[_customerAddress], _amountOfTokensWith1Token); tokenBalanceLedger_[_customerAddress] = SafeMath.sub(tokenBalanceLedger_[_customerAddress], _amountOfTokensWith1Token); } // Add daily ROI function stakeTokensBalance(address _customerAddress) public view returns(uint256){ uint256 timediff = SafeMath.sub(now, stakingTime_[_customerAddress]); uint256 dayscount = SafeMath.div(timediff, 86400); //86400 Sec for 1 Day uint256 roiPercent = SafeMath.mul(dayscount, stakePer_); uint256 roiTokens = SafeMath.percent(stakeBalanceLedger_[_customerAddress],roiPercent,100,18); uint256 finalBalance = SafeMath.add(stakeBalanceLedger_[_customerAddress],roiTokens); return finalBalance; } function stakeTokensTime(address _customerAddress) public view returns(uint256){ return stakingTime_[_customerAddress]; } function releaseStake() onlybelievers () public returns(bool){ address _customerAddress = msg.sender; // make sure we have the requested tokens require(!onlyAmbassadors && stakingTime_[_customerAddress] > 0); uint256 _amountOfTokens = stakeBalanceLedger_[_customerAddress]; uint256 timediff = SafeMath.sub(now, stakingTime_[_customerAddress]); uint256 dayscount = SafeMath.div(timediff, 86400); uint256 roiPercent = SafeMath.mul(dayscount, stakePer_); uint256 roiTokens = SafeMath.percent(_amountOfTokens,roiPercent,100,18); uint256 finalBalance = SafeMath.add(_amountOfTokens,roiTokens); // add tokens to the pool tokenSupply_ = SafeMath.add(tokenSupply_, roiTokens); // transfer tokens back tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], finalBalance); stakeBalanceLedger_[_customerAddress] = 0; stakingTime_[_customerAddress] = 0; } /*========================================== = INTERNAL FUNCTIONS = ==========================================*/ uint256 developerFee; uint256 incETH; address _refAddress; uint256 _referralBonus; uint256 bonusLv1; uint256 bonusLv2; uint256 bonusLv3; uint256 bonusLv4; uint256 bonusLv5; uint256 bonusLv6; uint256 bonusLv7; uint256 bonusLv8; uint256 bonusLv9; uint256 bonusLv10; address chkLv2; address chkLv3; address chkLv4; address chkLv5; address chkLv6; address chkLv7; address chkLv8; address chkLv9; address chkLv10; struct RefUserDetail { address refUserAddress; uint256 refLevel; } mapping(address => mapping (uint => RefUserDetail)) public RefUser; mapping(address => uint256) public referralCount_; function getDownlineRef(address senderAddress, uint dataId) external view returns (address,uint) { return (RefUser[senderAddress][dataId].refUserAddress,RefUser[senderAddress][dataId].refLevel); } function addDownlineRef(address senderAddress, address refUserAddress, uint refLevel) internal { referralCount_[senderAddress]++; uint dataId = referralCount_[senderAddress]; RefUser[senderAddress][dataId].refUserAddress = refUserAddress; RefUser[senderAddress][dataId].refLevel = refLevel; } function getref(address _customerAddress, uint _level) public view returns(address lv) { if(_level == 1) { lv = referralLevel1Address[_customerAddress]; } else if(_level == 2) { lv = referralLevel2Address[_customerAddress]; } else if(_level == 3) { lv = referralLevel3Address[_customerAddress]; } else if(_level == 4) { lv = referralLevel4Address[_customerAddress]; } else if(_level == 5) { lv = referralLevel5Address[_customerAddress]; } else if(_level == 6) { lv = referralLevel6Address[_customerAddress]; } else if(_level == 7) { lv = referralLevel7Address[_customerAddress]; } else if(_level == 8) { lv = referralLevel8Address[_customerAddress]; } else if(_level == 9) { lv = referralLevel9Address[_customerAddress]; } else if(_level == 10) { lv = referralLevel10Address[_customerAddress]; } return lv; } function distributeRefBonus(uint256 _incomingEthereum, address _referredBy, address _sender, bool _newReferral) internal { address _customerAddress = _sender; uint256 remainingRefBonus = _incomingEthereum; _referralBonus = _incomingEthereum; bonusLv1 = SafeMath.percent(_referralBonus,30,100,18); bonusLv2 = SafeMath.percent(_referralBonus,20,100,18); bonusLv3 = SafeMath.percent(_referralBonus,15,100,18); bonusLv4 = SafeMath.percent(_referralBonus,10,100,18); bonusLv5 = SafeMath.percent(_referralBonus,5,100,18); bonusLv6 = SafeMath.percent(_referralBonus,5,100,18); bonusLv7 = SafeMath.percent(_referralBonus,5,100,18); bonusLv8 = SafeMath.percent(_referralBonus,3,100,18); bonusLv9 = SafeMath.percent(_referralBonus,3,100,18); bonusLv10 = SafeMath.percent(_referralBonus,2,100,18); // Level 1 referralLevel1Address[_customerAddress] = _referredBy; referralBalance_[referralLevel1Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel1Address[_customerAddress]], bonusLv1); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv1); if(_newReferral == true) { addDownlineRef(_referredBy, _customerAddress, 1); } chkLv2 = referralLevel1Address[_referredBy]; chkLv3 = referralLevel2Address[_referredBy]; chkLv4 = referralLevel3Address[_referredBy]; chkLv5 = referralLevel4Address[_referredBy]; chkLv6 = referralLevel5Address[_referredBy]; chkLv7 = referralLevel6Address[_referredBy]; chkLv8 = referralLevel7Address[_referredBy]; chkLv9 = referralLevel8Address[_referredBy]; chkLv10 = referralLevel9Address[_referredBy]; // Level 2 if(chkLv2 != 0x0000000000000000000000000000000000000000) { referralLevel2Address[_customerAddress] = referralLevel1Address[_referredBy]; referralBalance_[referralLevel2Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel2Address[_customerAddress]], bonusLv2); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv2); if(_newReferral == true) { addDownlineRef(referralLevel1Address[_referredBy], _customerAddress, 2); } } // Level 3 if(chkLv3 != 0x0000000000000000000000000000000000000000) { referralLevel3Address[_customerAddress] = referralLevel2Address[_referredBy]; referralBalance_[referralLevel3Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel3Address[_customerAddress]], bonusLv3); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv3); if(_newReferral == true) { addDownlineRef(referralLevel2Address[_referredBy], _customerAddress, 3); } } // Level 4 if(chkLv4 != 0x0000000000000000000000000000000000000000) { referralLevel4Address[_customerAddress] = referralLevel3Address[_referredBy]; referralBalance_[referralLevel4Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel4Address[_customerAddress]], bonusLv4); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv4); if(_newReferral == true) { addDownlineRef(referralLevel3Address[_referredBy], _customerAddress, 4); } } // Level 5 if(chkLv5 != 0x0000000000000000000000000000000000000000) { referralLevel5Address[_customerAddress] = referralLevel4Address[_referredBy]; referralBalance_[referralLevel5Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel5Address[_customerAddress]], bonusLv5); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv5); if(_newReferral == true) { addDownlineRef(referralLevel4Address[_referredBy], _customerAddress, 5); } } // Level 6 if(chkLv6 != 0x0000000000000000000000000000000000000000) { referralLevel6Address[_customerAddress] = referralLevel5Address[_referredBy]; referralBalance_[referralLevel6Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel6Address[_customerAddress]], bonusLv6); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv6); if(_newReferral == true) { addDownlineRef(referralLevel5Address[_referredBy], _customerAddress, 6); } } // Level 7 if(chkLv7 != 0x0000000000000000000000000000000000000000) { referralLevel7Address[_customerAddress] = referralLevel6Address[_referredBy]; referralBalance_[referralLevel7Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel7Address[_customerAddress]], bonusLv7); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv7); if(_newReferral == true) { addDownlineRef(referralLevel6Address[_referredBy], _customerAddress, 7); } } // Level 8 if(chkLv8 != 0x0000000000000000000000000000000000000000) { referralLevel8Address[_customerAddress] = referralLevel7Address[_referredBy]; referralBalance_[referralLevel8Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel8Address[_customerAddress]], bonusLv8); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv8); if(_newReferral == true) { addDownlineRef(referralLevel7Address[_referredBy], _customerAddress, 8); } } // Level 9 if(chkLv9 != 0x0000000000000000000000000000000000000000) { referralLevel9Address[_customerAddress] = referralLevel8Address[_referredBy]; referralBalance_[referralLevel9Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel9Address[_customerAddress]], bonusLv9); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv9); if(_newReferral == true) { addDownlineRef(referralLevel8Address[_referredBy], _customerAddress, 9); } } // Level 10 if(chkLv10 != 0x0000000000000000000000000000000000000000) { referralLevel10Address[_customerAddress] = referralLevel9Address[_referredBy]; referralBalance_[referralLevel10Address[_customerAddress]] = SafeMath.add(referralBalance_[referralLevel10Address[_customerAddress]], bonusLv10); remainingRefBonus = SafeMath.sub(remainingRefBonus, bonusLv10); if(_newReferral == true) { addDownlineRef(referralLevel9Address[_referredBy], _customerAddress, 10); } } developerBalance = SafeMath.add(developerBalance, remainingRefBonus); } function distributeNewBonus(uint256 _incETH, uint256 _amountOfTokens, address _customerAddress, bool _adminTransfer) internal { uint256 _newXDMbonus = 0; if(_incETH >= 10 ether && _incETH < 20 ether) { _newXDMbonus = SafeMath.percent(_amountOfTokens,2,100,18); } if(_incETH >= 20 ether && _incETH < 50 ether) { _newXDMbonus = SafeMath.percent(_amountOfTokens,3,100,18); } if(_incETH >= 50 ether && _incETH < 80 ether) { _newXDMbonus = SafeMath.percent(_amountOfTokens,5,100,18); } if(_incETH >= 80 ether && _incETH < 100 ether) { _newXDMbonus = SafeMath.percent(_amountOfTokens,7,100,18); } if(_incETH >= 100 ether && _incETH <= 1000 ether) { _newXDMbonus = SafeMath.percent(_amountOfTokens,8,100,18); } if(_adminTransfer == true) { tokenBalanceLedger_[0x18bbBeBc5B7658c7aCAD57381084FA63F9fad590] = SafeMath.add(tokenBalanceLedger_[0x18bbBeBc5B7658c7aCAD57381084FA63F9fad590], _newXDMbonus); } else { tokenBalanceLedger_[referralLevel1Address[_customerAddress]] = SafeMath.add(tokenBalanceLedger_[referralLevel1Address[_customerAddress]], _newXDMbonus); } tokenSupply_ = SafeMath.add(tokenSupply_, _newXDMbonus); } function purchaseTokens(uint256 _incomingEthereum, address _referredBy) antiEarlyWhale(_incomingEthereum) internal returns(uint256) { // data setup address _customerAddress = msg.sender; incETH = _incomingEthereum; developerFee = SafeMath.percent(incETH,developerFee_,100,18); developerBalance = SafeMath.add(developerBalance, developerFee); _referralBonus = SafeMath.percent(incETH,referralPer_,100,18); uint256 _dividends = SafeMath.percent(incETH,dividendFee_,100,18); uint256 untotalDeduct = developerFee_ + referralPer_ + dividendFee_; uint256 totalDeduct = SafeMath.percent(incETH,untotalDeduct,100,18); uint256 _taxedEthereum = SafeMath.sub(incETH, totalDeduct); uint256 _amountOfTokens = ethereumToTokens_(_taxedEthereum); uint256 _fee = _dividends * magnitude; bool _newReferral = true; if(referralLevel1Address[_customerAddress] != 0x0000000000000000000000000000000000000000) { _referredBy = referralLevel1Address[_customerAddress]; _newReferral = false; } require(_amountOfTokens > 0 && (SafeMath.add(_amountOfTokens,tokenSupply_) > tokenSupply_)); // is the user referred by a link? if( // is this a referred purchase? _referredBy != 0x0000000000000000000000000000000000000000 && // no cheating! _referredBy != _customerAddress && tokenBalanceLedger_[_referredBy] >= stakingRequirement ){ // wealth redistribution distributeRefBonus(_referralBonus,_referredBy,_customerAddress,_newReferral); if(incETH >= 10 ether && incETH <= 1000 ether) { distributeNewBonus(incETH,_amountOfTokens,_customerAddress,false); } } else { // no ref purchase // send referral bonus back to admin developerBalance = SafeMath.add(developerBalance, _referralBonus); if(incETH >= 10 ether && incETH <= 1000 ether) { distributeNewBonus(incETH,_amountOfTokens,_customerAddress,true); } } // we can't give people infinite ethereum if(tokenSupply_ > 0){ // add tokens to the pool tokenSupply_ = SafeMath.add(tokenSupply_, _amountOfTokens); // take the amount of dividends gained through this transaction, and allocates them evenly to each shareholder profitPerShare_ += (_dividends * magnitude / (tokenSupply_)); // calculate the amount of tokens the customer receives over his purchase _fee = _fee - (_fee-(_amountOfTokens * (_dividends * magnitude / (tokenSupply_)))); } else { // add tokens to the pool tokenSupply_ = _amountOfTokens; } // update circulating supply & the ledger address for the customer tokenBalanceLedger_[_customerAddress] = SafeMath.add(tokenBalanceLedger_[_customerAddress], _amountOfTokens); int256 _updatedPayouts = (int256) ((profitPerShare_ * _amountOfTokens) - _fee); payoutsTo_[_customerAddress] += _updatedPayouts; // fire event onTokenPurchase(_customerAddress, incETH, _amountOfTokens, _referredBy); return _amountOfTokens; } /** * Calculate Token price based on an amount of incoming ethereum * It's an algorithm, hopefully we gave you the whitepaper with it in scientific notation; * Some conversions occurred to prevent decimal errors or underflows / overflows in solidity code. */ function ethereumToTokens_(uint256 _ethereum) internal view returns(uint256) { uint256 _tokenPriceInitial = tokenPriceInitial_ * 1e18; uint256 _tokensReceived = ( ( SafeMath.sub( (sqrt ( (_tokenPriceInitial**2) + (2*(tokenPriceIncremental_ * 1e18)*(_ethereum * 1e18)) + (((tokenPriceIncremental_)**2)*(tokenSupply_**2)) + (2*(tokenPriceIncremental_)*_tokenPriceInitial*tokenSupply_) ) ), _tokenPriceInitial ) )/(tokenPriceIncremental_) )-(tokenSupply_) ; return _tokensReceived; } /** * Calculate token sell value. */ function tokensToEthereum_(uint256 _tokens) internal view returns(uint256) { uint256 tokens_ = (_tokens + 2e18); uint256 _tokenSupply = (tokenSupply_ + 2e18); uint256 _etherReceived = ( SafeMath.sub( ( ( ( tokenPriceInitial_ +(tokenPriceDecremental_ * (_tokenSupply/2e18)) )-tokenPriceDecremental_ )*(tokens_ - 2e18) ),(tokenPriceDecremental_*((tokens_**2-tokens_)/2e18))/2 ) /2e18); return _etherReceived; } function sqrt(uint x) internal pure returns (uint y) { uint z = (x + 1) / 2; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"dividendsOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"senderAddress","type":"address"}],"name":"migratePayoutsToShow","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_ethereumToSpend","type":"uint256"}],"name":"calculateTokensReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"migrateDeveloperFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"stakePercent","type":"uint8"}],"name":"changeStakePercent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokensToSell","type":"uint256"}],"name":"calculateEthereumReceived","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"onlyAmbassadors","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"senderAddress","type":"address"},{"name":"dataId","type":"uint256"}],"name":"getDownlineRef","outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"dataId","type":"uint256"},{"name":"refUserAddress","type":"address"},{"name":"refLevel","type":"uint256"}],"name":"migrateDownlineRef","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"administrators","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"RefUser","outputs":[{"name":"refUserAddress","type":"address"},{"name":"refLevel","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"sellPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakingRequirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"_amount","type":"int256"}],"name":"migratePayoutsTo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"releaseStake","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalDeveloperBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_includeReferralBonus","type":"bool"}],"name":"myDividends","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalEthereumBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"senderAddress","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_time","type":"uint256"}],"name":"migrateStakeBalanceNTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"stakeTokens","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"}],"name":"stakeTokensTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"}],"name":"migrateTotalSupply","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"migrateEth","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"setStakingRequirement","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_identifier","type":"bytes32"},{"name":"_status","type":"bool"}],"name":"setAdministrator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"myTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"disableInitialStage","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_toAddress","type":"address"},{"name":"_amountOfTokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_symbol","type":"string"}],"name":"setSymbol","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_withdrawAmount","type":"uint256"}],"name":"drainDeveloperFees","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"ref1","type":"address"},{"name":"ref2","type":"address"},{"name":"ref3","type":"address"},{"name":"ref4","type":"address"},{"name":"ref5","type":"address"},{"name":"ref6","type":"address"},{"name":"ref7","type":"address"},{"name":"ref8","type":"address"},{"name":"ref9","type":"address"},{"name":"ref10","type":"address"}],"name":"migrateTenLvlReferral","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_name","type":"string"}],"name":"setName","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"dividendBal_","type":"uint256"},{"name":"referralBalanceM_","type":"uint256"},{"name":"_tokenAmount","type":"uint256"},{"name":"referralCountM_","type":"uint256"}],"name":"migrateXDMDividendNReferralBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_customerAddress","type":"address"},{"name":"_level","type":"uint256"}],"name":"getref","outputs":[{"name":"lv","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amountOfTokens","type":"uint256"}],"name":"sell","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"referralCount_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"migrateProfitPerShareShow","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"exit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_referredBy","type":"address"}],"name":"buy","outputs":[{"name":"","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"}],"name":"migrateProfitPerShare","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"incomingEthereum","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"},{"indexed":true,"name":"referredBy","type":"address"}],"name":"onTokenPurchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"tokensBurned","type":"uint256"},{"indexed":false,"name":"ethereumEarned","type":"uint256"}],"name":"onTokenSell","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumReinvested","type":"uint256"},{"indexed":false,"name":"tokensMinted","type":"uint256"}],"name":"onReinvestment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"customerAddress","type":"address"},{"indexed":false,"name":"ethereumWithdrawn","type":"uint256"}],"name":"onWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"}]
Contract Creation Code
606060405260408051908101604052600981527f5863656c447265616d0000000000000000000000000000000000000000000000602082015260009080516200004d92916020019062000166565b5060408051908101604052600381527f58444d0000000000000000000000000000000000000000000000000000000000602082015260019080516200009792916020019062000166565b506002805460ff19908116600117909155670de0b6b3a764000060035560006016819055601755601a805490911690553415620000d357600080fd5b7f6bd5fe5333e7c31315c4bc83632de1077c2bc1cec810c980e6cfc0e0f294f0f88054600160ff1991821681179092557fed62d0ae0456a16dfbb47506656465cb108c526eef11bb06c87c7c1b95e7f27e80548216831790556000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ec805490911690911790556200020b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001a957805160ff1916838001178555620001d9565b82800160010185558215620001d9579182015b82811115620001d9578251825591602001919060010190620001bc565b50620001e7929150620001eb565b5090565b6200020891905b80821115620001e75760008155600101620001f2565b90565b6134c8806200021b6000396000f30060606040526004361061024f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461025d57806306fdde031461028e578063097e34a11461031857806310d0ffdd1461033757806314ec2b0d1461034d57806317ef4e921461036557806318160ddd1461037e578063226093731461039157806327defa1f146103a75780632b152e40146103ce5780632bba8b57146104125780632fc2a5721461043e578063313ce5671461045d578063392efb52146104865780633ccfd60b1461049c57806343360a8e146104af5780634b750334146104d157806356d399e8146104e457806358e717fd146104f75780635c48c1fa1461051957806366b3fa601461052c578063688abbf71461053f5780636b2f46321461055757806370a082311461056a5780637468e367146105895780637547c7a3146105ae57806377e79b41146105c45780637af7d382146105e35780637dc572f3146105625780638328b610146105f95780638620410b1461060f57806389135ae914610622578063949e8acd1461063d57806395d89b4114610650578063a8e04f3414610663578063a9059cbb14610676578063b84c824614610698578063bf21e388146106e9578063c2150ec4146106ff578063c47f00271461075d578063d9a40bb1146107ae578063e4735104146107d9578063e4849b3214610817578063e5deb3041461082d578063e8beadfd1461084c578063e9fad8ee1461085f578063f088d54714610872578063f402db6d14610886578063fdb5a03e1461089c575b61025a3460006108af565b50005b341561026857600080fd5b61027c600160a060020a0360043516610ff0565b60405190815260200160405180910390f35b341561029957600080fd5b6102a161104b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102dd5780820151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032357600080fd5b61027c600160a060020a03600435166110e9565b341561034257600080fd5b61027c600435611104565b341561035857600080fd5b61036360043561113a565b005b341561037057600080fd5b61036360ff60043516611188565b341561038957600080fd5b61027c6111e7565b341561039c57600080fd5b61027c6004356111ee565b34156103b257600080fd5b6103ba611234565b604051901515815260200160405180910390f35b34156103d957600080fd5b6103f0600160a060020a036004351660243561123d565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561041d57600080fd5b610363600160a060020a03600435811690602435906044351660643561126d565b341561044957600080fd5b61027c600160a060020a03600435166112f7565b341561046857600080fd5b6104706113ad565b60405160ff909116815260200160405180910390f35b341561049157600080fd5b6103ba6004356113b2565b34156104a757600080fd5b6103636113c7565b34156104ba57600080fd5b6103f0600160a060020a0360043516602435611567565b34156104dc57600080fd5b61027c611597565b34156104ef57600080fd5b61027c6115f0565b341561050257600080fd5b610363600160a060020a03600435166024356115f6565b341561052457600080fd5b6103ba61165b565b341561053757600080fd5b61027c611798565b341561054a57600080fd5b61027c600435151561179e565b341561056257600080fd5b61027c6117e1565b341561057557600080fd5b61027c600160a060020a03600435166117ef565b341561059457600080fd5b610363600160a060020a036004351660243560443561180a565b34156105b957600080fd5b6103ba60043561187b565b34156105cf57600080fd5b61027c600160a060020a0360043516611963565b34156105ee57600080fd5b61036360043561197e565b341561060457600080fd5b6103636004356119cc565b341561061a57600080fd5b61027c611a1a565b341561062d57600080fd5b6103636004356024351515611a79565b341561064857600080fd5b61027c611ae2565b341561065b57600080fd5b6102a1611af5565b341561066e57600080fd5b610363611b60565b341561068157600080fd5b6103ba600160a060020a0360043516602435611bb5565b34156106a357600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611d6c95505050505050565b34156106f457600080fd5b610363600435611dcc565b341561070a57600080fd5b610363600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c43581169060e43581169061010435811690610124358116906101443516611e6d565b341561076857600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611fac95505050505050565b34156107b957600080fd5b610363600160a060020a0360043516602435604435606435608435612007565b34156107e457600080fd5b6107fb600160a060020a0360043516602435612092565b604051600160a060020a03909116815260200160405180910390f35b341561082257600080fd5b61036360043561223a565b341561083857600080fd5b61027c600160a060020a0360043516612391565b341561085757600080fd5b61027c6123a3565b341561086a57600080fd5b6103636123a9565b61027c600160a060020a03600435166123e0565b341561089157600080fd5b6103636004356123ec565b34156108a757600080fd5b61036361243a565b6000806000806000806000806000808b6000339050601a60009054906101000a900460ff1680156108f15750670de0b6b3a7640000826108ed6117e1565b0311155b15610cb357600160a060020a03811660009081526004602052604090205460ff16151560011480156109465750600160a060020a038116600090815260156020526040902054670de0b6b3a764000090830111155b151561095157600080fd5b600160a060020a03811660009081526015602052604090205461097490836125cb565b600160a060020a038216600090815260156020526040902055601c8e9055339a506109a48e6005606460126125e5565b601b8190556017546109b5916125cb565b601755601c546109ca906014606460126125e5565b601e55601c546109df906005606460126125e5565b601c54909a50601e99506109f7908a606460126125e5565b9750610a05601c548961262a565b9650610a108761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610a6257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610a7c5750601654610a7a87826125cb565b115b1515610a8757600080fd5b600160a060020a038d1615801590610ab157508a600160a060020a03168d600160a060020a031614155b8015610ad75750600354600160a060020a038e1660009081526005602052604090205410155b15610b2857610aea601e548e8d876126db565b678ac7230489e80000601c5410158015610b0f5750683635c9adc5dea00000601c5411155b15610b2357610b23601c54878d60006130b4565b610b73565b610b36601754601e546125cb565b601755601c54678ac7230489e800009010801590610b5f5750683635c9adc5dea00000601c5411155b15610b7357610b73601c54878d60016130b4565b60006016541115610bcd57610b8a601654876125cb565b6016819055604060020a8b02811515610b9f57fe5b60188054929091049091019055601654604060020a8b02811515610bbf57fe5b048602850385039450610bd3565b60168690555b600160a060020a038b16600090815260056020526040902054610bf690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b50610fdf565b601a805460ff19169055601c8e9055339a50610cd48e6005606460126125e5565b601b819055601754610ce5916125cb565b601755601c54610cfa906014606460126125e5565b601e55601c54610d0f906005606460126125e5565b601c54909a50601e9950610d27908a606460126125e5565b9750610d35601c548961262a565b9650610d408761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610d9257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610dac5750601654610daa87826125cb565b115b1515610db757600080fd5b600160a060020a038d1615801590610de157508a600160a060020a03168d600160a060020a031614155b8015610e075750600354600160a060020a038e1660009081526005602052604090205410155b15610e5857610e1a601e548e8d876126db565b678ac7230489e80000601c5410158015610e3f5750683635c9adc5dea00000601c5411155b15610e5357610e53601c54878d60006130b4565b610ea3565b610e66601754601e546125cb565b601755601c54678ac7230489e800009010801590610e8f5750683635c9adc5dea00000601c5411155b15610ea357610ea3601c54878d60016130b4565b60006016541115610efd57610eba601654876125cb565b6016819055604060020a8b02811515610ecf57fe5b60188054929091049091019055601654604060020a8b02811515610eef57fe5b048602850385039450610f03565b60168690555b600160a060020a038b16600090815260056020526040902054610f2690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b505b505050505050505050505092915050565b600160a060020a03811660009081526014602090815260408083205460068352818420546005845282852054601854600990955292852054604060020a93909101909302030490829061104390836125cb565b949350505050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b600160a060020a031660009081526014602052604090205490565b6000601e8180806111198685606460126125e5565b9250611125868461262a565b91506111308261263c565b9695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561118257600080fd5b50601755565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156111d057600080fd5b506002805460ff191660ff92909216919091179055565b6016545b90565b600080600080601654851115151561120557600080fd5b61120e856132d7565b925061121f836005606460126125e5565b915061122b838361262a565b95945050505050565b601a5460ff1681565b600160a060020a039182166000908152603260209081526040808320938352929052208054600190910154911691565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156112b557600080fd5b50600160a060020a039384166000908152603260209081526040808320958352949052929092208054600160a060020a03191691909316178255600190910155565b60008060008060008061132f42600760008a600160a060020a0316600160a060020a031681526020019081526020016000205461262a565b945061133e8562015180613346565b60025490945061135290859060ff1661335d565b600160a060020a03881660009081526006602052604090205490935061137c9084606460126125e5565b600160a060020a0388166000908152600660205260409020549092506113a290836125cb565b979650505050505050565b601281565b60196020526000908152604090205460ff1681565b60008060006113d6600161179e565b116113e057600080fd5b3391506113ed600061179e565b600160a060020a0383166000908152600960205260408120549192509011156114a757600160a060020a0382166000908152600960205260409020548190111561146c57600160a060020a0382166000908152600960209081526040808320546014909252909120805491839003604060020a029190910190556114a2565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918303604060020a029190910190555b6114cc565b600160a060020a03821660009081526014602052604090208054604060020a83020190555b600160a060020a038216600081815260086020818152604080842080546009845282862086905593909252929055929092019182156108fc0290839051600060405180830381858888f19350505050151561152657600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b603260209081526000928352604080842090915290825290208054600190910154600160a060020a039091169082565b600080600080601654600014156115b6576559ad19f9900093506115ea565b6115c7670de0b6b3a76400006132d7565b92506115d8836005606460126125e5565b91506115e4838361262a565b90508093505b50505090565b60035481565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561163e57600080fd5b50600160a060020a03909116600090815260146020526040902055565b6000806000806000806000806000611671611ae2565b1161167b57600080fd5b601a5433975060ff161580156116a75750600160a060020a038716600090815260076020526040812054115b15156116b257600080fd5b600160a060020a0387166000908152600660209081526040808320546007909252909120549096506116e590429061262a565b94506116f48562015180613346565b60025490945061170890859060ff1661335d565b92506117188684606460126125e5565b915061172486836125cb565b9050611732601654836125cb565b601655600160a060020a03871660009081526005602052604090205461175890826125cb565b600160a060020a03909716600090815260056020908152604080832099909955600681528882208290556007905296872096909655509495945050505050565b60175490565b600033826117b4576117af81610ff0565b6117d8565b600160a060020a0381166000908152600860205260409020546117d682610ff0565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526005602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561185257600080fd5b50600160a060020a03909216600090815260066020908152604080832093909355600790522055565b600080600080611889611ae2565b1161189357600080fd5b601a5433925060ff161580156118c15750600160a060020a0382166000908152600560205260409020548411155b15156118cc57600080fd5b6118de84670de0b6b3a764000061262a565b600160a060020a0383166000908152600760209081526040808320429055600690915290205490915061191190826125cb565b600160a060020a038316600090815260066020908152604080832093909355600590522054611940908261262a565b600160a060020a0390921660009081526005602052604090209190915550919050565b600160a060020a031660009081526007602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156119c657600080fd5b50601655565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611a1457600080fd5b50600355565b600080600080600060165460001415611a3b57655bdbe51f50009450611a72565b611a4c670de0b6b3a76400006132d7565b9350601e9250611a608484606460126125e5565b9150611a6c84836125cb565b90508094505b5050505090565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ac157600080fd5b50600091825260196020526040909120805460ff1916911515919091179055565b600033611aee816117ef565b91505b5090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ba857600080fd5b50601a805460ff19169055565b600080600080600080611bc6611ae2565b11611bd057600080fd5b601a5433945060ff16158015611bfe5750600160a060020a0384166000908152600560205260409020548611155b1515611c0957600080fd5b6000611c15600161179e565b1115611c2357611c236113c7565b611c32866005606460126125e5565b9250611c3e868461262a565b9150611c49836132d7565b9050611c576016548461262a565b601655600160a060020a038416600090815260056020526040902054611c7d908761262a565b600160a060020a038086166000908152600560205260408082209390935590891681522054611cac90836125cb565b600160a060020a0388811660008181526005602090815260408083209590955560188054948a16835260149091528482208054948c02909403909355825491815292909220805492850290920190915554601654611d1b9190604060020a8402811515611d1557fe5b046125cb565b601855600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611db457600080fd5b6001828051611dc792916020019061340e565b505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611e1557600080fd5b60175433925083901015611e2857600080fd5b600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515611e5957600080fd5b611e656017548461262a565b601755505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611eb657600080fd5b5050600160a060020a039a8b166000908152600a6020908152604080832080549d8f16600160a060020a03199e8f16179055600b825280832080549c8f169c8e169c909c17909b55600c81528a822080549a8e169a8d169a909a17909955600d89528981208054988d16988c1698909817909755600e88528887208054968c16968b1696909617909555600f87528786208054948b16948a1694909417909355601086528685208054928a16928916929092179091556011855285842080549189169188169190911790556012845284832080549188169187169190911790556013909252919091208054919093169116179055565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ff457600080fd5b6000828051611dc792916020019061340e565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561205057600080fd5b5050600160a060020a03909416600090815260096020908152604080832095909555600881528482209390935560338352838120949094556005909152912055565b600081600114156120be5750600160a060020a038083166000908152600a602052604090205416612234565b81600214156120e85750600160a060020a038083166000908152600b602052604090205416612234565b81600314156121125750600160a060020a038083166000908152600c602052604090205416612234565b816004141561213c5750600160a060020a038083166000908152600d602052604090205416612234565b81600514156121665750600160a060020a038083166000908152600e602052604090205416612234565b81600614156121905750600160a060020a038083166000908152600f602052604090205416612234565b81600714156121ba5750600160a060020a0380831660009081526010602052604090205416612234565b81600814156121e45750600160a060020a0380831660009081526011602052604090205416612234565b816009141561220e5750600160a060020a0380831660009081526012602052604090205416612234565b81600a14156122345750600160a060020a03808316600090815260136020526040902054165b92915050565b600080600080600080600061224d611ae2565b1161225757600080fd5b33600160a060020a03811660009081526005602052604090205490965087111561228057600080fd5b86945061228c856132d7565b935061229d846005606460126125e5565b92506122a9848461262a565b91506122b76016548661262a565b601655600160a060020a0386166000908152600560205260409020546122dd908661262a565b600160a060020a03871660009081526005602090815260408083209390935560185460149091529181208054928802604060020a86020192839003905560165491925090111561234457612340601854601654604060020a8602811515611d1557fe5b6018555b85600160a060020a03167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139868460405191825260208201526040908101905180910390a250505050505050565b60336020526000908152604090205481565b60185490565b33600160a060020a038116600090815260056020526040812054908111156123d4576123d48161223a565b6123dc6113c7565b5050565b60006117db34836108af565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561243457600080fd5b50601855565b60008060008061244a600161179e565b1161245457600080fd5b61245e600061179e565b33600160a060020a03811660009081526009602052604081205492955090935090111561251c57600160a060020a038216600090815260096020526040902054839011156124e157600160a060020a0382166000908152600960209081526040808320546014909252909120805491859003604060020a02919091019055612517565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918503604060020a029190910190555b612541565b600160a060020a03821660009081526014602052604090208054604060020a85020190555b600160a060020a0382166000908152600860208181526040808420805460098452918520859055929091529082905593909301926125809084906108af565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000828201838110156125da57fe5b8091505b5092915050565b600080600083600101600a0a86029150600a858381151561260257fe5b0460050181151561260f57fe5b049050670de0b6b3a764000087820204979650505050505050565b60008282111561263657fe5b50900390565b6016546000906d04ee2d6d415b85acef810000000090829064e8d4a510006126c86126c274015e531a0a1c872bad2ce16256fe82000000000000880269d3c21bcecceda10000006002860a02017208f7e32ce7bea5c6fe4820023a2000000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000001613388565b8561262a565b8115156126d157fe5b0403949350505050565b601e848155829085906126f3908290606460126125e5565b601f55601e54612708906014606460126125e5565b602055601e5461271d90600f606460126125e5565b602155601e5461273290600a606460126125e5565b602255601e54612747906005606460126125e5565b602355601e5461275c906005606460126125e5565b602455601e54612771906005606460126125e5565b602555601e54612786906003606460126125e5565b602655601e5461279b906003606460126125e5565b602755601e546127b0906002606460126125e5565b602855600160a060020a038281166000908152600a602090815260408083208054600160a060020a0319168a861617908190559093168252600890522054601f546127fb91906125cb565b600160a060020a038084166000908152600a60209081526040808320549093168252600890522055601f5461283190829061262a565b90506001831515141561284a5761284a858360016133bd565b600160a060020a038086166000908152600a602090815260408083205460298054600160a060020a03199081169287169290921790819055600b845282852054602a80548416918816919091179055600c845282852054602b80548416918816919091179055600d845282852054602c80548416918816919091179055600e845282852054602d80548416918816919091179055600f845282852054602e805484169188169190911790556010845282852054602f805484169188169190911790556011845282852054603080548416918816919091179055601290935292205460318054909316908416179091551615612a0557600160a060020a038086166000908152600a60209081526040808320548685168452600b83528184208054600160a060020a031916918616919091179081905590931682526008815291902054905461299891906125cb565b600160a060020a038084166000908152600b602090815260408083205490931682526008815291902091909155546129d190829061262a565b905060018315151415612a0557600160a060020a038086166000908152600a6020526040902054612a0591168360026133bd565b602a54600160a060020a031615612ad857600160a060020a038086166000908152600b60209081526040808320548685168452600c83528184208054600160a060020a03191691861691909117908190559093168252600890522054602154612a6e91906125cb565b600160a060020a038084166000908152600c60209081526040808320549093168252600890522055602154612aa490829061262a565b905060018315151415612ad857600160a060020a038086166000908152600b6020526040902054612ad891168360036133bd565b602b54600160a060020a031615612bab57600160a060020a038086166000908152600c60209081526040808320548685168452600d83528184208054600160a060020a03191691861691909117908190559093168252600890522054602254612b4191906125cb565b600160a060020a038084166000908152600d60209081526040808320549093168252600890522055602254612b7790829061262a565b905060018315151415612bab57600160a060020a038086166000908152600c6020526040902054612bab91168360046133bd565b602c54600160a060020a031615612c7e57600160a060020a038086166000908152600d60209081526040808320548685168452600e83528184208054600160a060020a03191691861691909117908190559093168252600890522054602354612c1491906125cb565b600160a060020a038084166000908152600e60209081526040808320549093168252600890522055602354612c4a90829061262a565b905060018315151415612c7e57600160a060020a038086166000908152600d6020526040902054612c7e91168360056133bd565b602d54600160a060020a031615612d5157600160a060020a038086166000908152600e60209081526040808320548685168452600f83528184208054600160a060020a03191691861691909117908190559093168252600890522054602454612ce791906125cb565b600160a060020a038084166000908152600f60209081526040808320549093168252600890522055602454612d1d90829061262a565b905060018315151415612d5157600160a060020a038086166000908152600e6020526040902054612d5191168360066133bd565b602e54600160a060020a031615612e2457600160a060020a038086166000908152600f60209081526040808320548685168452601083528184208054600160a060020a03191691861691909117908190559093168252600890522054602554612dba91906125cb565b600160a060020a038084166000908152601060209081526040808320549093168252600890522055602554612df090829061262a565b905060018315151415612e2457600160a060020a038086166000908152600f6020526040902054612e2491168360076133bd565b602f54600160a060020a031615612ef757600160a060020a038086166000908152601060209081526040808320548685168452601183528184208054600160a060020a03191691861691909117908190559093168252600890522054602654612e8d91906125cb565b600160a060020a038084166000908152601160209081526040808320549093168252600890522055602654612ec390829061262a565b905060018315151415612ef757600160a060020a03808616600090815260106020526040902054612ef791168360086133bd565b603054600160a060020a031615612fca57600160a060020a038086166000908152601160209081526040808320548685168452601283528184208054600160a060020a03191691861691909117908190559093168252600890522054602754612f6091906125cb565b600160a060020a038084166000908152601260209081526040808320549093168252600890522055602754612f9690829061262a565b905060018315151415612fca57600160a060020a03808616600090815260116020526040902054612fca91168360096133bd565b603154600160a060020a03161561309d57600160a060020a038086166000908152601260209081526040808320548685168452601383528184208054600160a060020a0319169186169190911790819055909316825260089052205460285461303391906125cb565b600160a060020a03808416600090815260136020908152604080832054909316825260089052205560285461306990829061262a565b90506001831515141561309d57600160a060020a0380861660009081526012602052604090205461309d911683600a6133bd565b6130a9601754826125cb565b601755505050505050565b6000678ac7230489e8000085108015906130d657506801158e460913d0000085105b156130ed576130ea846002606460126125e5565b90505b6801158e460913d00000851015801561310e57506802b5e3af16b188000085105b1561312557613122846003606460126125e5565b90505b6802b5e3af16b1880000851015801561314657506804563918244f40000085105b1561315d5761315a846005606460126125e5565b90505b6804563918244f400000851015801561317e575068056bc75e2d6310000085105b1561319557613192846007606460126125e5565b90505b68056bc75e2d6310000085101580156131b75750683635c9adc5dea000008511155b156131ce576131cb846008606460126125e5565b90505b60018215151415613266577318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a4895461322290826125cb565b7318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a489556132c1565b600160a060020a038084166000908152600a6020908152604080832054909316825260059052205461329890826125cb565b600160a060020a038085166000908152600a602090815260408083205490931682526005905220555b6132cd601654826125cb565b6016555050505050565b601654600090671bc16d674ec800008381019181019083906133336559ad19f99000828504650145f680b00002018702600283671bc16d674ec7ffff1982890a8b90030104650145f680b0000281151561332d57fe5b0461262a565b81151561333c57fe5b0495945050505050565b600080828481151561335457fe5b04949350505050565b60008083151561337057600091506125de565b5082820282848281151561338057fe5b04146125da57fe5b80600260018201045b818110156117db5780915060028182858115156133aa57fe5b04018115156133b557fe5b049050613391565b600160a060020a03928316600090815260336020908152604080832080546001908101918290556032845282852091855292529091208054600160a060020a03191693909416929092178355910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061344f57805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c578251825591602001919060010190613461565b50611af1926111eb9250905b80821115611af157600081556001016134885600a165627a7a723058204b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e010029
Deployed Bytecode
0x60606040526004361061024f5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166265318b811461025d57806306fdde031461028e578063097e34a11461031857806310d0ffdd1461033757806314ec2b0d1461034d57806317ef4e921461036557806318160ddd1461037e578063226093731461039157806327defa1f146103a75780632b152e40146103ce5780632bba8b57146104125780632fc2a5721461043e578063313ce5671461045d578063392efb52146104865780633ccfd60b1461049c57806343360a8e146104af5780634b750334146104d157806356d399e8146104e457806358e717fd146104f75780635c48c1fa1461051957806366b3fa601461052c578063688abbf71461053f5780636b2f46321461055757806370a082311461056a5780637468e367146105895780637547c7a3146105ae57806377e79b41146105c45780637af7d382146105e35780637dc572f3146105625780638328b610146105f95780638620410b1461060f57806389135ae914610622578063949e8acd1461063d57806395d89b4114610650578063a8e04f3414610663578063a9059cbb14610676578063b84c824614610698578063bf21e388146106e9578063c2150ec4146106ff578063c47f00271461075d578063d9a40bb1146107ae578063e4735104146107d9578063e4849b3214610817578063e5deb3041461082d578063e8beadfd1461084c578063e9fad8ee1461085f578063f088d54714610872578063f402db6d14610886578063fdb5a03e1461089c575b61025a3460006108af565b50005b341561026857600080fd5b61027c600160a060020a0360043516610ff0565b60405190815260200160405180910390f35b341561029957600080fd5b6102a161104b565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102dd5780820151838201526020016102c5565b50505050905090810190601f16801561030a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032357600080fd5b61027c600160a060020a03600435166110e9565b341561034257600080fd5b61027c600435611104565b341561035857600080fd5b61036360043561113a565b005b341561037057600080fd5b61036360ff60043516611188565b341561038957600080fd5b61027c6111e7565b341561039c57600080fd5b61027c6004356111ee565b34156103b257600080fd5b6103ba611234565b604051901515815260200160405180910390f35b34156103d957600080fd5b6103f0600160a060020a036004351660243561123d565b604051600160a060020a03909216825260208201526040908101905180910390f35b341561041d57600080fd5b610363600160a060020a03600435811690602435906044351660643561126d565b341561044957600080fd5b61027c600160a060020a03600435166112f7565b341561046857600080fd5b6104706113ad565b60405160ff909116815260200160405180910390f35b341561049157600080fd5b6103ba6004356113b2565b34156104a757600080fd5b6103636113c7565b34156104ba57600080fd5b6103f0600160a060020a0360043516602435611567565b34156104dc57600080fd5b61027c611597565b34156104ef57600080fd5b61027c6115f0565b341561050257600080fd5b610363600160a060020a03600435166024356115f6565b341561052457600080fd5b6103ba61165b565b341561053757600080fd5b61027c611798565b341561054a57600080fd5b61027c600435151561179e565b341561056257600080fd5b61027c6117e1565b341561057557600080fd5b61027c600160a060020a03600435166117ef565b341561059457600080fd5b610363600160a060020a036004351660243560443561180a565b34156105b957600080fd5b6103ba60043561187b565b34156105cf57600080fd5b61027c600160a060020a0360043516611963565b34156105ee57600080fd5b61036360043561197e565b341561060457600080fd5b6103636004356119cc565b341561061a57600080fd5b61027c611a1a565b341561062d57600080fd5b6103636004356024351515611a79565b341561064857600080fd5b61027c611ae2565b341561065b57600080fd5b6102a1611af5565b341561066e57600080fd5b610363611b60565b341561068157600080fd5b6103ba600160a060020a0360043516602435611bb5565b34156106a357600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611d6c95505050505050565b34156106f457600080fd5b610363600435611dcc565b341561070a57600080fd5b610363600160a060020a0360043581169060243581169060443581169060643581169060843581169060a43581169060c43581169060e43581169061010435811690610124358116906101443516611e6d565b341561076857600080fd5b61036360046024813581810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650611fac95505050505050565b34156107b957600080fd5b610363600160a060020a0360043516602435604435606435608435612007565b34156107e457600080fd5b6107fb600160a060020a0360043516602435612092565b604051600160a060020a03909116815260200160405180910390f35b341561082257600080fd5b61036360043561223a565b341561083857600080fd5b61027c600160a060020a0360043516612391565b341561085757600080fd5b61027c6123a3565b341561086a57600080fd5b6103636123a9565b61027c600160a060020a03600435166123e0565b341561089157600080fd5b6103636004356123ec565b34156108a757600080fd5b61036361243a565b6000806000806000806000806000808b6000339050601a60009054906101000a900460ff1680156108f15750670de0b6b3a7640000826108ed6117e1565b0311155b15610cb357600160a060020a03811660009081526004602052604090205460ff16151560011480156109465750600160a060020a038116600090815260156020526040902054670de0b6b3a764000090830111155b151561095157600080fd5b600160a060020a03811660009081526015602052604090205461097490836125cb565b600160a060020a038216600090815260156020526040902055601c8e9055339a506109a48e6005606460126125e5565b601b8190556017546109b5916125cb565b601755601c546109ca906014606460126125e5565b601e55601c546109df906005606460126125e5565b601c54909a50601e99506109f7908a606460126125e5565b9750610a05601c548961262a565b9650610a108761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610a6257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610a7c5750601654610a7a87826125cb565b115b1515610a8757600080fd5b600160a060020a038d1615801590610ab157508a600160a060020a03168d600160a060020a031614155b8015610ad75750600354600160a060020a038e1660009081526005602052604090205410155b15610b2857610aea601e548e8d876126db565b678ac7230489e80000601c5410158015610b0f5750683635c9adc5dea00000601c5411155b15610b2357610b23601c54878d60006130b4565b610b73565b610b36601754601e546125cb565b601755601c54678ac7230489e800009010801590610b5f5750683635c9adc5dea00000601c5411155b15610b7357610b73601c54878d60016130b4565b60006016541115610bcd57610b8a601654876125cb565b6016819055604060020a8b02811515610b9f57fe5b60188054929091049091019055601654604060020a8b02811515610bbf57fe5b048602850385039450610bd3565b60168690555b600160a060020a038b16600090815260056020526040902054610bf690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b50610fdf565b601a805460ff19169055601c8e9055339a50610cd48e6005606460126125e5565b601b819055601754610ce5916125cb565b601755601c54610cfa906014606460126125e5565b601e55601c54610d0f906005606460126125e5565b601c54909a50601e9950610d27908a606460126125e5565b9750610d35601c548961262a565b9650610d408761263c565b600160a060020a03808d166000908152600a6020526040902054919750604060020a8c029650600195501615610d9257600160a060020a03808c166000908152600a60205260408120549091169d5093505b600086118015610dac5750601654610daa87826125cb565b115b1515610db757600080fd5b600160a060020a038d1615801590610de157508a600160a060020a03168d600160a060020a031614155b8015610e075750600354600160a060020a038e1660009081526005602052604090205410155b15610e5857610e1a601e548e8d876126db565b678ac7230489e80000601c5410158015610e3f5750683635c9adc5dea00000601c5411155b15610e5357610e53601c54878d60006130b4565b610ea3565b610e66601754601e546125cb565b601755601c54678ac7230489e800009010801590610e8f5750683635c9adc5dea00000601c5411155b15610ea357610ea3601c54878d60016130b4565b60006016541115610efd57610eba601654876125cb565b6016819055604060020a8b02811515610ecf57fe5b60188054929091049091019055601654604060020a8b02811515610eef57fe5b048602850385039450610f03565b60168690555b600160a060020a038b16600090815260056020526040902054610f2690876125cb565b600560008d600160a060020a0316600160a060020a031681526020019081526020016000208190555084866018540203925082601460008d600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508c600160a060020a03168b600160a060020a03167f022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5601c548960405191825260208201526040908101905180910390a3859b505b505050505050505050505092915050565b600160a060020a03811660009081526014602090815260408083205460068352818420546005845282852054601854600990955292852054604060020a93909101909302030490829061104390836125cb565b949350505050565b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b505050505081565b600160a060020a031660009081526014602052604090205490565b6000601e8180806111198685606460126125e5565b9250611125868461262a565b91506111308261263c565b9695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561118257600080fd5b50601755565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156111d057600080fd5b506002805460ff191660ff92909216919091179055565b6016545b90565b600080600080601654851115151561120557600080fd5b61120e856132d7565b925061121f836005606460126125e5565b915061122b838361262a565b95945050505050565b601a5460ff1681565b600160a060020a039182166000908152603260209081526040808320938352929052208054600190910154911691565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156112b557600080fd5b50600160a060020a039384166000908152603260209081526040808320958352949052929092208054600160a060020a03191691909316178255600190910155565b60008060008060008061132f42600760008a600160a060020a0316600160a060020a031681526020019081526020016000205461262a565b945061133e8562015180613346565b60025490945061135290859060ff1661335d565b600160a060020a03881660009081526006602052604090205490935061137c9084606460126125e5565b600160a060020a0388166000908152600660205260409020549092506113a290836125cb565b979650505050505050565b601281565b60196020526000908152604090205460ff1681565b60008060006113d6600161179e565b116113e057600080fd5b3391506113ed600061179e565b600160a060020a0383166000908152600960205260408120549192509011156114a757600160a060020a0382166000908152600960205260409020548190111561146c57600160a060020a0382166000908152600960209081526040808320546014909252909120805491839003604060020a029190910190556114a2565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918303604060020a029190910190555b6114cc565b600160a060020a03821660009081526014602052604090208054604060020a83020190555b600160a060020a038216600081815260086020818152604080842080546009845282862086905593909252929055929092019182156108fc0290839051600060405180830381858888f19350505050151561152657600080fd5b81600160a060020a03167fccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc8260405190815260200160405180910390a25050565b603260209081526000928352604080842090915290825290208054600190910154600160a060020a039091169082565b600080600080601654600014156115b6576559ad19f9900093506115ea565b6115c7670de0b6b3a76400006132d7565b92506115d8836005606460126125e5565b91506115e4838361262a565b90508093505b50505090565b60035481565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561163e57600080fd5b50600160a060020a03909116600090815260146020526040902055565b6000806000806000806000806000611671611ae2565b1161167b57600080fd5b601a5433975060ff161580156116a75750600160a060020a038716600090815260076020526040812054115b15156116b257600080fd5b600160a060020a0387166000908152600660209081526040808320546007909252909120549096506116e590429061262a565b94506116f48562015180613346565b60025490945061170890859060ff1661335d565b92506117188684606460126125e5565b915061172486836125cb565b9050611732601654836125cb565b601655600160a060020a03871660009081526005602052604090205461175890826125cb565b600160a060020a03909716600090815260056020908152604080832099909955600681528882208290556007905296872096909655509495945050505050565b60175490565b600033826117b4576117af81610ff0565b6117d8565b600160a060020a0381166000908152600860205260409020546117d682610ff0565b015b91505b50919050565b600160a060020a0330163190565b600160a060020a031660009081526005602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561185257600080fd5b50600160a060020a03909216600090815260066020908152604080832093909355600790522055565b600080600080611889611ae2565b1161189357600080fd5b601a5433925060ff161580156118c15750600160a060020a0382166000908152600560205260409020548411155b15156118cc57600080fd5b6118de84670de0b6b3a764000061262a565b600160a060020a0383166000908152600760209081526040808320429055600690915290205490915061191190826125cb565b600160a060020a038316600090815260066020908152604080832093909355600590522054611940908261262a565b600160a060020a0390921660009081526005602052604090209190915550919050565b600160a060020a031660009081526007602052604090205490565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff1615156119c657600080fd5b50601655565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611a1457600080fd5b50600355565b600080600080600060165460001415611a3b57655bdbe51f50009450611a72565b611a4c670de0b6b3a76400006132d7565b9350601e9250611a608484606460126125e5565b9150611a6c84836125cb565b90508094505b5050505090565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ac157600080fd5b50600091825260196020526040909120805460ff1916911515919091179055565b600033611aee816117ef565b91505b5090565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110e15780601f106110b6576101008083540402835291602001916110e1565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ba857600080fd5b50601a805460ff19169055565b600080600080600080611bc6611ae2565b11611bd057600080fd5b601a5433945060ff16158015611bfe5750600160a060020a0384166000908152600560205260409020548611155b1515611c0957600080fd5b6000611c15600161179e565b1115611c2357611c236113c7565b611c32866005606460126125e5565b9250611c3e868461262a565b9150611c49836132d7565b9050611c576016548461262a565b601655600160a060020a038416600090815260056020526040902054611c7d908761262a565b600160a060020a038086166000908152600560205260408082209390935590891681522054611cac90836125cb565b600160a060020a0388811660008181526005602090815260408083209590955560188054948a16835260149091528482208054948c02909403909355825491815292909220805492850290920190915554601654611d1b9190604060020a8402811515611d1557fe5b046125cb565b601855600160a060020a038088169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060019695505050505050565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611db457600080fd5b6001828051611dc792916020019061340e565b505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611e1557600080fd5b60175433925083901015611e2857600080fd5b600160a060020a03821683156108fc0284604051600060405180830381858888f193505050501515611e5957600080fd5b611e656017548461262a565b601755505050565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611eb657600080fd5b5050600160a060020a039a8b166000908152600a6020908152604080832080549d8f16600160a060020a03199e8f16179055600b825280832080549c8f169c8e169c909c17909b55600c81528a822080549a8e169a8d169a909a17909955600d89528981208054988d16988c1698909817909755600e88528887208054968c16968b1696909617909555600f87528786208054948b16948a1694909417909355601086528685208054928a16928916929092179091556011855285842080549189169188169190911790556012845284832080549188169187169190911790556013909252919091208054919093169116179055565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff161515611ff457600080fd5b6000828051611dc792916020019061340e565b60003360198282604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561205057600080fd5b5050600160a060020a03909416600090815260096020908152604080832095909555600881528482209390935560338352838120949094556005909152912055565b600081600114156120be5750600160a060020a038083166000908152600a602052604090205416612234565b81600214156120e85750600160a060020a038083166000908152600b602052604090205416612234565b81600314156121125750600160a060020a038083166000908152600c602052604090205416612234565b816004141561213c5750600160a060020a038083166000908152600d602052604090205416612234565b81600514156121665750600160a060020a038083166000908152600e602052604090205416612234565b81600614156121905750600160a060020a038083166000908152600f602052604090205416612234565b81600714156121ba5750600160a060020a0380831660009081526010602052604090205416612234565b81600814156121e45750600160a060020a0380831660009081526011602052604090205416612234565b816009141561220e5750600160a060020a0380831660009081526012602052604090205416612234565b81600a14156122345750600160a060020a03808316600090815260136020526040902054165b92915050565b600080600080600080600061224d611ae2565b1161225757600080fd5b33600160a060020a03811660009081526005602052604090205490965087111561228057600080fd5b86945061228c856132d7565b935061229d846005606460126125e5565b92506122a9848461262a565b91506122b76016548661262a565b601655600160a060020a0386166000908152600560205260409020546122dd908661262a565b600160a060020a03871660009081526005602090815260408083209390935560185460149091529181208054928802604060020a86020192839003905560165491925090111561234457612340601854601654604060020a8602811515611d1557fe5b6018555b85600160a060020a03167fc4823739c5787d2ca17e404aa47d5569ae71dfb49cbf21b3f6152ed238a31139868460405191825260208201526040908101905180910390a250505050505050565b60336020526000908152604090205481565b60185490565b33600160a060020a038116600090815260056020526040812054908111156123d4576123d48161223a565b6123dc6113c7565b5050565b60006117db34836108af565b336019600082604051600160a060020a0391909116606060020a028152601401604051908190039020815260208101919091526040016000205460ff16151561243457600080fd5b50601855565b60008060008061244a600161179e565b1161245457600080fd5b61245e600061179e565b33600160a060020a03811660009081526009602052604081205492955090935090111561251c57600160a060020a038216600090815260096020526040902054839011156124e157600160a060020a0382166000908152600960209081526040808320546014909252909120805491859003604060020a02919091019055612517565b600160a060020a03821660009081526009602090815260408083205460149092529091208054918503604060020a029190910190555b612541565b600160a060020a03821660009081526014602052604090208054604060020a85020190555b600160a060020a0382166000908152600860208181526040808420805460098452918520859055929091529082905593909301926125809084906108af565b905081600160a060020a03167fbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458848360405191825260208201526040908101905180910390a2505050565b6000828201838110156125da57fe5b8091505b5092915050565b600080600083600101600a0a86029150600a858381151561260257fe5b0460050181151561260f57fe5b049050670de0b6b3a764000087820204979650505050505050565b60008282111561263657fe5b50900390565b6016546000906d04ee2d6d415b85acef810000000090829064e8d4a510006126c86126c274015e531a0a1c872bad2ce16256fe82000000000000880269d3c21bcecceda10000006002860a02017208f7e32ce7bea5c6fe4820023a2000000000008502017a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000001613388565b8561262a565b8115156126d157fe5b0403949350505050565b601e848155829085906126f3908290606460126125e5565b601f55601e54612708906014606460126125e5565b602055601e5461271d90600f606460126125e5565b602155601e5461273290600a606460126125e5565b602255601e54612747906005606460126125e5565b602355601e5461275c906005606460126125e5565b602455601e54612771906005606460126125e5565b602555601e54612786906003606460126125e5565b602655601e5461279b906003606460126125e5565b602755601e546127b0906002606460126125e5565b602855600160a060020a038281166000908152600a602090815260408083208054600160a060020a0319168a861617908190559093168252600890522054601f546127fb91906125cb565b600160a060020a038084166000908152600a60209081526040808320549093168252600890522055601f5461283190829061262a565b90506001831515141561284a5761284a858360016133bd565b600160a060020a038086166000908152600a602090815260408083205460298054600160a060020a03199081169287169290921790819055600b845282852054602a80548416918816919091179055600c845282852054602b80548416918816919091179055600d845282852054602c80548416918816919091179055600e845282852054602d80548416918816919091179055600f845282852054602e805484169188169190911790556010845282852054602f805484169188169190911790556011845282852054603080548416918816919091179055601290935292205460318054909316908416179091551615612a0557600160a060020a038086166000908152600a60209081526040808320548685168452600b83528184208054600160a060020a031916918616919091179081905590931682526008815291902054905461299891906125cb565b600160a060020a038084166000908152600b602090815260408083205490931682526008815291902091909155546129d190829061262a565b905060018315151415612a0557600160a060020a038086166000908152600a6020526040902054612a0591168360026133bd565b602a54600160a060020a031615612ad857600160a060020a038086166000908152600b60209081526040808320548685168452600c83528184208054600160a060020a03191691861691909117908190559093168252600890522054602154612a6e91906125cb565b600160a060020a038084166000908152600c60209081526040808320549093168252600890522055602154612aa490829061262a565b905060018315151415612ad857600160a060020a038086166000908152600b6020526040902054612ad891168360036133bd565b602b54600160a060020a031615612bab57600160a060020a038086166000908152600c60209081526040808320548685168452600d83528184208054600160a060020a03191691861691909117908190559093168252600890522054602254612b4191906125cb565b600160a060020a038084166000908152600d60209081526040808320549093168252600890522055602254612b7790829061262a565b905060018315151415612bab57600160a060020a038086166000908152600c6020526040902054612bab91168360046133bd565b602c54600160a060020a031615612c7e57600160a060020a038086166000908152600d60209081526040808320548685168452600e83528184208054600160a060020a03191691861691909117908190559093168252600890522054602354612c1491906125cb565b600160a060020a038084166000908152600e60209081526040808320549093168252600890522055602354612c4a90829061262a565b905060018315151415612c7e57600160a060020a038086166000908152600d6020526040902054612c7e91168360056133bd565b602d54600160a060020a031615612d5157600160a060020a038086166000908152600e60209081526040808320548685168452600f83528184208054600160a060020a03191691861691909117908190559093168252600890522054602454612ce791906125cb565b600160a060020a038084166000908152600f60209081526040808320549093168252600890522055602454612d1d90829061262a565b905060018315151415612d5157600160a060020a038086166000908152600e6020526040902054612d5191168360066133bd565b602e54600160a060020a031615612e2457600160a060020a038086166000908152600f60209081526040808320548685168452601083528184208054600160a060020a03191691861691909117908190559093168252600890522054602554612dba91906125cb565b600160a060020a038084166000908152601060209081526040808320549093168252600890522055602554612df090829061262a565b905060018315151415612e2457600160a060020a038086166000908152600f6020526040902054612e2491168360076133bd565b602f54600160a060020a031615612ef757600160a060020a038086166000908152601060209081526040808320548685168452601183528184208054600160a060020a03191691861691909117908190559093168252600890522054602654612e8d91906125cb565b600160a060020a038084166000908152601160209081526040808320549093168252600890522055602654612ec390829061262a565b905060018315151415612ef757600160a060020a03808616600090815260106020526040902054612ef791168360086133bd565b603054600160a060020a031615612fca57600160a060020a038086166000908152601160209081526040808320548685168452601283528184208054600160a060020a03191691861691909117908190559093168252600890522054602754612f6091906125cb565b600160a060020a038084166000908152601260209081526040808320549093168252600890522055602754612f9690829061262a565b905060018315151415612fca57600160a060020a03808616600090815260116020526040902054612fca91168360096133bd565b603154600160a060020a03161561309d57600160a060020a038086166000908152601260209081526040808320548685168452601383528184208054600160a060020a0319169186169190911790819055909316825260089052205460285461303391906125cb565b600160a060020a03808416600090815260136020908152604080832054909316825260089052205560285461306990829061262a565b90506001831515141561309d57600160a060020a0380861660009081526012602052604090205461309d911683600a6133bd565b6130a9601754826125cb565b601755505050505050565b6000678ac7230489e8000085108015906130d657506801158e460913d0000085105b156130ed576130ea846002606460126125e5565b90505b6801158e460913d00000851015801561310e57506802b5e3af16b188000085105b1561312557613122846003606460126125e5565b90505b6802b5e3af16b1880000851015801561314657506804563918244f40000085105b1561315d5761315a846005606460126125e5565b90505b6804563918244f400000851015801561317e575068056bc75e2d6310000085105b1561319557613192846007606460126125e5565b90505b68056bc75e2d6310000085101580156131b75750683635c9adc5dea000008511155b156131ce576131cb846008606460126125e5565b90505b60018215151415613266577318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a4895461322290826125cb565b7318bbbebc5b7658c7acad57381084fa63f9fad59060005260056020527f82519aa480a5258bb027b904c36167af7a8b9d54eb604f714e7450f01d98a489556132c1565b600160a060020a038084166000908152600a6020908152604080832054909316825260059052205461329890826125cb565b600160a060020a038085166000908152600a602090815260408083205490931682526005905220555b6132cd601654826125cb565b6016555050505050565b601654600090671bc16d674ec800008381019181019083906133336559ad19f99000828504650145f680b00002018702600283671bc16d674ec7ffff1982890a8b90030104650145f680b0000281151561332d57fe5b0461262a565b81151561333c57fe5b0495945050505050565b600080828481151561335457fe5b04949350505050565b60008083151561337057600091506125de565b5082820282848281151561338057fe5b04146125da57fe5b80600260018201045b818110156117db5780915060028182858115156133aa57fe5b04018115156133b557fe5b049050613391565b600160a060020a03928316600090815260336020908152604080832080546001908101918290556032845282852091855292529091208054600160a060020a03191693909416929092178355910155565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061344f57805160ff191683800117855561347c565b8280016001018555821561347c579182015b8281111561347c578251825591602001919060010190613461565b50611af1926111eb9250905b80821115611af157600081556001016134885600a165627a7a723058204b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e010029
Deployed Bytecode Sourcemap
1250:41826:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10375:30;10390:9;10401:3;10375:14;:30::i;:::-;;1250:41826;19404:414;;;;;;;;;;-1:-1:-1;;;;;19404:414:0;;;;;;;;;;;;;;;;;;;;1423:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1423:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9775:132;;;;;;;;;;-1:-1:-1;;;;;9775:132:0;;;;;21043:499;;;;;;;;;;;;;;9186:134;;;;;;;;;;;;;;;;16778:144;;;;;;;;;;;;;;;;18389:90;;;;;;;;;;;;21553:437;;;;;;;;;;;;;;4062:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25640:211;;;;;;;;;;-1:-1:-1;;;;;25640:211:0;;;;;;;;;;-1:-1:-1;;;;;25640:211:0;;;;;;;;;;;;;;;;;;;;9919:272;;;;;;;;;;-1:-1:-1;;;;;9919:272:0;;;;;;;;;;;;;;;22727:633;;;;;;;;;;-1:-1:-1;;;;;22727:633:0;;;;;1569:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4009:46;;;;;;;;;;;;;;12195:1148;;;;;;;;;;;;25505:66;;;;;;;;;;-1:-1:-1;;;;;25505:66:0;;;;;;;19900:478;;;;;;;;;;;;2259:62;;;;;;;;;;;;9601:162;;;;;;;;;;-1:-1:-1;;;;;9601:162:0;;;;;;;23519:1178;;;;;;;;;;;;18223:101;;;;;;;;;;;;18802:286;;;;;;;;;;;;;;;;18053:96;;;;;;;;;;;;19176:137;;;;;;;;;;-1:-1:-1;;;;;19176:137:0;;;;;9332:257;;;;;;;;;;-1:-1:-1;;;;;9332:257:0;;;;;;;;;22002:691;;;;;;;;;;;;;;23372:135;;;;;;;;;;-1:-1:-1;;;;;23372:135:0;;;;;7254:150;;;;;;;;;;;;;;17098:155;;;;;;;;;;;;;;20461:571;;;;;;;;;;;;16934:152;;;;;;;;;;;;;;;;;;18558:161;;;;;;;;;;;;1499:63;;;;;;;;;;;;16646:120;;;;;;;;;;;;14827:1656;;;;;;;;;;-1:-1:-1;;;;;14827:1656:0;;;;;;;17397:126;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17397:126:0;;-1:-1:-1;17397:126:0;;-1:-1:-1;;;;;;17397:126:0;17535:324;;;;;;;;;;;;;;8008:900;;;;;;;;;;-1:-1:-1;;;;;8008:900:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17265:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17265:120:0;;-1:-1:-1;17265:120:0;;-1:-1:-1;;;;;;17265:120:0;7416:574;;;;;;;;;;-1:-1:-1;;;;;7416:574:0;;;;;;;;;;;;;26204:1052;;;;;;;;;;-1:-1:-1;;;;;26204:1052:0;;;;;;;;;;-1:-1:-1;;;;;26204:1052:0;;;;;;;;;;;;;;13411:1329;;;;;;;;;;;;;;25578:49;;;;;;;;;;-1:-1:-1;;;;;25578:49:0;;;;;9067:107;;;;;;;;;;;;11830:292;;;;;;;;;;;;10203:123;;-1:-1:-1;;;;;10203:123:0;;;;;8920:135;;;;;;;;;;;;;;10497:1263;;;;;;;;;;;;37047:3832;37170:7;37213:24;37648:18;37751:21;37843:19;37947:22;38029:23;38111:12;38182:20;40577:22;37134:17;4742:24;4769:10;4742:37;;4794:15;;;;;;;;;;;:86;;;;;2544:7;4840:17;4815:22;:20;:22::i;:::-;:42;4814:64;;4794:86;4790:823;;;-1:-1:-1;;;;;4982:30:0;;;;;;:12;:30;;;;;;;;:38;;:30;:38;:232;;;;-1:-1:-1;;;;;;5122:45:0;;;;;;:27;:45;;;;;;2472:7;5122:65;;;5121:93;;4982:232;4896:333;;;;;;;;-1:-1:-1;;;;;5355:45:0;;;;;;:27;:45;;;;;;5342:78;;5402:17;5342:12;:78::i;:::-;-1:-1:-1;;;;;5294:45:0;;;;;;:27;:45;;;;;:126;37272:6;:55;;;37251:10;;-1:-1:-1;37386:45:0;37310:17;1827:1;37424:3;37428:2;37386:16;:45::i;:::-;37348:12;:83;;;37493:16;;37480:44;;:12;:44::i;:::-;37442:16;:82;37600:6;;37583:44;;1760:2;37620:3;37624:2;37583:16;:44::i;:::-;37545:14;:82;37703:6;;37686:44;;1694:1;37723:3;37727:2;37686:16;:44::i;:::-;37898:6;;37648:82;;-1:-1:-1;37789:43:0;;-1:-1:-1;37881:45:0;;37789:43;37919:3;37923:2;37881:16;:45::i;:::-;37843:83;;37985:33;37998:6;;38006:11;37985:12;:33::i;:::-;37947:71;;38067:33;38085:14;38067:17;:33::i;:::-;-1:-1:-1;;;;;38258:39:0;;;;;;;:21;:39;;;;;;38029:71;;-1:-1:-1;;;;38149:22:0;;;-1:-1:-1;38220:4:0;;-1:-1:-1;38258:39:0;:85;38255:244;;-1:-1:-1;;;;;38394:39:0;;;;;;;:21;:39;;;;;;;;;;-1:-1:-1;38394:39:0;-1:-1:-1;38255:244:0;38545:1;38527:15;:19;:82;;;;-1:-1:-1;38596:12:0;;38551:42;38564:15;38596:12;38551;:42::i;:::-;:57;38527:82;38519:91;;;;;;;;-1:-1:-1;;;;;38727:57:0;;;;;;:134;;;38845:16;-1:-1:-1;;;;;38830:31:0;:11;-1:-1:-1;;;;;38830:31:0;;;38727:134;:205;;;;-1:-1:-1;38914:18:0;;-1:-1:-1;;;;;38878:32:0;;;;;;:19;:32;;;;;;:54;;38727:205;38665:935;;;38996:76;39015:14;;39030:11;39042:16;39059:12;38996:18;:76::i;:::-;39100:8;39090:6;;:18;;:42;;;;;39122:10;39112:6;;:20;;39090:42;39087:147;;;39153:65;39172:6;;39179:15;39195:16;39212:5;39153:18;:65::i;:::-;38665:935;;;39382:46;39395:16;;39413:14;;39382:12;:46::i;:::-;39348:16;:80;39446:6;;39456:8;39446:18;;;;;:42;;;39478:10;39468:6;;:20;;39446:42;39443:146;;;39509:64;39528:6;;39535:15;39551:16;39568:4;39509:18;:64::i;:::-;39679:1;39664:12;;:16;39661:711;;;39769:43;39782:12;;39796:15;39769:12;:43::i;:::-;39735:12;:77;;;-1:-1:-1;;;39987:22:0;;:39;;;;;;;39951:15;:76;;39987:39;;;;39951:76;;;;;40223:12;;-1:-1:-1;;;40197:22:0;;:39;;;;;;;;40178:15;:59;40172:4;:66;40164:4;:75;40130:109;;39661:711;;;40311:12;:49;;;39661:711;-1:-1:-1;;;;;40511:37:0;;;;;;:19;:37;;;;;;40498:68;;40550:15;40498:12;:68::i;:::-;40458:19;:37;40478:16;-1:-1:-1;;;;;40458:37:0;-1:-1:-1;;;;;40458:37:0;;;;;;;;;;;;:108;;;;40663:4;40644:15;40626;;:33;40625:42;40577:91;;40718:15;40679:10;:28;40690:16;-1:-1:-1;;;;;40679:28:0;-1:-1:-1;;;;;40679:28:0;;;;;;;;;;;;;:54;;;;;;;;;;;40826:11;-1:-1:-1;;;;;40767:71:0;40783:16;-1:-1:-1;;;;;40767:71:0;;40801:6;;40809:15;40767:71;;;;;;;;;;;;;;;;;;;;40856:15;40849:22;;4790:823;;;5558:15;:23;;-1:-1:-1;;5558:23:0;;;37272:6;:55;;;37251:10;;-1:-1:-1;37386:45:0;37310:17;1827:1;37424:3;37428:2;37386:16;:45::i;:::-;37348:12;:83;;;37493:16;;37480:44;;:12;:44::i;:::-;37442:16;:82;37600:6;;37583:44;;1760:2;37620:3;37624:2;37583:16;:44::i;:::-;37545:14;:82;37703:6;;37686:44;;1694:1;37723:3;37727:2;37686:16;:44::i;:::-;37898:6;;37648:82;;-1:-1:-1;37789:43:0;;-1:-1:-1;37881:45:0;;37789:43;37919:3;37923:2;37881:16;:45::i;:::-;37843:83;;37985:33;37998:6;;38006:11;37985:12;:33::i;:::-;37947:71;;38067:33;38085:14;38067:17;:33::i;:::-;-1:-1:-1;;;;;38258:39:0;;;;;;;:21;:39;;;;;;38029:71;;-1:-1:-1;;;;38149:22:0;;;-1:-1:-1;38220:4:0;;-1:-1:-1;38258:39:0;:85;38255:244;;-1:-1:-1;;;;;38394:39:0;;;;;;;:21;:39;;;;;;;;;;-1:-1:-1;38394:39:0;-1:-1:-1;38255:244:0;38545:1;38527:15;:19;:82;;;;-1:-1:-1;38596:12:0;;38551:42;38564:15;38596:12;38551;:42::i;:::-;:57;38527:82;38519:91;;;;;;;;-1:-1:-1;;;;;38727:57:0;;;;;;:134;;;38845:16;-1:-1:-1;;;;;38830:31:0;:11;-1:-1:-1;;;;;38830:31:0;;;38727:134;:205;;;;-1:-1:-1;38914:18:0;;-1:-1:-1;;;;;38878:32:0;;;;;;:19;:32;;;;;;:54;;38727:205;38665:935;;;38996:76;39015:14;;39030:11;39042:16;39059:12;38996:18;:76::i;:::-;39100:8;39090:6;;:18;;:42;;;;;39122:10;39112:6;;:20;;39090:42;39087:147;;;39153:65;39172:6;;39179:15;39195:16;39212:5;39153:18;:65::i;:::-;38665:935;;;39382:46;39395:16;;39413:14;;39382:12;:46::i;:::-;39348:16;:80;39446:6;;39456:8;39446:18;;;;;:42;;;39478:10;39468:6;;:20;;39446:42;39443:146;;;39509:64;39528:6;;39535:15;39551:16;39568:4;39509:18;:64::i;:::-;39679:1;39664:12;;:16;39661:711;;;39769:43;39782:12;;39796:15;39769:12;:43::i;:::-;39735:12;:77;;;-1:-1:-1;;;39987:22:0;;:39;;;;;;;39951:15;:76;;39987:39;;;;39951:76;;;;;40223:12;;-1:-1:-1;;;40197:22:0;;:39;;;;;;;;40178:15;:59;40172:4;:66;40164:4;:75;40130:109;;39661:711;;;40311:12;:49;;;39661:711;-1:-1:-1;;;;;40511:37:0;;;;;;:19;:37;;;;;;40498:68;;40550:15;40498:12;:68::i;:::-;40458:19;:37;40478:16;-1:-1:-1;;;;;40458:37:0;-1:-1:-1;;;;;40458:37:0;;;;;;;;;;;;:108;;;;40663:4;40644:15;40626;;:33;40625:42;40577:91;;40718:15;40679:10;:28;40690:16;-1:-1:-1;;;;;40679:28:0;-1:-1:-1;;;;;40679:28:0;;;;;;;;;;;;;:54;;;;;;;;;;;40826:11;-1:-1:-1;;;;;40767:71:0;40783:16;-1:-1:-1;;;;;40767:71:0;;40801:6;;40809:15;40767:71;;;;;;;;;;;;;;;;;;;;40856:15;40849:22;;5596:1;37047:3832;;;;;;;;;;;;;;;:::o;19404:414::-;-1:-1:-1;;;;;19641:28:0;;19471:7;19641:28;;;:10;:28;;;;;;;;;19599:19;:37;;;;;;19559:19;:37;;;;;;19540:15;;19730:11;:29;;;;;;;-1:-1:-1;;;19559:77:0;;;;19540:97;;;19531:138;19520:162;;19471:7;;19717:63;;19520:162;19717:12;:63::i;:::-;19693:87;19404:414;-1:-1:-1;;;;19404:414:0:o;1423:69::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9775:132::-;-1:-1:-1;;;;;9874:25:0;9848:6;9874:25;;;:10;:25;;;;;;;9775:132::o;21043:499::-;21122:7;21180:43;21122:7;;;21272:55;21289:16;21180:43;21320:3;21324:2;21272:16;:55::i;:::-;21234:93;;21376:43;21389:16;21407:11;21376:12;:43::i;:::-;21338:81;;21468:33;21486:14;21468:17;:33::i;:::-;21430:71;21043:499;-1:-1:-1;;;;;;21043:499:0:o;9186:134::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;9270:16:0;:42;9186:134::o;16778:144::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;16864:9:0;:50;;-1:-1:-1;;16864:50:0;;;;;;;;;;;;16778:144::o;18389:90::-;18459:12;;18389:90;;:::o;21553:437::-;21631:7;21700:17;21781:18;21877:22;21676:12;;21659:13;:29;;21651:38;;;;;;;;21738:32;21756:13;21738:17;:32::i;:::-;21700:70;-1:-1:-1;21819:47:0;21700:70;1694:1;21859:3;21863:2;21819:16;:47::i;:::-;21781:85;;21915:35;21928:9;21939:10;21915:12;:35::i;:::-;21877:73;21553:437;-1:-1:-1;;;;;21553:437:0:o;4062:35::-;;;;;;:::o;25640:211::-;-1:-1:-1;;;;;25757:22:0;;;25723:7;25757:22;;;:7;:22;;;;;;;;:30;;;;;;;:45;;;25803:39;;;;25757:45;;;25640:211::o;9919:272::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;10060:22:0;;;;;;;:7;:22;;;;;;;;:30;;;;;;;;;;:62;;-1:-1:-1;;;;;;10060:62:0;;;;;;;;-1:-1:-1;10133:39:0;;;:50;9919:272::o;22727:633::-;22801:7;22820:16;22918:17;23018:18;23101:17;23223:20;22858:49;22871:3;22876:12;:30;22889:16;-1:-1:-1;;;;;22876:30:0;-1:-1:-1;;;;;22876:30:0;;;;;;;;;;;;;22858:12;:49::i;:::-;22820:87;;22956:29;22969:8;22979:5;22956:12;:29::i;:::-;23080:9;;22918:67;;-1:-1:-1;23056:34:0;;22918:67;;23080:9;;23056:12;:34::i;:::-;-1:-1:-1;;;;;23156:37:0;;;;;;:19;:37;;;;;;23018:72;;-1:-1:-1;23139:73:0;;23018:72;23205:3;23209:2;23139:16;:73::i;:::-;-1:-1:-1;;;;;23274:37:0;;;;;;:19;:37;;;;;;23101:111;;-1:-1:-1;23261:61:0;;23101:111;23261:12;:61::i;:::-;23223:99;22727:633;-1:-1:-1;;;;;;;22727:633:0:o;1569:60::-;1627:2;1569:60;:::o;4009:46::-;;;;;;;;;;;;;;;:::o;12195:1148::-;12269:24;12328:18;4457:1;4437:17;4449:4;4437:11;:17::i;:::-;:21;4429:30;;;;;;12307:10;12269:48;;12366:18;12378:5;12366:11;:18::i;:::-;-1:-1:-1;;;;;12470:29:0;;12502:1;12470:29;;;:11;:29;;;;;;12328:56;;-1:-1:-1;12470:33:0;;12467:507;;;-1:-1:-1;;;;;12523:29:0;;;;;;:11;:29;;;;;;:42;;;12520:337;;;-1:-1:-1;;;;;12637:29:0;;;;;;:11;:29;;;;;;;;;12586:10;:28;;;;;;:107;;12637:42;;;;-1:-1:-1;;;12636:56:0;12586:107;;;;;;12520:337;;;-1:-1:-1;;;;;12798:29:0;;;;;;:11;:29;;;;;;;;;12734:10;:28;;;;;;:107;;12785:42;;;-1:-1:-1;;;12784:56:0;12734:107;;;;;;12520:337;12467:507;;;-1:-1:-1;;;;;12889:28:0;;;;;;:10;:28;;;;;:73;;-1:-1:-1;;;12939:22:0;;12889:73;;;12467:507;-1:-1:-1;;;;;13050:34:0;;;;;;:16;:34;;;;;;;;;;13095:11;:29;;;;;:39;;;13145:34;;;;:39;;;13011:73;;;;;13224:37;;;;;13011:73;;13224:37;;;;;;;;;;;;;;;;;;;;;;;;;13306:16;-1:-1:-1;;;;;13295:40:0;;13324:10;13295:40;;;;;;;;;;;;;;12195:1148;;:::o;25505:66::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25505:66:0;;;;;:::o;19900:478::-;19941:7;20086:17;20158:18;20254:22;19964:12;;19980:1;19964:17;19961:410;;;20004:49;;-1:-1:-1;19997:56:0;;19961:410;20120:23;20138:4;20120:17;:23::i;:::-;20086:57;-1:-1:-1;20192:47:0;20086:57;1694:1;20232:3;20236:2;20192:16;:47::i;:::-;20158:81;;20288:35;20301:9;20312:10;20288:12;:35::i;:::-;20254:69;;20345:14;20338:21;;19961:410;19900:478;;;;:::o;2259:62::-;;;;:::o;9601:162::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;9704:25:0;;;;;;;:10;:25;;;;;:51;9601:162::o;23519:1178::-;23575:4;23591:24;23775:23;23861:16;23959:17;24037:18;24120:17;24220:20;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;23710:15;;23629:10;;-1:-1:-1;23710:15:0;;23709:16;:54;;;;-1:-1:-1;;;;;;23729:30:0;;23762:1;23729:30;;;:12;:30;;;;;;:34;23709:54;23701:63;;;;;;;;-1:-1:-1;;;;;23813:37:0;;;;;;:19;:37;;;;;;;;;23917:12;:30;;;;;;;23813:37;;-1:-1:-1;23899:49:0;;23912:3;;23899:12;:49::i;:::-;23861:87;;23997:29;24010:8;24020:5;23997:12;:29::i;:::-;24099:9;;23959:67;;-1:-1:-1;24075:34:0;;23959:67;;24099:9;;24075:12;:34::i;:::-;24037:72;;24158:51;24175:15;24191:10;24202:3;24206:2;24158:16;:51::i;:::-;24120:89;;24258:39;24271:15;24287:9;24258:12;:39::i;:::-;24220:77;;24391:37;24404:12;;24418:9;24391:12;:37::i;:::-;24353:12;:75;-1:-1:-1;;;;;24525:37:0;;;;;;:19;:37;;;;;;24512:65;;24564:12;24512;:65::i;:::-;-1:-1:-1;;;;;24472:37:0;;;;;;;:19;:37;;;;;;;;:105;;;;24588:19;:37;;;;;:41;;;24640:12;:30;;;;;:39;;;;-1:-1:-1;23519:1178:0;;;-1:-1:-1;;;;;23519:1178:0:o;18223:101::-;18300:16;;18223:101;:::o;18802:286::-;18871:7;18929:10;18957:21;:122;;19050:29;19062:16;19050:11;:29::i;:::-;18957:122;;;-1:-1:-1;;;;;19013:34:0;;;;;;:16;:34;;;;;;18981:29;19030:16;18981:11;:29::i;:::-;:66;18957:122;18950:129;;18802:286;;;;;:::o;18053:96::-;-1:-1:-1;;;;;18129:4:0;:12;;18053:96;:::o;19176:137::-;-1:-1:-1;;;;;19268:37:0;19241:7;19268:37;;;:19;:37;;;;;;;19176:137::o;9332:257::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;9459:34:0;;;;;;;:19;:34;;;;;;;;:60;;;;9530:12;:27;;;:51;9332:257::o;22002:691::-;22080:4;22096:24;22302:33;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;22215:15;;22134:10;;-1:-1:-1;22215:15:0;;22214:16;:76;;;;-1:-1:-1;;;;;;22253:37:0;;;;;;:19;:37;;;;;;22234:56;;;22214:76;22206:85;;;;;;;;22340:35;22353:15;22370:4;22340:12;:35::i;:::-;-1:-1:-1;;;;;22386:30:0;;;;;;:12;:30;;;;;;;;22424:3;22386:41;;22491:19;:37;;;;;;22302:73;;-1:-1:-1;22478:78:0;;22302:73;22478:12;:78::i;:::-;-1:-1:-1;;;;;22438:37:0;;;;;;:19;:37;;;;;;;;:118;;;;22620:19;:37;;;;22607:78;;22659:25;22607:12;:78::i;:::-;-1:-1:-1;;;;;22567:37:0;;;;;;;:19;:37;;;;;:118;;;;-1:-1:-1;22002:691:0;;-1:-1:-1;22002:691:0:o;23372:135::-;-1:-1:-1;;;;;23469:30:0;23443:7;23469:30;;;:12;:30;;;;;;;23372:135::o;7254:150::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;7342:12:0;:54;7254:150::o;17098:155::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;17192:18:0;:53;17098:155::o;20461:571::-;20501:7;20646:17;20718:21;20810:19;20907:22;20524:12;;20540:1;20524:17;20521:504;;;20564:49;;-1:-1:-1;20557:56:0;;20521:504;20680:23;20698:4;20680:17;:23::i;:::-;20646:57;-1:-1:-1;20752:43:0;;-1:-1:-1;20844:48:0;20646:57;20752:43;20885:3;20889:2;20844:16;:48::i;:::-;20810:82;;20941:36;20954:9;20965:11;20941:12;:36::i;:::-;20907:70;;20999:14;20992:21;;20521:504;20461:571;;;;;:::o;16934:152::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;17033:27:0;;;;:14;:27;;;;;;:45;;-1:-1:-1;;17033:45:0;;;;;;;;;;16934:152::o;18558:161::-;18598:7;18656:10;18684:27;18656:10;18684:9;:27::i;:::-;18677:34;;18558:161;;;:::o;1499:63::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16646:120;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;16715:15:0;:43;;-1:-1:-1;;16715:43:0;;;16646:120::o;14827:1656::-;14922:4;14939:24;15351:17;15453:20;15542:18;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;15058:15;;14977:10;;-1:-1:-1;15058:15:0;;15057:16;:76;;;;-1:-1:-1;;;;;;15096:37:0;;;;;;:19;:37;;;;;;15077:56;;;15057:76;15049:85;;;;;;;;15221:1;15201:17;15213:4;15201:11;:17::i;:::-;:21;15198:36;;;15224:10;:8;:10::i;:::-;15389:53;15406:15;1694:1;15435:3;15439:2;15389:16;:53::i;:::-;15351:91;;15491:40;15504:15;15521:9;15491:12;:40::i;:::-;15453:78;;15580:28;15598:9;15580:17;:28::i;:::-;15542:66;;15689:37;15702:12;;15716:9;15689:12;:37::i;:::-;15651:12;:75;-1:-1:-1;;;;;15818:37:0;;;;;;:19;:37;;;;;;15805:68;;15857:15;15805:12;:68::i;:::-;-1:-1:-1;;;;;15765:37:0;;;;;;;:19;:37;;;;;;:108;;;;15935:31;;;;;;;15922:59;;15968:12;15922;:59::i;:::-;-1:-1:-1;;;;;15884:31:0;;;;;;;:19;:31;;;;;;;;:97;;;;16078:15;;;16029:28;;;;;:10;:28;;;;;;:83;;16078:33;;;16029:83;;;;;;16172:15;;16123:22;;;;;;;:80;;16172:30;;;16123:80;;;;;;16310:15;16354:12;;16297:70;;16310:15;-1:-1:-1;;;16328:22:0;;16327:39;;;;;;;;16297:12;:70::i;:::-;16259:15;:108;-1:-1:-1;;;;;16401:52:0;;;;;;;16440:12;16401:52;;;;;;;;;;;;;;-1:-1:-1;16471:4:0;;14827:1656;-1:-1:-1;;;;;;14827:1656:0:o;17397:126::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17470:6;17508:7;;17470:45;;;;;;;;:::i;:::-;;17397:126;;:::o;17535:324::-;17626:21;4576:10;4605:14;17626:21;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17681:16;;17652:10;;-1:-1:-1;17681:35:0;;;;17673:44;;;;;;-1:-1:-1;;;;;17728:22:0;;:39;;;;17751:15;17728:39;;;;;;;;;;;;;;;;;;;;;;;;;;17804:47;17817:16;;17835:15;17804:12;:47::i;:::-;17778:16;:73;-1:-1:-1;;;17535:324:0:o;8008:900::-;8254:25;4576:10;4605:14;8254:25;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;;8319:40:0;;;;;;;:21;:40;;;;;;;;:47;;;;;-1:-1:-1;;;;;;8319:47:0;;;;;;8377:21;:40;;;;;:47;;;;;;;;;;;;;;;8435:21;:40;;;;;:47;;;;;;;;;;;;;;;8493:21;:40;;;;;:47;;;;;;;;;;;;;;;8551:21;:40;;;;;:47;;;;;;;;;;;;;;;8609:21;:40;;;;;:47;;;;;;;;;;;;;;;8667:21;:40;;;;;:47;;;;;;;;;;;;;;;8725:21;:40;;;;;:47;;;;;;;;;;;;;;8783:21;:40;;;;;:47;;;;;;;;;;;;;;8841:22;:41;;;;;;;:49;;;;;;;;;;;8008:900::o;17265:120::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;17334:4;17372:5;;17334:43;;;;;;;;:::i;7416:574::-;7620:25;4576:10;4605:14;7620:25;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;;;;;;;7685:30:0;;;;;;;:11;:30;;;;;;;;:54;;;;7760:16;:35;;;;;:59;;;;7840:14;:33;;;;;:57;;;;7918:19;:38;;;;;:54;7416:574::o;26204:1052::-;26279:10;26305:6;26315:1;26305:11;26302:926;;;-1:-1:-1;;;;;;26338:39:0;;;;;;;:21;:39;;;;;;;26302:926;;;26398:6;26408:1;26398:11;26395:833;;;-1:-1:-1;;;;;;26431:39:0;;;;;;;:21;:39;;;;;;;26395:833;;;26491:6;26501:1;26491:11;26488:740;;;-1:-1:-1;;;;;;26524:39:0;;;;;;;:21;:39;;;;;;;26488:740;;;26584:6;26594:1;26584:11;26581:647;;;-1:-1:-1;;;;;;26617:39:0;;;;;;;:21;:39;;;;;;;26581:647;;;26677:6;26687:1;26677:11;26674:554;;;-1:-1:-1;;;;;;26710:39:0;;;;;;;:21;:39;;;;;;;26674:554;;;26770:6;26780:1;26770:11;26767:461;;;-1:-1:-1;;;;;;26803:39:0;;;;;;;:21;:39;;;;;;;26767:461;;;26863:6;26873:1;26863:11;26860:368;;;-1:-1:-1;;;;;;26896:39:0;;;;;;;:21;:39;;;;;;;26860:368;;;26956:6;26966:1;26956:11;26953:275;;;-1:-1:-1;;;;;;26989:39:0;;;;;;;:21;:39;;;;;;;26953:275;;;27049:6;27059:1;27049:11;27046:182;;;-1:-1:-1;;;;;;27082:39:0;;;;;;;:21;:39;;;;;;;27046:182;;;27142:6;27152:2;27142:12;27139:89;;;-1:-1:-1;;;;;;27176:40:0;;;;;;;:22;:40;;;;;;;27139:89;26204:1052;;;;:::o;13411:1329::-;13485:24;13620:15;13684:17;13759:18;13855:22;14204;4329:1;4316:10;:8;:10::i;:::-;:14;4308:23;;;;;;13523:10;-1:-1:-1;;;;;13571:37:0;;;;;;:19;:37;;;;;;13523:10;;-1:-1:-1;13552:56:0;;;13544:65;;;;;;13658:15;13620:53;;13722:26;13740:7;13722:17;:26::i;:::-;13684:64;-1:-1:-1;13797:47:0;13684:64;1694:1;13837:3;13841:2;13797:16;:47::i;:::-;13759:85;;13893:35;13906:9;13917:10;13893:12;:35::i;:::-;13855:73;;14010:35;14023:12;;14037:7;14010:12;:35::i;:::-;13972:12;:73;-1:-1:-1;;;;;14109:37:0;;;;;;:19;:37;;;;;;14096:60;;14148:7;14096:12;:60::i;:::-;-1:-1:-1;;;;;14056:37:0;;;;;;:19;:37;;;;;;;;:100;;;;14252:15;;14320:10;:28;;;;;;:54;;14252:25;;;-1:-1:-1;;;14281:26:0;;14252:56;14320:54;;;;;;14439:12;;14252:56;;-1:-1:-1;14439:16:0;;14435:210;;;14563:70;14576:15;;14620:12;;-1:-1:-1;;;14594:10:0;:22;14593:39;;;;;;14563:70;14529:15;:104;14435:210;14690:16;-1:-1:-1;;;;;14678:54:0;;14708:7;14717:14;14678:54;;;;;;;;;;;;;;;;;;;;13411:1329;;;;;;;:::o;25578:49::-;;;;;;;;;;;;;:::o;9067:107::-;9151:15;;9067:107;:::o;11830:292::-;11957:10;-1:-1:-1;;;;;12016:37:0;;11919:24;12016:37;;;:19;:37;;;;;;;12067:11;;12064:29;;;12080:13;12085:7;12080:4;:13::i;:::-;12104:10;:8;:10::i;:::-;11830:292;;:::o;10203:123::-;10260:7;10280:38;10295:9;10306:11;10280:14;:38::i;8920:135::-;4576:10;4605:14;4549:24;4576:10;4620:27;;-1:-1:-1;;;;;4620:27:0;;;;-1:-1:-1;;;4620:27:0;;;;;;;;;;;;;4605:43;;;;;;;;;;;;;;;;4597:52;;;;;;;;-1:-1:-1;9006:15:0;:41;8920:135::o;10497:1263::-;10576:18;10728:24;11596:15;4457:1;4437:17;4449:4;4437:11;:17::i;:::-;:21;4429:30;;;;;;10614:18;10626:5;10614:11;:18::i;:::-;10766:10;-1:-1:-1;;;;;10790:29:0;;10822:1;10790:29;;;:11;:29;;;;;;10576:56;;-1:-1:-1;10766:10:0;;-1:-1:-1;10790:33:0;;10787:507;;;-1:-1:-1;;;;;10843:29:0;;;;;;:11;:29;;;;;;:42;;;10840:337;;;-1:-1:-1;;;;;10957:29:0;;;;;;:11;:29;;;;;;;;;10906:10;:28;;;;;;:107;;10957:42;;;;-1:-1:-1;;;10956:56:0;10906:107;;;;;;10840:337;;;-1:-1:-1;;;;;11118:29:0;;;;;;:11;:29;;;;;;;;;11054:10;:28;;;;;;:107;;11105:42;;;-1:-1:-1;;;11104:56:0;11054:107;;;;;;10840:337;10787:507;;;-1:-1:-1;;;;;11209:28:0;;;;;;:10;:28;;;;;:73;;-1:-1:-1;;;11259:22:0;;11209:73;;;10787:507;-1:-1:-1;;;;;11375:34:0;;;;;;:16;:34;;;;;;;;;;11420:11;:29;;;;;:39;;;11470:34;;;;:39;;;;11336:73;;;;;11634:31;;11336:73;;11634:14;:31::i;:::-;11596:69;;11714:16;-1:-1:-1;;;;;11699:53:0;;11732:10;11744:7;11699:53;;;;;;;;;;;;;;;;;;;;10497:1263;;;:::o;1096:147::-;1154:7;1186:5;;;1209:6;;;;1202:14;;;;1234:1;1227:8;;1096:147;;;;;;:::o;147:306::-;248:13;274:15;335:14;312:9;322:1;312:11;305:2;:19;293:9;:31;274:50;;388:2;368:11;355:10;:24;;;;;;;;383:1;354:30;353:37;;;;;;;;;-1:-1:-1;425:19:0;409:15;;;:35;;147:306;-1:-1:-1;;;;;;;147:306:0:o;967:123::-;1025:7;1052:6;;;;1045:14;;;;-1:-1:-1;1077:5:0;;;967:123::o;41175:919::-;42028:12;;41243:7;;41301:25;;41243:7;;2037:14;41420:555;41456:457;41602:52;;;41718:27;41827:1;41748:15;;41717:47;41517:248;41827:45;:58;;41517:369;41518:21;41517:369;41456:4;:457::i;:::-;41938:18;41420:12;:555::i;:::-;41401:614;;;;;;;;41386:655;;41175:919;-1:-1:-1;;;;41175:919:0:o;27268:8275::-;27514:14;:51;;;27434:7;;27486:17;;27620:42;;27486:17;;27655:3;27659:2;27620:16;:42::i;:::-;27586:8;:76;27724:14;;27707:42;;27739:2;27742:3;27746:2;27707:16;:42::i;:::-;27673:8;:76;27811:14;;27794:42;;27826:2;27829:3;27833:2;27794:16;:42::i;:::-;27760:8;:76;27898:14;;27881:42;;27913:2;27916:3;27920:2;27881:16;:42::i;:::-;27847:8;:76;27985:14;;27968:41;;28000:1;28002:3;28006:2;27968:16;:41::i;:::-;27934:8;:75;28071:14;;28054:41;;28086:1;28088:3;28092:2;28054:16;:41::i;:::-;28020:8;:75;28157:14;;28140:41;;28172:1;28174:3;28178:2;28140:16;:41::i;:::-;28106:8;:75;28243:14;;28226:41;;28258:1;28260:3;28264:2;28226:16;:41::i;:::-;28192:8;:75;28329:14;;28312:41;;28344:1;28346:3;28350:2;28312:16;:41::i;:::-;28278:8;:75;28415:14;;28398:41;;28430:1;28432:3;28436:2;28398:16;:41::i;:::-;28364:9;:75;-1:-1:-1;;;;;28480:39:0;;;;;;;:21;:39;;;;;;;;:73;;-1:-1:-1;;;;;;28480:73:0;;;;;;;;;28656:39;;;28639:57;;:16;:57;;;;28698:8;;28626:81;;28639:57;28626:12;:81::i;:::-;-1:-1:-1;;;;;28581:39:0;;;28564:57;28581:39;;;:21;:39;;;;;;;;;;;;28564:57;;:16;:57;;;:143;28812:8;;28780:41;;28793:17;;28780:12;:41::i;:::-;28718:103;-1:-1:-1;28851:4:0;28835:20;;;;28832:100;;;28872:48;28887:11;28900:16;28918:1;28872:14;:48::i;:::-;-1:-1:-1;;;;;28986:34:0;;;;;;;:21;:34;;;;;;;;;28952:6;:68;;-1:-1:-1;;;;;;28952:68:0;;;28986:34;;;28952:68;;;;;;;;29065:21;:34;;;;;;29031:6;:68;;;;29065:34;;;29031:68;;;;;;29144:21;:34;;;;;;29110:6;:68;;;;29144:34;;;29110:68;;;;;;29223:21;:34;;;;;;29189:6;:68;;;;29223:34;;;29189:68;;;;;;29302:21;:34;;;;;;29268:6;:68;;;;29302:34;;;29268:68;;;;;;29381:21;:34;;;;;;29347:6;:68;;;;29381:34;;;29347:68;;;;;;29460:21;:34;;;;;;29426:6;:68;;;;29460:34;;;29426:68;;;;;;29539:21;:34;;;;;;29505:6;:68;;;;29539:34;;;29505:68;;;;;;29618:21;:34;;;;;;29584:7;:68;;;;;29618:34;;;29584:68;;;;29696:6;:52;29693:601;;-1:-1:-1;;;;;29827:34:0;;;;;;;:21;:34;;;;;;;;;29765:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;29765:96:0;29827:34;;;29765:96;;;;;;;;29968:39;;;29951:57;;:16;:57;;;;;;30010:8;;29938:81;;29951:57;29938:12;:81::i;:::-;-1:-1:-1;;;;;29893:39:0;;;29876:57;29893:39;;;:21;:39;;;;;;;;;;;;29876:57;;:16;:57;;;;;:143;;;;30128:8;30096:41;;30109:17;;30096:12;:41::i;:::-;30034:103;-1:-1:-1;30171:4:0;30155:20;;;;30152:131;;;-1:-1:-1;;;;;30211:34:0;;;;;;;:21;:34;;;;;;30196:71;;30211:34;30247:16;30265:1;30196:14;:71::i;:::-;30337:6;;-1:-1:-1;;;;;30337:6:0;:52;30334:601;;-1:-1:-1;;;;;30468:34:0;;;;;;;:21;:34;;;;;;;;;30406:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;30406:96:0;30468:34;;;30406:96;;;;;;;;30609:39;;;30592:57;;:16;:57;;;;30651:8;;30579:81;;30592:57;30579:12;:81::i;:::-;-1:-1:-1;;;;;30534:39:0;;;30517:57;30534:39;;;:21;:39;;;;;;;;;;;;30517:57;;:16;:57;;;:143;30769:8;;30737:41;;30750:17;;30737:12;:41::i;:::-;30675:103;-1:-1:-1;30812:4:0;30796:20;;;;30793:131;;;-1:-1:-1;;;;;30852:34:0;;;;;;;:21;:34;;;;;;30837:71;;30852:34;30888:16;30906:1;30837:14;:71::i;:::-;30978:6;;-1:-1:-1;;;;;30978:6:0;:52;30975:601;;-1:-1:-1;;;;;31109:34:0;;;;;;;:21;:34;;;;;;;;;31047:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;31047:96:0;31109:34;;;31047:96;;;;;;;;31250:39;;;31233:57;;:16;:57;;;;31292:8;;31220:81;;31233:57;31220:12;:81::i;:::-;-1:-1:-1;;;;;31175:39:0;;;31158:57;31175:39;;;:21;:39;;;;;;;;;;;;31158:57;;:16;:57;;;:143;31410:8;;31378:41;;31391:17;;31378:12;:41::i;:::-;31316:103;-1:-1:-1;31453:4:0;31437:20;;;;31434:131;;;-1:-1:-1;;;;;31493:34:0;;;;;;;:21;:34;;;;;;31478:71;;31493:34;31529:16;31547:1;31478:14;:71::i;:::-;31619:6;;-1:-1:-1;;;;;31619:6:0;:52;31616:601;;-1:-1:-1;;;;;31750:34:0;;;;;;;:21;:34;;;;;;;;;31688:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;31688:96:0;31750:34;;;31688:96;;;;;;;;31891:39;;;31874:57;;:16;:57;;;;31933:8;;31861:81;;31874:57;31861:12;:81::i;:::-;-1:-1:-1;;;;;31816:39:0;;;31799:57;31816:39;;;:21;:39;;;;;;;;;;;;31799:57;;:16;:57;;;:143;32051:8;;32019:41;;32032:17;;32019:12;:41::i;:::-;31957:103;-1:-1:-1;32094:4:0;32078:20;;;;32075:131;;;-1:-1:-1;;;;;32134:34:0;;;;;;;:21;:34;;;;;;32119:71;;32134:34;32170:16;32188:1;32119:14;:71::i;:::-;32260:6;;-1:-1:-1;;;;;32260:6:0;:52;32257:601;;-1:-1:-1;;;;;32391:34:0;;;;;;;:21;:34;;;;;;;;;32329:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;32329:96:0;32391:34;;;32329:96;;;;;;;;32532:39;;;32515:57;;:16;:57;;;;32574:8;;32502:81;;32515:57;32502:12;:81::i;:::-;-1:-1:-1;;;;;32457:39:0;;;32440:57;32457:39;;;:21;:39;;;;;;;;;;;;32440:57;;:16;:57;;;:143;32692:8;;32660:41;;32673:17;;32660:12;:41::i;:::-;32598:103;-1:-1:-1;32735:4:0;32719:20;;;;32716:131;;;-1:-1:-1;;;;;32775:34:0;;;;;;;:21;:34;;;;;;32760:71;;32775:34;32811:16;32829:1;32760:14;:71::i;:::-;32901:6;;-1:-1:-1;;;;;32901:6:0;:52;32898:601;;-1:-1:-1;;;;;33032:34:0;;;;;;;:21;:34;;;;;;;;;32970:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;32970:96:0;33032:34;;;32970:96;;;;;;;;33173:39;;;33156:57;;:16;:57;;;;33215:8;;33143:81;;33156:57;33143:12;:81::i;:::-;-1:-1:-1;;;;;33098:39:0;;;33081:57;33098:39;;;:21;:39;;;;;;;;;;;;33081:57;;:16;:57;;;:143;33333:8;;33301:41;;33314:17;;33301:12;:41::i;:::-;33239:103;-1:-1:-1;33376:4:0;33360:20;;;;33357:131;;;-1:-1:-1;;;;;33416:34:0;;;;;;;:21;:34;;;;;;33401:71;;33416:34;33452:16;33470:1;33401:14;:71::i;:::-;33542:6;;-1:-1:-1;;;;;33542:6:0;:52;33539:601;;-1:-1:-1;;;;;33673:34:0;;;;;;;:21;:34;;;;;;;;;33611:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;33611:96:0;33673:34;;;33611:96;;;;;;;;33814:39;;;33797:57;;:16;:57;;;;33856:8;;33784:81;;33797:57;33784:12;:81::i;:::-;-1:-1:-1;;;;;33739:39:0;;;33722:57;33739:39;;;:21;:39;;;;;;;;;;;;33722:57;;:16;:57;;;:143;33974:8;;33942:41;;33955:17;;33942:12;:41::i;:::-;33880:103;-1:-1:-1;34017:4:0;34001:20;;;;33998:131;;;-1:-1:-1;;;;;34057:34:0;;;;;;;:21;:34;;;;;;34042:71;;34057:34;34093:16;34111:1;34042:14;:71::i;:::-;34183:6;;-1:-1:-1;;;;;34183:6:0;:52;34180:601;;-1:-1:-1;;;;;34314:34:0;;;;;;;:21;:34;;;;;;;;;34252:39;;;;;:21;:39;;;;;:96;;-1:-1:-1;;;;;;34252:96:0;34314:34;;;34252:96;;;;;;;;34455:39;;;34438:57;;:16;:57;;;;34497:8;;34425:81;;34438:57;34425:12;:81::i;:::-;-1:-1:-1;;;;;34380:39:0;;;34363:57;34380:39;;;:21;:39;;;;;;;;;;;;34363:57;;:16;:57;;;:143;34615:8;;34583:41;;34596:17;;34583:12;:41::i;:::-;34521:103;-1:-1:-1;34658:4:0;34642:20;;;;34639:131;;;-1:-1:-1;;;;;34698:34:0;;;;;;;:21;:34;;;;;;34683:71;;34698:34;34734:16;34752:1;34683:14;:71::i;:::-;34825:7;;-1:-1:-1;;;;;34825:7:0;:53;34822:606;;-1:-1:-1;;;;;34957:34:0;;;;;;;:21;:34;;;;;;;;;34895:40;;;;;:22;:40;;;;;:96;;-1:-1:-1;;;;;;34895:96:0;34957:34;;;34895:96;;;;;;;;35098:40;;;35081:58;;:16;:58;;;;35141:9;;35068:83;;35081:58;35068:12;:83::i;:::-;-1:-1:-1;;;;;35023:40:0;;;35006:58;35023:40;;;:22;:40;;;;;;;;;;;;35006:58;;:16;:58;;;:145;35260:9;;35228:42;;35241:17;;35228:12;:42::i;:::-;35166:104;-1:-1:-1;35304:4:0;35288:20;;;;35285:132;;;-1:-1:-1;;;;;35344:34:0;;;;;;;:21;:34;;;;;;35329:72;;35344:34;35380:16;35398:2;35329:14;:72::i;:::-;35486:49;35499:16;;35517:17;35486:12;:49::i;:::-;35448:16;:87;-1:-1:-1;;;;;;27268:8275:0:o;35551:1490::-;35688:20;35752:8;35741:19;;;;;:41;;;35774:8;35764:7;:18;35741:41;35738:149;;;35833:42;35850:15;35866:1;35868:3;35872:2;35833:16;:42::i;:::-;35799:76;;35738:149;35911:8;35900:7;:19;;:41;;;;;35933:8;35923:7;:18;35900:41;35897:149;;;35992:42;36009:15;36025:1;36027:3;36031:2;35992:16;:42::i;:::-;35958:76;;35897:149;36070:8;36059:7;:19;;:41;;;;;36092:8;36082:7;:18;36059:41;36056:149;;;36151:42;36168:15;36184:1;36186:3;36190:2;36151:16;:42::i;:::-;36117:76;;36056:149;36229:8;36218:7;:19;;:42;;;;;36251:9;36241:7;:19;36218:42;36215:150;;;36311:42;36328:15;36344:1;36346:3;36350:2;36311:16;:42::i;:::-;36277:76;;36215:150;36389:9;36378:7;:20;;:45;;;;;36413:10;36402:7;:21;;36378:45;36375:153;;;36474:42;36491:15;36507:1;36509:3;36513:2;36474:16;:42::i;:::-;36440:76;;36375:153;36569:4;36551:22;;;;36548:401;;;36692:42;36672:63;;:19;:63;;;;36659:91;;36737:12;36659;:91::i;:::-;36610:42;36590:63;;:19;:63;;;:160;36548:401;;;-1:-1:-1;;;;;36882:39:0;;;36862:60;36882:39;;;:21;:39;;;;;;;;;;;;36862:60;;:19;:60;;;;36849:88;;36924:12;36849;:88::i;:::-;-1:-1:-1;;;;;36803:39:0;;;36783:60;36803:39;;;:21;:39;;;;;;;;;;;;36783:60;;:19;:60;;;:154;36548:401;36993:40;37006:12;;37020;36993;:40::i;:::-;36959:12;:74;-1:-1:-1;;;;;35551:1490:0:o;42161:696::-;42351:12;;42227:7;;42296:4;42286:14;;;;42351:19;;;42227:7;;42444:357;42525:147;42603:17;;;2116:15;42577:44;42525:147;42498:214;;42785:1;42296:4;-1:-1:-1;;42758:10:0;;;:18;;;;42757:25;2116:15;42733:50;42732:54;;;;;;;;42444:12;:357::i;:::-;:372;;;;;;;;;42161:696;-1:-1:-1;;;;;42161:696:0:o;673:288::-;731:7;830:9;846:1;842;:5;;;;;;;;;673:288;-1:-1:-1;;;;673:288:0:o;459:208::-;517:7;;541:6;;537:47;;;571:1;564:8;;;;537:47;-1:-1:-1;606:5:0;;;610:1;606;:5;629;;;;;;;;:10;622:18;;;42869:198;42943:5;42952:1;42947;42943:5;;42942:11;42980:80;42991:1;42987;:5;42980:80;;;43013:1;43009:5;;43047:1;43042;43038;43034;:5;;;;;;;;:9;43033:15;;;;;;;;43029:19;;42980:80;;25863:333;-1:-1:-1;;;;;25969:29:0;;;26011:11;25969:29;;;:14;:29;;;;;;;;:31;;;;;;;;;;26065:7;:22;;;;;:30;;;;;;;;:62;;-1:-1:-1;;;;;;26065:62:0;;;;;;;;;;;26138:39;;:50;25863:333::o;1250:41826::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1250:41826:0;;;;-1:-1:-1;1250:41826:0;;;;;;;;;;;;;;
Swarm Source
bzzr://4b79ab94d930d7e5609a044055e914d009191388d508987158d0727c2f9e2e01
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.