More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,858 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Disable Investor | 7945954 | 2013 days ago | IN | 0 ETH | 0.0008867 | ||||
Disable Investor | 7945952 | 2013 days ago | IN | 0 ETH | 0.00088542 | ||||
Send Ether To Ne... | 7945900 | 2013 days ago | IN | 0 ETH | 0.00064596 | ||||
Finalize Votes | 7945881 | 2013 days ago | IN | 0 ETH | 0.01341533 | ||||
Finalize Votes | 7945877 | 2013 days ago | IN | 0 ETH | 0.01532328 | ||||
Add Sell For Par... | 7944652 | 2013 days ago | IN | 0 ETH | 0.00133054 | ||||
Transfer | 7944630 | 2013 days ago | IN | 2 ETH | 0.00745701 | ||||
Put Presentee | 7944615 | 2013 days ago | IN | 0 ETH | 0.0010576 | ||||
Add Sell For Par... | 7941681 | 2014 days ago | IN | 0 ETH | 0.002113 | ||||
Add Sell For Par... | 7941659 | 2014 days ago | IN | 0 ETH | 0.00199304 | ||||
Add Sell For Par... | 7941659 | 2014 days ago | IN | 0 ETH | 0.00192326 | ||||
Add Sell For Par... | 7941656 | 2014 days ago | IN | 0 ETH | 0.00199278 | ||||
Put Presentee | 7941401 | 2014 days ago | IN | 0 ETH | 0.00122242 | ||||
Transfer | 7941173 | 2014 days ago | IN | 2 ETH | 0.01463509 | ||||
Transfer | 7941138 | 2014 days ago | IN | 2 ETH | 0.0002352 | ||||
Transfer | 7941126 | 2014 days ago | IN | 2 ETH | 0.0005166 | ||||
Transfer | 7941122 | 2014 days ago | IN | 2 ETH | 0.0003696 | ||||
Transfer | 7941070 | 2014 days ago | IN | 1 ETH | 0.00942425 | ||||
Transfer | 7941047 | 2014 days ago | IN | 2 ETH | 0.0142589 | ||||
Transfer | 7941014 | 2014 days ago | IN | 2 ETH | 0.00212555 | ||||
Add Sell For Par... | 7939260 | 2014 days ago | IN | 0 ETH | 0.00107618 | ||||
Add Sell For Par... | 7939260 | 2014 days ago | IN | 0 ETH | 0.00112844 | ||||
Add Sell For Par... | 7939247 | 2014 days ago | IN | 0 ETH | 0.00123342 | ||||
Pay Daily Income... | 7938951 | 2014 days ago | IN | 0 ETH | 0.0975724 | ||||
Transfer | 7937460 | 2014 days ago | IN | 1 ETH | 0.0085017 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
7945900 | 2013 days ago | 1,247.19957558 ETH | ||||
7944630 | 2013 days ago | 0.02 ETH | ||||
7944630 | 2013 days ago | 0.18 ETH | ||||
7941173 | 2014 days ago | 0.02 ETH | ||||
7941173 | 2014 days ago | 0.18 ETH | ||||
7941070 | 2014 days ago | 0.01 ETH | ||||
7941070 | 2014 days ago | 0.09 ETH | ||||
7941047 | 2014 days ago | 0.02 ETH | ||||
7941047 | 2014 days ago | 0.18 ETH | ||||
7941014 | 2014 days ago | 0.02 ETH | ||||
7941014 | 2014 days ago | 0.18 ETH | ||||
7938951 | 2014 days ago | 0.238 ETH | ||||
7938951 | 2014 days ago | 2.142 ETH | ||||
7938951 | 2014 days ago | 0.459 ETH | ||||
7938951 | 2014 days ago | 4.131 ETH | ||||
7938951 | 2014 days ago | 0.05384529 ETH | ||||
7938951 | 2014 days ago | 0.48460761 ETH | ||||
7938951 | 2014 days ago | 0.034 ETH | ||||
7938951 | 2014 days ago | 0.306 ETH | ||||
7938951 | 2014 days ago | 0.034 ETH | ||||
7938951 | 2014 days ago | 0.306 ETH | ||||
7938951 | 2014 days ago | 0.34 ETH | ||||
7938951 | 2014 days ago | 3.06 ETH | ||||
7938951 | 2014 days ago | 0.034 ETH | ||||
7938951 | 2014 days ago | 0.306 ETH |
Loading...
Loading
Contract Name:
Operator
Compiler Version
v0.5.3+commit.10d17f24
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-04-26 */ pragma solidity ^0.5.3; contract Operator { uint256 public ONE_DAY = 86400; uint256 public MIN_DEP = 1 ether; uint256 public MAX_DEP = 100 ether; address public admin; address public admin2; address public querierAddress; uint256 public depositedAmountGross = 0; uint256 public paySystemCommissionTimes = 1; uint256 public payDailyIncomeTimes = 1; uint256 public lastPaySystemCommission = now; uint256 public lastPayDailyIncome = now; uint256 public contractStartAt = now; uint256 public lastReset = now; address payable public operationFund = 0xa4048772583220896ec93316616778B4EbC70F9d; address[] public investorAddresses; bytes32[] public investmentIds; bytes32[] public withdrawalIds; bytes32[] public maxOutIds; mapping (address => Investor) investors; mapping (bytes32 => Investment) public investments; mapping (bytes32 => Withdrawal) public withdrawals; mapping (bytes32 => MaxOut) public maxOuts; mapping (address => WithdrawAccount) public withdrawAccounts; uint256 additionNow = 0; uint256 public maxLevelsAddSale = 200; uint256 public maximumMaxOutInWeek = 2; bool public importing = true; Vote public currentVote; struct WithdrawAccount { address initialAddress; address currentWithdrawalAddress; address requestingWithdrawalAddress; } struct Vote { uint256 startTime; string reason; mapping (address => uint8) votes; address payable emergencyAddress; uint256 yesPoint; uint256 noPoint; uint256 totalPoint; } struct Investment { bytes32 id; uint256 at; uint256 amount; address investor; address nextInvestor; bool nextBranch; } struct Withdrawal { bytes32 id; uint256 at; uint256 amount; address investor; address presentee; uint256 reason; uint256 times; } struct Investor { address parent; address leftChild; address rightChild; address presenter; uint256 generation; uint256 depositedAmount; uint256 withdrewAmount; bool isDisabled; uint256 lastMaxOut; uint256 maxOutTimes; uint256 maxOutTimesInWeek; uint256 totalSell; uint256 sellThisMonth; uint256 rightSell; uint256 leftSell; uint256 reserveCommission; uint256 dailyIncomeWithrewAmount; uint256 registerTime; uint256 minDeposit; bytes32[] investments; bytes32[] withdrawals; } struct MaxOut { bytes32 id; address investor; uint256 times; uint256 at; } constructor () public { admin = msg.sender; } modifier mustBeAdmin() { require(msg.sender == admin || msg.sender == querierAddress || msg.sender == admin2); _; } modifier mustBeImporting() { require(importing); require(msg.sender == querierAddress || msg.sender == admin); _; } function () payable external { deposit(); } function getNow() internal view returns(uint256) { return additionNow + now; } function depositProcess(address sender) internal { Investor storage investor = investors[sender]; require(investor.generation != 0); if (investor.depositedAmount == 0) require(msg.value >= investor.minDeposit); require(investor.maxOutTimesInWeek < maximumMaxOutInWeek); require(investor.maxOutTimes < 50); require(investor.maxOutTimes == 0 || getNow() - investor.lastMaxOut < ONE_DAY * 7 || investor.depositedAmount != 0); depositedAmountGross += msg.value; bytes32 id = keccak256(abi.encodePacked(block.number, getNow(), sender, msg.value)); uint256 investmentValue = investor.depositedAmount + msg.value <= MAX_DEP ? msg.value : MAX_DEP - investor.depositedAmount; if (investmentValue == 0) return; bool nextBranch = investors[investor.parent].leftChild == sender; Investment memory investment = Investment({ id: id, at: getNow(), amount: investmentValue, investor: sender, nextInvestor: investor.parent, nextBranch: nextBranch }); investments[id] = investment; processInvestments(id); investmentIds.push(id); } function pushNewMaxOut(address investorAddress, uint256 times, uint256 depositedAmount) internal { bytes32 id = keccak256(abi.encodePacked(block.number, getNow(), investorAddress, times)); MaxOut memory maxOut = MaxOut({ id: id, at: getNow(), investor: investorAddress, times: times }); maxOutIds.push(id); maxOuts[id] = maxOut; investors[investorAddress].minDeposit = depositedAmount; } function deposit() payable public { depositProcess(msg.sender); } function processInvestments(bytes32 investmentId) internal { Investment storage investment = investments[investmentId]; uint256 amount = investment.amount; Investor storage investor = investors[investment.investor]; investor.investments.push(investmentId); investor.depositedAmount += amount; address payable presenterAddress = address(uint160(investor.presenter)); Investor storage presenter = investors[presenterAddress]; if (presenterAddress != address(0)) { presenter.totalSell += amount; presenter.sellThisMonth += amount; } if (presenter.depositedAmount >= MIN_DEP && !presenter.isDisabled) { sendEtherForInvestor(presenterAddress, amount / 10, 1, investment.investor, 0); } } function getWithdrawAddress(address payable initialAddress) public view returns (address payable) { WithdrawAccount memory withdrawAccount = withdrawAccounts[initialAddress]; address withdrawAddress = withdrawAccount.currentWithdrawalAddress; if (withdrawAddress != address(0)) return address(uint160(withdrawAddress)); return initialAddress; } function requestChangeWithdrawAddress(address newAddress) public { require(investors[msg.sender].depositedAmount > 0); WithdrawAccount storage currentWithdrawAccount = withdrawAccounts[msg.sender]; if (currentWithdrawAccount.initialAddress != address(0)) { currentWithdrawAccount.requestingWithdrawalAddress = newAddress; return; } WithdrawAccount memory withdrawAccount = WithdrawAccount({ initialAddress: msg.sender, currentWithdrawalAddress: msg.sender, requestingWithdrawalAddress: newAddress }); withdrawAccounts[msg.sender] = withdrawAccount; } function acceptChangeWithdrawAddress(address initialAddress, address requestingWithdrawalAddress) public mustBeAdmin { WithdrawAccount storage withdrawAccount = withdrawAccounts[initialAddress]; require(withdrawAccount.requestingWithdrawalAddress == requestingWithdrawalAddress); withdrawAccount.requestingWithdrawalAddress = address(0); withdrawAccount.currentWithdrawalAddress = requestingWithdrawalAddress; } function addSellForParents(bytes32 investmentId) public mustBeAdmin { Investment storage investment = investments[investmentId]; require(investment.nextInvestor != address(0)); uint256 amount = investment.amount; uint256 loopCount = 0; while (investment.nextInvestor != address(0) && loopCount < maxLevelsAddSale) { Investor storage investor = investors[investment.nextInvestor]; if (investment.nextBranch) investor.leftSell += amount; else investor.rightSell += amount; investment.nextBranch = investors[investor.parent].leftChild == investment.nextInvestor; investment.nextInvestor = investor.parent; loopCount++; } } function sendEtherForInvestor(address payable investorAddress, uint256 value, uint256 reason, address presentee, uint256 times) internal { if (value == 0 && reason != 100) return; if (investorAddress == address(0)) return; Investor storage investor = investors[investorAddress]; uint256 unpaidSystemCommission = getUnpaidSystemCommission(investorAddress); uint256 totalPaidAfterThisTime = investor.reserveCommission + getDailyIncomeForUser(investorAddress) + unpaidSystemCommission; if (reason == 1) totalPaidAfterThisTime += value; if (totalPaidAfterThisTime + investor.withdrewAmount >= 3 * investor.depositedAmount) { payWithMaxOut(totalPaidAfterThisTime, investorAddress, unpaidSystemCommission); return; } if (investor.reserveCommission > 0) payWithNoMaxOut(investor.reserveCommission, investorAddress, 4, address(0), 0); payWithNoMaxOut(value, investorAddress, reason, presentee, times); } function payWithNoMaxOut(uint256 amountToPay, address payable investorAddress, uint256 reason, address presentee, uint256 times) internal { investors[investorAddress].withdrewAmount += amountToPay; if (reason == 4) investors[investorAddress].reserveCommission = 0; if (reason == 3) resetSystemCommision(investorAddress, times); if (reason == 2) investors[investorAddress].dailyIncomeWithrewAmount += amountToPay; pay(amountToPay, investorAddress, reason, presentee, times); } function payWithMaxOut(uint256 totalPaidAfterThisTime, address payable investorAddress, uint256 unpaidSystemCommission) internal { Investor storage investor = investors[investorAddress]; uint256 amountToPay = investor.depositedAmount * 3 - investor.withdrewAmount; uint256 amountToReserve = totalPaidAfterThisTime - amountToPay; if (unpaidSystemCommission > 0) resetSystemCommision(investorAddress, 0); investor.maxOutTimes++; investor.maxOutTimesInWeek++; uint256 oldDepositedAmount = investor.depositedAmount; investor.depositedAmount = 0; investor.withdrewAmount = 0; investor.lastMaxOut = getNow(); investor.dailyIncomeWithrewAmount = 0; investor.reserveCommission = amountToReserve; pushNewMaxOut(investorAddress, investor.maxOutTimes, oldDepositedAmount); pay(amountToPay, investorAddress, 0, address(0), 0); } function pay(uint256 amountToPay, address payable investorAddress, uint256 reason, address presentee, uint256 times) internal { if (amountToPay == 0) return; address payable withdrawAddress = getWithdrawAddress(investorAddress); withdrawAddress.transfer(amountToPay / 100 * 90); operationFund.transfer(amountToPay / 100 * 10); bytes32 id = keccak256(abi.encodePacked(block.difficulty, getNow(), investorAddress, amountToPay, reason)); Withdrawal memory withdrawal = Withdrawal({ id: id, at: getNow(), amount: amountToPay, investor: investorAddress, presentee: presentee, times: times, reason: reason }); withdrawals[id] = withdrawal; investors[investorAddress].withdrawals.push(id); withdrawalIds.push(id); } function getAllIncomeTilNow(address investorAddress) internal view returns(uint256 allIncome) { Investor memory investor = investors[investorAddress]; uint256 unpaidDailyIncome = getDailyIncomeForUser(investorAddress); uint256 withdrewAmount = investor.withdrewAmount; uint256 unpaidSystemCommission = getUnpaidSystemCommission(investorAddress); uint256 allIncomeNow = unpaidDailyIncome + withdrewAmount + unpaidSystemCommission; return allIncomeNow; } function putPresentee(address presenterAddress, address presenteeAddress, address parentAddress, bool isLeft) public mustBeAdmin { Investor storage presenter = investors[presenterAddress]; Investor storage parent = investors[parentAddress]; if (investorAddresses.length != 0) { require(presenter.generation != 0); require(parent.generation != 0); if (isLeft) { require(parent.leftChild == address(0)); } else { require(parent.rightChild == address(0)); } } Investor memory investor = Investor({ parent: parentAddress, leftChild: address(0), rightChild: address(0), presenter: presenterAddress, generation: parent.generation + 1, depositedAmount: 0, withdrewAmount: 0, isDisabled: false, lastMaxOut: getNow(), maxOutTimes: 0, maxOutTimesInWeek: 0, totalSell: 0, sellThisMonth: 0, registerTime: getNow(), investments: new bytes32[](0), withdrawals: new bytes32[](0), minDeposit: MIN_DEP, rightSell: 0, leftSell: 0, reserveCommission: 0, dailyIncomeWithrewAmount: 0 }); investors[presenteeAddress] = investor; investorAddresses.push(presenteeAddress); if (parent.generation == 0) return; if (isLeft) { parent.leftChild = presenteeAddress; } else { parent.rightChild = presenteeAddress; } } function getDailyIncomeForUser(address investorAddress) internal view returns(uint256 amount) { Investor memory investor = investors[investorAddress]; uint256 investmentLength = investor.investments.length; uint256 dailyIncome = 0; for (uint256 i = 0; i < investmentLength; i++) { Investment memory investment = investments[investor.investments[i]]; if (investment.at < investor.lastMaxOut) continue; if (getNow() - investment.at >= ONE_DAY) { uint256 numberOfDay = (getNow() - investment.at) / ONE_DAY; uint256 totalDailyIncome = numberOfDay * investment.amount / 100; dailyIncome = totalDailyIncome + dailyIncome; } } return dailyIncome - investor.dailyIncomeWithrewAmount; } function payDailyIncomeForInvestor(address payable investorAddress, uint256 times) public mustBeAdmin { uint256 dailyIncome = getDailyIncomeForUser(investorAddress); Investor storage investor = investors[investorAddress]; if (times > ONE_DAY) { uint256 investmentLength = investor.investments.length; bytes32 lastInvestmentId = investor.investments[investmentLength - 1]; investments[lastInvestmentId].at -= times; investors[investorAddress].lastMaxOut = investments[lastInvestmentId].at; return; } if (investor.isDisabled) return; sendEtherForInvestor(investorAddress, dailyIncome, 2, address(0), times); } function payDailyIncomeByIndex(uint256 from, uint256 to) public mustBeAdmin{ require(from >= 0 && to < investorAddresses.length); for(uint256 i = from; i <= to; i++) { payDailyIncomeForInvestor(address(uint160(investorAddresses[i])), payDailyIncomeTimes); } } function getUnpaidSystemCommission(address investorAddress) public view returns(uint256 unpaid) { Investor memory investor = investors[investorAddress]; uint256 depositedAmount = investor.depositedAmount; uint256 totalSell = investor.totalSell; uint256 leftSell = investor.leftSell; uint256 rightSell = investor.rightSell; uint256 sellThisMonth = investor.sellThisMonth; uint256 sellToPaySystemCommission = rightSell < leftSell ? rightSell : leftSell; uint256 commission = sellToPaySystemCommission * getPercentage(depositedAmount, totalSell, sellThisMonth) / 100; return commission; } function paySystemCommissionInvestor(address payable investorAddress, uint256 times) public mustBeAdmin { Investor storage investor = investors[investorAddress]; if (investor.isDisabled) return; uint256 systemCommission = getUnpaidSystemCommission(investorAddress); sendEtherForInvestor(investorAddress, systemCommission, 3, address(0), times); } function resetSystemCommision(address investorAddress, uint256 times) internal { Investor storage investor = investors[investorAddress]; if (paySystemCommissionTimes > 3 && times != 0) { investor.rightSell = 0; investor.leftSell = 0; } else if (investor.rightSell >= investor.leftSell) { investor.rightSell = investor.rightSell - investor.leftSell; investor.leftSell = 0; } else { investor.leftSell = investor.leftSell - investor.rightSell; investor.rightSell = 0; } if (times != 0) investor.sellThisMonth = 0; } function paySystemCommissionByIndex(uint256 from, uint256 to) public mustBeAdmin { require(from >= 0 && to < investorAddresses.length); if (getNow() <= 30 * ONE_DAY + contractStartAt) return; for(uint256 i = from; i <= to; i++) { paySystemCommissionInvestor(address(uint160(investorAddresses[i])), paySystemCommissionTimes); } } function finishPayDailyIncome() public mustBeAdmin { lastPayDailyIncome = getNow(); payDailyIncomeTimes++; } function finishPaySystemCommission() public mustBeAdmin { lastPaySystemCommission = getNow(); paySystemCommissionTimes++; } function resetGame(uint256 from, uint256 to) public mustBeAdmin { require(from >= 0 && to < investorAddresses.length); require(currentVote.startTime != 0); require(getNow() - currentVote.startTime > 3 * ONE_DAY); require(currentVote.yesPoint > currentVote.totalPoint / 2); require(currentVote.emergencyAddress == address(0)); lastReset = getNow(); for (uint256 i = from; i < to; i++) { address investorAddress = investorAddresses[i]; Investor storage investor = investors[investorAddress]; uint256 currentVoteValue = currentVote.votes[investorAddress] != 0 ? currentVote.votes[investorAddress] : 2; if (currentVoteValue == 2) { if (investor.maxOutTimes > 0 || (investor.withdrewAmount >= investor.depositedAmount && investor.withdrewAmount != 0)) { investor.lastMaxOut = getNow(); investor.depositedAmount = 0; investor.withdrewAmount = 0; investor.dailyIncomeWithrewAmount = 0; } investor.reserveCommission = 0; investor.rightSell = 0; investor.leftSell = 0; investor.totalSell = 0; investor.sellThisMonth = 0; } else { if (investor.maxOutTimes > 0 || (investor.withdrewAmount >= investor.depositedAmount && investor.withdrewAmount != 0)) { investor.isDisabled = true; investor.reserveCommission = 0; investor.lastMaxOut = getNow(); investor.depositedAmount = 0; investor.withdrewAmount = 0; investor.dailyIncomeWithrewAmount = 0; } investor.reserveCommission = 0; investor.rightSell = 0; investor.leftSell = 0; investor.totalSell = 0; investor.sellThisMonth = 0; } } } function stopGame(uint256 percent, uint256 from, uint256 to) mustBeAdmin public { require(currentVote.startTime != 0); require(getNow() - currentVote.startTime > 3 * ONE_DAY); require(currentVote.noPoint > currentVote.totalPoint / 2); require(currentVote.emergencyAddress == address(0)); require(percent <= 50); require(from >= 0 && to < investorAddresses.length); for (uint256 i = from; i <= to; i++) { address payable investorAddress = address(uint160(investorAddresses[i])); Investor storage investor = investors[investorAddress]; if (investor.maxOutTimes > 0) continue; if (investor.isDisabled) continue; uint256 depositedAmount = investor.depositedAmount; uint256 withdrewAmount = investor.withdrewAmount; if (withdrewAmount >= depositedAmount / 2) continue; sendEtherForInvestor(investorAddress, depositedAmount * percent / 100 - withdrewAmount, 6, address(0), 0); } } function revivalInvestor(address investor) public mustBeAdmin { investors[investor].lastMaxOut = getNow(); } function payToReachMaxOut(address payable investorAddress) public mustBeAdmin { uint256 unpaidSystemCommissions = getUnpaidSystemCommission(investorAddress); uint256 unpaidDailyIncomes = getDailyIncomeForUser(investorAddress); uint256 withdrewAmount = investors[investorAddress].withdrewAmount; uint256 depositedAmount = investors[investorAddress].depositedAmount; uint256 reserveCommission = investors[investorAddress].reserveCommission; require(depositedAmount > 0 && withdrewAmount + unpaidSystemCommissions + unpaidDailyIncomes + reserveCommission >= 3 * depositedAmount); sendEtherForInvestor(investorAddress, 0, 100, address(0), 0); } function resetMaxOutInWeek(uint256 from, uint256 to) public mustBeAdmin { require(from >= 0 && to < investorAddresses.length); for (uint256 i = from; i < to; i++) { address investorAddress = investorAddresses[i]; if (investors[investorAddress].maxOutTimesInWeek == 0) continue; investors[investorAddress].maxOutTimesInWeek = 0; } } function setMaximumMaxOutTimes(address investorAddress, uint256 times) public mustBeAdmin{ investors[investorAddress].maxOutTimes = times; } function disableInvestor(address investorAddress) public mustBeAdmin { Investor storage investor = investors[investorAddress]; investor.isDisabled = true; } function enableInvestor(address investorAddress) public mustBeAdmin { Investor storage investor = investors[investorAddress]; investor.isDisabled = false; } function donate() payable public { depositedAmountGross += msg.value; } function getTotalSellLevel(uint256 totalSell) internal pure returns (uint256 level){ if (totalSell < 30 ether) return 0; if (totalSell < 60 ether) return 1; if (totalSell < 90 ether) return 2; if (totalSell < 120 ether) return 3; if (totalSell < 150 ether) return 4; return 5; } function getSellThisMonthLevel(uint256 sellThisMonth) internal pure returns (uint256 level){ if (sellThisMonth < 2 ether) return 0; if (sellThisMonth < 4 ether) return 1; if (sellThisMonth < 6 ether) return 2; if (sellThisMonth < 8 ether) return 3; if (sellThisMonth < 10 ether) return 4; return 5; } function getDepositLevel(uint256 depositedAmount) internal pure returns (uint256 level){ if (depositedAmount < 2 ether) return 0; if (depositedAmount < 4 ether) return 1; if (depositedAmount < 6 ether) return 2; if (depositedAmount < 8 ether) return 3; if (depositedAmount < 10 ether) return 4; return 5; } function getPercentage(uint256 depositedAmount, uint256 totalSell, uint256 sellThisMonth) internal pure returns(uint256 level) { uint256 totalSellLevel = getTotalSellLevel(totalSell); uint256 depLevel = getDepositLevel(depositedAmount); uint256 sellThisMonthLevel = getSellThisMonthLevel(sellThisMonth); uint256 min12 = totalSellLevel < depLevel ? totalSellLevel : depLevel; uint256 minLevel = sellThisMonthLevel < min12 ? sellThisMonthLevel : min12; return minLevel * 2; } function stringToBytes32(string memory source) internal pure returns (bytes32 result) { bytes memory tempEmptyStringTest = bytes(source); if (tempEmptyStringTest.length == 0) return 0x0; assembly { result := mload(add(source, 32)) } } function getInvestor(address investorAddress) view public returns (address[] memory addresses, bool isDisabled, uint256[] memory numbers) { addresses = new address[](4); numbers = new uint256[](16); Investor memory investor = investors[investorAddress]; addresses[0] = investor.parent; addresses[1] = investor.leftChild; addresses[2] = investor.rightChild; addresses[3] = investor.presenter; numbers[0] = investor.generation; numbers[1] = investor.depositedAmount; numbers[2] = investor.withdrewAmount; numbers[3] = investor.lastMaxOut; numbers[4] = investor.maxOutTimes; numbers[5] = investor.maxOutTimesInWeek; numbers[6] = investor.totalSell; numbers[7] = investor.sellThisMonth; numbers[8] = investor.rightSell; numbers[9] = investor.leftSell; numbers[10] = investor.reserveCommission; numbers[11] = investor.dailyIncomeWithrewAmount; numbers[12] = investor.registerTime; numbers[13] = getUnpaidSystemCommission(investorAddress); numbers[14] = getDailyIncomeForUser(investorAddress); numbers[15] = investor.minDeposit; return (addresses, investor.isDisabled, numbers); } function getInvestorLength() view public returns(uint256) { return investorAddresses.length; } function getMaxOutsLength() view public returns(uint256) { return maxOutIds.length; } function getNodesAddresses(address rootNodeAddress) public view returns(address[] memory){ uint256 maxLength = investorAddresses.length; address[] memory nodes = new address[](maxLength); nodes[0] = rootNodeAddress; uint256 processIndex = 0; uint256 nextIndex = 1; while (processIndex != nextIndex) { Investor memory currentInvestor = investors[nodes[processIndex++]]; if (currentInvestor.leftChild != address(0)) nodes[nextIndex++] = currentInvestor.leftChild; if (currentInvestor.rightChild != address(0)) nodes[nextIndex++] = currentInvestor.rightChild; } return nodes; } function getInvestmentsLength () public view returns(uint256 length) { return investmentIds.length; } function getWithdrawalsLength() public view returns(uint256 length) { return withdrawalIds.length; } function importInvestor(address[] memory addresses, bool isDisabled, uint256[] memory numbers) public mustBeImporting { if (investors[addresses[4]].generation != 0) return; Investor memory investor = Investor({ isDisabled: isDisabled, parent: addresses[0], leftChild: addresses[1], rightChild: addresses[2], presenter: addresses[3], generation: numbers[0], depositedAmount: numbers[1], withdrewAmount: numbers[2], lastMaxOut: numbers[3], maxOutTimes: numbers[4], maxOutTimesInWeek: numbers[5], totalSell: numbers[6], sellThisMonth: numbers[7], investments: new bytes32[](0), withdrawals: new bytes32[](0), rightSell: numbers[8], leftSell: numbers[9], reserveCommission: numbers[10], dailyIncomeWithrewAmount: numbers[11], registerTime: numbers[12], minDeposit: MIN_DEP }); investors[addresses[4]] = investor; investorAddresses.push(addresses[4]); } function importInvestments(bytes32 id, uint256 at, uint256 amount, address investorAddress) public mustBeImporting { if (investments[id].at != 0) return; Investment memory investment = Investment({ id: id, at: at, amount: amount, investor: investorAddress, nextInvestor: address(0), nextBranch: false }); investments[id] = investment; investmentIds.push(id); Investor storage investor = investors[investorAddress]; investor.investments.push(id); depositedAmountGross += amount; } function importWithdrawals(bytes32 id, uint256 at, uint256 amount, address investorAddress, address presentee, uint256 reason, uint256 times) public mustBeImporting { if (withdrawals[id].at != 0) return; Withdrawal memory withdrawal = Withdrawal({ id: id, at: at, amount: amount, investor: investorAddress, presentee: presentee, times: times, reason: reason }); withdrawals[id] = withdrawal; Investor storage investor = investors[investorAddress]; investor.withdrawals.push(id); withdrawalIds.push(id); } function finishImporting() public mustBeAdmin { importing = false; } function finalizeVotes(uint256 from, uint256 to, bool isRemoving) public mustBeAdmin { require(getNow() - currentVote.startTime > 3 * ONE_DAY); for (uint256 index = from; index < to; index++) { address investorAddress = investorAddresses[index]; if (isRemoving && currentVote.votes[investorAddress] == 3) { currentVote.votes[investorAddress] = 0; continue; } if (currentVote.votes[investorAddress] == 0) { currentVote.yesPoint += 1; } currentVote.votes[investorAddress] = 3; } } function createVote(string memory reason, address payable emergencyAddress) public mustBeAdmin { require(currentVote.startTime == 0); currentVote = Vote({ startTime: getNow(), reason: reason, emergencyAddress: emergencyAddress, yesPoint: 0, noPoint: 0, totalPoint: investorAddresses.length }); } function removeVote() public mustBeAdmin { currentVote = Vote({ startTime: 0, reason: '', emergencyAddress: address(0), yesPoint: 0, noPoint: 0, totalPoint: 0 }); } function sendEtherToNewContract() public mustBeAdmin { require(currentVote.startTime != 0); require(getNow() - currentVote.startTime > 3 * ONE_DAY); require(currentVote.yesPoint > currentVote.totalPoint / 2); require(currentVote.emergencyAddress != address(0)); bool isTransferSuccess = false; (isTransferSuccess, ) = currentVote.emergencyAddress.call.value(address(this).balance)(""); if (!isTransferSuccess) revert(); } function voteProcess(address investor, bool isYes) internal { require(investors[investor].depositedAmount > 0); require(!investors[investor].isDisabled); require(getNow() - currentVote.startTime < 3 * ONE_DAY); uint8 newVoteValue = isYes ? 2 : 1; uint8 currentVoteValue = currentVote.votes[investor]; require(newVoteValue != currentVoteValue); updateVote(isYes); if (currentVoteValue == 0) return; if (isYes) { currentVote.noPoint -= getVoteShare(); } else { currentVote.yesPoint -= getVoteShare(); } } function vote(bool isYes) public { voteProcess(msg.sender, isYes); } function updateVote(bool isYes) internal { currentVote.votes[msg.sender] = isYes ? 2 : 1; if (isYes) { currentVote.yesPoint += getVoteShare(); } else { currentVote.noPoint += getVoteShare(); } } function getVoteShare() public view returns(uint256) { if (investors[msg.sender].generation >= 3) return 1; if (currentVote.totalPoint > 40) return currentVote.totalPoint / 20; return 2; } function setQuerier(address _querierAddress) public mustBeAdmin { querierAddress = _querierAddress; } function setAdmin2(address _admin2) public mustBeAdmin { admin2 = _admin2; } function setInitialValue(uint256 _paySystemCommissionTimes, uint256 _payDailyIncomeTimes, uint256 _lastPaySystemCommission, uint256 _lastPayDailyIncome, uint256 _contractStartAt, uint256 _lastReset) public mustBeImporting { paySystemCommissionTimes = _paySystemCommissionTimes; payDailyIncomeTimes = _payDailyIncomeTimes; lastPaySystemCommission = _lastPaySystemCommission; lastPayDailyIncome = _lastPayDailyIncome; contractStartAt = _contractStartAt; lastReset = _lastReset; } function depositFor(address investor) public payable mustBeAdmin { depositProcess(investor); } function setInvestorTestInfo(address investorAddress, uint256 totalSell, uint256 sellThisMonth, uint256 rightSell, uint256 leftSell) public mustBeAdmin { Investor storage investor = investors[investorAddress]; require(investor.generation > 0); investor.totalSell = totalSell; investor.sellThisMonth = sellThisMonth; investor.rightSell = rightSell; investor.leftSell = leftSell; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":false,"inputs":[{"name":"addresses","type":"address[]"},{"name":"isDisabled","type":"bool"},{"name":"numbers","type":"uint256[]"}],"name":"importInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin2","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"depositedAmountGross","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"sendEtherToNewContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paySystemCommissionTimes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastPayDailyIncome","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"enableInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_admin2","type":"address"}],"name":"setAdmin2","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getVoteShare","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"importing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getWithdrawalsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"withdrawalIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInvestorLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"maxOutIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getInvestmentsLength","outputs":[{"name":"length","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMaxOutsLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_querierAddress","type":"address"}],"name":"setQuerier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"rootNodeAddress","type":"address"}],"name":"getNodesAddresses","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"removeVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"isYes","type":"bool"}],"name":"vote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"resetMaxOutInWeek","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishPayDailyIncome","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"times","type":"uint256"}],"name":"paySystemCommissionInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"totalSell","type":"uint256"},{"name":"sellThisMonth","type":"uint256"},{"name":"rightSell","type":"uint256"},{"name":"leftSell","type":"uint256"}],"name":"setInvestorTestInfo","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"maxOuts","outputs":[{"name":"id","type":"bytes32"},{"name":"investor","type":"address"},{"name":"times","type":"uint256"},{"name":"at","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes32"},{"name":"at","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"investorAddress","type":"address"}],"name":"importInvestments","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"resetGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_DEP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"requestChangeWithdrawAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"paySystemCommissionByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"reason","type":"string"},{"name":"emergencyAddress","type":"address"}],"name":"createVote","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"ONE_DAY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"withdrawAccounts","outputs":[{"name":"initialAddress","type":"address"},{"name":"currentWithdrawalAddress","type":"address"},{"name":"requestingWithdrawalAddress","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"querierAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumMaxOutInWeek","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"bytes32"},{"name":"at","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"investorAddress","type":"address"},{"name":"presentee","type":"address"},{"name":"reason","type":"uint256"},{"name":"times","type":"uint256"}],"name":"importWithdrawals","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getInvestor","outputs":[{"name":"addresses","type":"address[]"},{"name":"isDisabled","type":"bool"},{"name":"numbers","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastPaySystemCommission","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"times","type":"uint256"}],"name":"setMaximumMaxOutTimes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investorAddresses","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"presenterAddress","type":"address"},{"name":"presenteeAddress","type":"address"},{"name":"parentAddress","type":"address"},{"name":"isLeft","type":"bool"}],"name":"putPresentee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"contractStartAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_DEP","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"depositFor","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"initialAddress","type":"address"}],"name":"getWithdrawAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"payDailyIncomeTimes","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"payDailyIncomeByIndex","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishPaySystemCommission","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastReset","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finishImporting","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"investorAddress","type":"address"}],"name":"getUnpaidSystemCommission","outputs":[{"name":"unpaid","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"},{"name":"times","type":"uint256"}],"name":"payDailyIncomeForInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"revivalInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"investments","outputs":[{"name":"id","type":"bytes32"},{"name":"at","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"investor","type":"address"},{"name":"nextInvestor","type":"address"},{"name":"nextBranch","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_paySystemCommissionTimes","type":"uint256"},{"name":"_payDailyIncomeTimes","type":"uint256"},{"name":"_lastPaySystemCommission","type":"uint256"},{"name":"_lastPayDailyIncome","type":"uint256"},{"name":"_contractStartAt","type":"uint256"},{"name":"_lastReset","type":"uint256"}],"name":"setInitialValue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"uint256"},{"name":"to","type":"uint256"},{"name":"isRemoving","type":"bool"}],"name":"finalizeVotes","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"percent","type":"uint256"},{"name":"from","type":"uint256"},{"name":"to","type":"uint256"}],"name":"stopGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"operationFund","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"investmentIds","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"donate","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"withdrawals","outputs":[{"name":"id","type":"bytes32"},{"name":"at","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"investor","type":"address"},{"name":"presentee","type":"address"},{"name":"reason","type":"uint256"},{"name":"times","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"disableInvestor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"maxLevelsAddSale","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"currentVote","outputs":[{"name":"startTime","type":"uint256"},{"name":"reason","type":"string"},{"name":"emergencyAddress","type":"address"},{"name":"yesPoint","type":"uint256"},{"name":"noPoint","type":"uint256"},{"name":"totalPoint","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"investmentId","type":"bytes32"}],"name":"addSellForParents","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"initialAddress","type":"address"},{"name":"requestingWithdrawalAddress","type":"address"}],"name":"acceptChangeWithdrawAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"investorAddress","type":"address"}],"name":"payToReachMaxOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
6080604052620151806000908155670de0b6b3a7640000600190815568056bc75e2d631000006002908155600683905560078290556008829055426009819055600a819055600b819055600c55600d8054600160a060020a03191673a4048772583220896ec93316616778b4ebc70f9d17905560179290925560c8601855601991909155601a805460ff1916909117905534801561009c57600080fd5b5060038054600160a060020a031916331790556150f0806100be6000396000f3fe608060405260043610610417576000357c0100000000000000000000000000000000000000000000000000000000900480638ed24df111610230578063d0e30db011610140578063ed88c68e116100c8578063f851a44011610097578063f851a44014611156578063f9b137d71461116b578063fa2e15c91461122d578063fba5ab3514611257578063fd5e79aa1461129257610417565b8063ed88c68e1461109a578063efbf64a7146110a2578063f142ca5e1461110e578063f6610aa61461114157610417565b8063db652fa71161010f578063db652fa714610fa5578063dcd6825014610fed578063df40da2914611025578063e54480481461105b578063e83a25c51461107057610417565b8063d0e30db014610417578063d202925b14610ed1578063d51527d114610f0a578063d7eb937914610f3d57610417565b8063a9e4176f116101c3578063b4dd489011610192578063b4dd489014610e2f578063c8f4095614610e5f578063c9a1e7b214610e74578063ca5e586614610e89578063cb60930d14610e9e57610417565b8063a9e4176f14610dac578063aa67c91914610dc1578063afe46ea214610de7578063b30e3b3814610e1a57610417565b8063952867c1116101ff578063952867c114610ce957806395a25efa14610d225780639f9aca8414610d4c578063a363fc9614610d9757610417565b80638ed24df114610b8d5780638f0fb9e014610ba25780638f35a75e14610bfd57806394dd27d214610cd457610417565b8063479537b61161032b5780636d462ae1116102be5780637dded8f21161028d5780637dded8f214610a175780637e4ca6cc14610a47578063863e76db14610b05578063892611ef14610b1a5780638a97fce014610b7857610417565b80636d462ae11461095a5780637726b16b1461099f5780637a9506ed146109cf5780637af6603b146109e457610417565b806359aab5f1116102fa57806359aab5f1146108695780635bdbeb341461087e578063647fbc13146108b75780636a86e8fd1461090257610417565b8063479537b61461077557806349aa4ee2146107f85780634b9f5c981461080d5780634c6de5091461083957610417565b806326969b67116103ae57806337f6a7ee1161037d57806337f6a7ee146106d95780633865079f146106ee578063395bf562146107185780633f3108961461072d578063459b88df1461074257610417565b806326969b671461065c57806327f6ae8c146106715780632d9b7f4d1461069a5780632fb011fa146106af57610417565b806314e53a40116103ea57806314e53a40146105cc578063152ad433146105e15780631b3f8e44146105f65780631bf602ff1461062957610417565b8063049f25971461042157806306a8f8a21461055f578063097d42e0146105905780630e8ac5c1146105b7575b61041f6112c5565b005b34801561042d57600080fd5b5061041f6004803603606081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843515159590949093506040810192506020013590506401000000008111156104ed57600080fd5b8201836020820111156104ff57600080fd5b8035906020019184602083028401116401000000008311171561052157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112d0945050505050565b34801561056b57600080fd5b50610574611792565b60408051600160a060020a039092168252519081900360200190f35b34801561059c57600080fd5b506105a56117a1565b60408051918252519081900360200190f35b3480156105c357600080fd5b5061041f6117a7565b3480156105d857600080fd5b506105a56118aa565b3480156105ed57600080fd5b506105a56118b0565b34801561060257600080fd5b5061041f6004803603602081101561061957600080fd5b5035600160a060020a03166118b6565b34801561063557600080fd5b5061041f6004803603602081101561064c57600080fd5b5035600160a060020a031661191d565b34801561066857600080fd5b506105a5611982565b34801561067d57600080fd5b506106866119c3565b604080519115158252519081900360200190f35b3480156106a657600080fd5b506105a56119cc565b3480156106bb57600080fd5b506105a5600480360360208110156106d257600080fd5b50356119d2565b3480156106e557600080fd5b506105a56119f1565b3480156106fa57600080fd5b506105a56004803603602081101561071157600080fd5b50356119f7565b34801561072457600080fd5b506105a5611a05565b34801561073957600080fd5b506105a5611a0b565b34801561074e57600080fd5b5061041f6004803603602081101561076557600080fd5b5035600160a060020a0316611a11565b34801561078157600080fd5b506107a86004803603602081101561079857600080fd5b5035600160a060020a0316611a76565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107e45781810151838201526020016107cc565b505050509050019250505060405180910390f35b34801561080457600080fd5b5061041f611d44565b34801561081957600080fd5b5061041f6004803603602081101561083057600080fd5b50351515611e27565b34801561084557600080fd5b5061041f6004803603604081101561085c57600080fd5b5080359060200135611e31565b34801561087557600080fd5b5061041f611f07565b34801561088a57600080fd5b5061041f600480360360408110156108a157600080fd5b50600160a060020a038135169060200135611f60565b3480156108c357600080fd5b5061041f600480360360a08110156108da57600080fd5b50600160a060020a038135169060208101359060408101359060608101359060800135611ff1565b34801561090e57600080fd5b5061092c6004803603602081101561092557600080fd5b503561207b565b60408051948552600160a060020a039093166020850152838301919091526060830152519081900360800190f35b34801561096657600080fd5b5061041f6004803603608081101561097d57600080fd5b5080359060208101359060408101359060600135600160a060020a03166120ac565b3480156109ab57600080fd5b5061041f600480360360408110156109c257600080fd5b508035906020013561221f565b3480156109db57600080fd5b506105a5612478565b3480156109f057600080fd5b5061041f60048036036020811015610a0757600080fd5b5035600160a060020a031661247e565b348015610a2357600080fd5b5061041f60048036036040811015610a3a57600080fd5b5080359060200135612558565b348015610a5357600080fd5b5061041f60048036036040811015610a6a57600080fd5b810190602081018135640100000000811115610a8557600080fd5b820183602082011115610a9757600080fd5b80359060200191846001830284011164010000000083111715610ab957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506126179050565b348015610b1157600080fd5b506105a5612718565b348015610b2657600080fd5b50610b4d60048036036020811015610b3d57600080fd5b5035600160a060020a031661271e565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b348015610b8457600080fd5b5061057461274c565b348015610b9957600080fd5b506105a561275b565b348015610bae57600080fd5b5061041f600480360360e0811015610bc557600080fd5b50803590602081013590604081013590600160a060020a03606082013581169160808101359091169060a08101359060c00135612761565b348015610c0957600080fd5b50610c3060048036036020811015610c2057600080fd5b5035600160a060020a031661293e565b60405180806020018415151515815260200180602001838103835286818151815260200191508051906020019060200280838360005b83811015610c7e578181015183820152602001610c66565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cbd578181015183820152602001610ca5565b505050509050019550505050505060405180910390f35b348015610ce057600080fd5b506105a5612ddf565b348015610cf557600080fd5b5061041f60048036036040811015610d0c57600080fd5b50600160a060020a038135169060200135612de5565b348015610d2e57600080fd5b5061057460048036036020811015610d4557600080fd5b5035612e47565b348015610d5857600080fd5b5061041f60048036036080811015610d6f57600080fd5b50600160a060020a038135811691602081013582169160408201351690606001351515612e6f565b348015610da357600080fd5b506105a5613276565b348015610db857600080fd5b506105a561327c565b61041f60048036036020811015610dd757600080fd5b5035600160a060020a0316613282565b348015610df357600080fd5b5061057460048036036020811015610e0a57600080fd5b5035600160a060020a03166132ce565b348015610e2657600080fd5b506105a5613338565b348015610e3b57600080fd5b5061041f60048036036040811015610e5257600080fd5b508035906020013561333e565b348015610e6b57600080fd5b5061041f6133e1565b348015610e8057600080fd5b506105a561343a565b348015610e9557600080fd5b5061041f613440565b348015610eaa57600080fd5b506105a560048036036020811015610ec157600080fd5b5035600160a060020a031661348f565b348015610edd57600080fd5b5061041f60048036036040811015610ef457600080fd5b50600160a060020a03813516906020013561369f565b348015610f1657600080fd5b5061041f60048036036020811015610f2d57600080fd5b5035600160a060020a0316613794565b348015610f4957600080fd5b50610f6760048036036020811015610f6057600080fd5b50356137fe565b60408051968752602087019590955285850193909352600160a060020a039182166060860152166080840152151560a0830152519081900360c00190f35b348015610fb157600080fd5b5061041f600480360360c0811015610fc857600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613846565b348015610ff957600080fd5b5061041f6004803603606081101561101057600080fd5b508035906020810135906040013515156138a2565b34801561103157600080fd5b5061041f6004803603606081101561104857600080fd5b50803590602081013590604001356139de565b34801561106757600080fd5b50610574613b4b565b34801561107c57600080fd5b506105a56004803603602081101561109357600080fd5b5035613b5a565b61041f613b68565b3480156110ae57600080fd5b506110cc600480360360208110156110c557600080fd5b5035613b72565b60408051978852602088019690965286860194909452600160a060020a0392831660608701529116608085015260a084015260c0830152519081900360e00190f35b34801561111a57600080fd5b5061041f6004803603602081101561113157600080fd5b5035600160a060020a0316613bbb565b34801561114d57600080fd5b506105a5613c25565b34801561116257600080fd5b50610574613c2b565b34801561117757600080fd5b50611180613c3a565b604051808781526020018060200186600160a060020a0316600160a060020a03168152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156111ed5781810151838201526020016111d5565b50505050905090810190601f16801561121a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561123957600080fd5b5061041f6004803603602081101561125057600080fd5b5035613cf4565b34801561126357600080fd5b5061041f6004803603604081101561127a57600080fd5b50600160a060020a0381358116916020013516613e3e565b34801561129e57600080fd5b5061041f600480360360208110156112b557600080fd5b5035600160a060020a0316613ee4565b6112ce33613fa7565b565b601a5460ff1615156112e157600080fd5b600554600160a060020a03163314806113045750600354600160a060020a031633145b151561130f57600080fd5b6012600084600481518110151561132257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002060040154156113525761178d565b61135a614e73565b6102a06040519081016040528085600081518110151561137657fe5b90602001906020020151600160a060020a0316815260200185600181518110151561139d57fe5b90602001906020020151600160a060020a031681526020018560028151811015156113c457fe5b90602001906020020151600160a060020a031681526020018560038151811015156113eb57fe5b90602001906020020151600160a060020a0316815260200183600081518110151561141257fe5b90602001906020020151815260200183600181518110151561143057fe5b90602001906020020151815260200183600281518110151561144e57fe5b906020019060200201518152602001841515815260200183600381518110151561147457fe5b90602001906020020151815260200183600481518110151561149257fe5b9060200190602002015181526020018360058151811015156114b057fe5b9060200190602002015181526020018360068151811015156114ce57fe5b9060200190602002015181526020018360078151811015156114ec57fe5b90602001906020020151815260200183600881518110151561150a57fe5b90602001906020020151815260200183600981518110151561152857fe5b90602001906020020151815260200183600a81518110151561154657fe5b90602001906020020151815260200183600b81518110151561156457fe5b90602001906020020151815260200183600c81518110151561158257fe5b60209081029190910181015182526001548282015260408051600080825281840183528285019190915281518181529283019091526060909201528551919250829160129190879060049081106115d557fe5b602090810291909101810151600160a060020a03908116835282820193909352604091820160002084518154600160a060020a031990811691861691909117825585830151600183018054831691871691909117905592850151600282018054851691861691909117905560608501516003820180549094169416939093179091556080830151600483015560a0830151600583015560c0830151600683015560e083015160078301805460ff191691151591909117905561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c0830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301556102408301516012830155610260830151805161171e9260138501920190614f3a565b50610280820151805161173b916014840191602090910190614f3a565b50905050600e84600481518110151561175057fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a03909216919091179055505b505050565b600454600160a060020a031681565b60065481565b600354600160a060020a03163314806117ca5750600554600160a060020a031633145b806117df5750600454600160a060020a031633145b15156117ea57600080fd5b601b5415156117f857600080fd5b600054600302601b6000015461180c61422f565b031161181757600080fd5b602154601f5460029091041061182c57600080fd5b601e54600160a060020a0316151561184357600080fd5b601e54604051600091600160a060020a0316903031908381818185875af1925050503d8060008114611891576040519150601f19603f3d011682016040523d82523d6000602084013e611896565b606091505b50909150508015156118a757600080fd5b50565b60075481565b600a5481565b600354600160a060020a03163314806118d95750600554600160a060020a031633145b806118ee5750600454600160a060020a031633145b15156118f957600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19169055565b600354600160a060020a03163314806119405750600554600160a060020a031633145b806119555750600454600160a060020a031633145b151561196057600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b336000908152601260205260408120600401546003116119a4575060016119c0565b602154602810156119bc5750602154601490046119c0565b5060025b90565b601a5460ff1681565b60105490565b60108054829081106119e057fe5b600091825260209091200154905081565b600e5490565b60118054829081106119e057fe5b600f5490565b60115490565b600354600160a060020a0316331480611a345750600554600160a060020a031633145b80611a495750600454600160a060020a031633145b1515611a5457600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600e54604080518281526020808402820101909152606091908290828015611aa8578160200160208202803883390190505b50905083816000815181101515611abb57fe5b600160a060020a03909216602092830290910190910152600060015b818114611d3857611ae6614e73565b8351600184019360129160009187918110611afd57fe5b6020908102909101810151600160a060020a03908116835282820193909352604091820160002082516102a081018452815485168152600182015485168184015260028201548516818501526003820154909416606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460ff16151560e085015260088101546101008501526009810154610120850152600a810154610140850152600b810154610160850152600c810154610180850152600d8101546101a0850152600e8101546101c0850152600f8101546101e08501526010810154610200850152601181015461022085015260128101546102408501526013810180548451818502810185019095528085529193610260860193909290830182828015611c4b57602002820191906000526020600020905b815481526020019060010190808311611c37575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015611ca357602002820191906000526020600020905b815481526020019060010190808311611c8f575b505050919092525050506020810151909150600160a060020a031615611cf15760208101518451600184019386918110611cd957fe5b600160a060020a039092166020928302909101909101525b6040810151600160a060020a031615611d325760408101518451600184019386918110611d1a57fe5b600160a060020a039092166020928302909101909101525b50611ad7565b5090925050505b919050565b600354600160a060020a0316331480611d675750600554600160a060020a031633145b80611d7c5750600454600160a060020a031633145b1515611d8757600080fd5b6040805160c081018252600080825282516020818101808652838352908401829052938301829052606083018290526080830182905260a08301919091528151601b908155905191929091611dde91601c91614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a090910151600690910155565b6118a73382614237565b600354600160a060020a0316331480611e545750600554600160a060020a031633145b80611e695750600454600160a060020a031633145b1515611e7457600080fd5b60008210158015611e865750600e5481105b1515611e9157600080fd5b815b8181101561178d576000600e82815481101515611eac57fe5b6000918252602080832090910154600160a060020a031680835260129091526040909120600a01549091501515611ee35750611eff565b600160a060020a03166000908152601260205260408120600a01555b600101611e93565b600354600160a060020a0316331480611f2a5750600554600160a060020a031633145b80611f3f5750600454600160a060020a031633145b1515611f4a57600080fd5b611f5261422f565b600a55600880546001019055565b600354600160a060020a0316331480611f835750600554600160a060020a031633145b80611f985750600454600160a060020a031633145b1515611fa357600080fd5b600160a060020a0382166000908152601260205260409020600781015460ff1615611fce5750611fed565b6000611fd98461348f565b9050611fea84826003600087614335565b50505b5050565b600354600160a060020a03163314806120145750600554600160a060020a031633145b806120295750600454600160a060020a031633145b151561203457600080fd5b600160a060020a0385166000908152601260205260408120600481015490911061205d57600080fd5b600b810194909455600c840192909255600d830155600e9091015550565b60156020526000908152604090208054600182015460028301546003909301549192600160a060020a039091169184565b601a5460ff1615156120bd57600080fd5b600554600160a060020a03163314806120e05750600354600160a060020a031633145b15156120eb57600080fd5b6000848152601360205260409020600101541561210757611fea565b61210f614ff2565b506040805160c0810182528581526020808201868152828401868152600160a060020a038087166060860181815260006080880181815260a089018281528e83526013808a528b84209a518b55975160018b810191909155965160028b0155925160038a018054918716600160a060020a03199283161790559051600490990180549351151560a060020a0274ff0000000000000000000000000000000000000000199a90961693909116929092179790971692909217909155600f80548084019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018a905584526012835293832001805493840181558252902001849055600680548301905550505050565b600354600160a060020a03163314806122425750600554600160a060020a031633145b806122575750600454600160a060020a031633145b151561226257600080fd5b600082101580156122745750600e5481105b151561227f57600080fd5b601b54151561228d57600080fd5b600054600302601b600001546122a161422f565b03116122ac57600080fd5b602154601f546002909104106122c157600080fd5b601e54600160a060020a0316156122d757600080fd5b6122df61422f565b600c55815b8181101561178d576000600e828154811015156122fd57fe5b6000918252602080832090910154600160a060020a0316808352601282526040808420601d90935283205490935090919060ff16151561233e57600261235b565b600160a060020a0383166000908152601d602052604090205460ff165b60ff16905080600214156123e257600082600901541180612392575081600501548260060154101580156123925750600682015415155b156123ba5761239f61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c83015561246d565b60008260090154118061240b5750816005015482600601541015801561240b5750600682015415155b156124495760078201805460ff191660011790556000600f83015561242e61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c8301555b5050506001016122e4565b60015481565b336000908152601260205260408120600501541161249b57600080fd5b3360009081526016602052604090208054600160a060020a0316156124db576002018054600160a060020a031916600160a060020a0383161790556118a7565b6124e3615027565b505060408051606081018252338082526020808301828152600160a060020a03868116858701908152600094855260169093529490922092518354908516600160a060020a03199182161784559151600184018054918616918416919091179055516002909201805492909316911617905550565b600354600160a060020a031633148061257b5750600554600160a060020a031633145b806125905750600454600160a060020a031633145b151561259b57600080fd5b600082101580156125ad5750600e5481105b15156125b857600080fd5b600b54600054601e02016125ca61422f565b116125d457611fed565b815b81811161178d5761260f600e828154811015156125ef57fe5b600091825260209091200154600754600160a060020a0390911690611f60565b6001016125d6565b600354600160a060020a031633148061263a5750600554600160a060020a031633145b8061264f5750600454600160a060020a031633145b151561265a57600080fd5b601b541561266757600080fd5b60c06040519081016040528061267b61422f565b81526020808201859052600160a060020a03841660408301526000606083018190526080830152600e5460a0909201919091528151601b90815582820151805191926126cd92601c9290910190614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a0909101516006909101555050565b60005481565b601660205260009081526040902080546001820154600290920154600160a060020a03918216928216911683565b600554600160a060020a031681565b60195481565b601a5460ff16151561277257600080fd5b600554600160a060020a03163314806127955750600354600160a060020a031633145b15156127a057600080fd5b600087815260146020526040902060010154156127bc57612935565b6127c4615047565b60e06040519081016040528089815260200188815260200187815260200186600160a060020a0316815260200185600160a060020a0316815260200184815260200183815250905080601460008a815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c0820151816006015590505060006012600087600160a060020a0316600160a060020a03168152602001908152602001600020905080601401899080600181540180825580915050906001820390600052602060002001600090919290919091505550601089908060018154018082558091505090600182039060005260206000200160009091929091909150555050505b50505050505050565b60408051600480825260a082019092526060916000918391602082016080803883395050604080516010808252610220820190925292955090506020820161020080388339019050509050612991614e73565b600160a060020a0380861660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e0860152601081015461020086015260118101546102208601529182015461024085015260138201805484518184028101840190955280855292936102608601939092830182828015612ad357602002820191906000526020600020905b815481526020019060010190808311612abf575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015612b2b57602002820191906000526020600020905b815481526020019060010190808311612b17575b50505050508152505090508060000151846000815181101515612b4a57fe5b600160a060020a039092166020928302909101820152810151845185906001908110612b7257fe5b600160a060020a039092166020928302909101909101526040810151845185906002908110612b9d57fe5b600160a060020a039092166020928302909101909101526060810151845185906003908110612bc857fe5b600160a060020a039092166020928302909101909101526080810151825183906000908110612bf357fe5b6020908102909101015260a0810151825183906001908110612c1157fe5b6020908102909101015260c0810151825183906002908110612c2f57fe5b60209081029091010152610100810151825183906003908110612c4e57fe5b60209081029091010152610120810151825183906004908110612c6d57fe5b60209081029091010152610140810151825183906005908110612c8c57fe5b60209081029091010152610160810151825183906006908110612cab57fe5b60209081029091010152610180810151825183906007908110612cca57fe5b602090810290910101526101a0810151825183906008908110612ce957fe5b602090810290910101526101c0810151825183906009908110612d0857fe5b602090810290910101526101e081015182518390600a908110612d2757fe5b6020908102909101015261020081015182518390600b908110612d4657fe5b6020908102909101015261022081015182518390600c908110612d6557fe5b60209081029091010152612d788561348f565b82600d815181101515612d8757fe5b60209081029091010152612d9a85614409565b82600e815181101515612da957fe5b6020908102909101015261024081015182518390600f908110612dc857fe5b6020908102909101015260e0015191509193909250565b60095481565b600354600160a060020a0316331480612e085750600554600160a060020a031633145b80612e1d5750600454600160a060020a031633145b1515612e2857600080fd5b600160a060020a03909116600090815260126020526040902060090155565b600e805482908110612e5557fe5b600091825260209091200154600160a060020a0316905081565b600354600160a060020a0316331480612e925750600554600160a060020a031633145b80612ea75750600454600160a060020a031633145b1515612eb257600080fd5b600160a060020a0380851660009081526012602052604080822092851682529020600e5415612f365760048201541515612eeb57600080fd5b60048101541515612efb57600080fd5b8215612f1e576001810154600160a060020a031615612f1957600080fd5b612f36565b6002810154600160a060020a031615612f3657600080fd5b612f3e614e73565b6102a06040519081016040528086600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200188600160a060020a03168152602001836004015460010181526020016000815260200160008152602001600015158152602001612fb561422f565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ffa61422f565b815260200160015481526020016000604051908082528060200260200182016040528015613032578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613063578160200160208202803883390190505b509052600160a060020a0387811660009081526012602081815260409283902085518154600160a060020a031990811691871691909117825586830151600183018054831691881691909117905593860151600282018054861691871691909117905560608601516003820180549095169516949094179092556080840151600484015560a0840151600584015560c0840151600684015560e084015160078401805460ff191691151591909117905561010084015160088401556101208401516009840155610140840151600a840155610160840151600b840155610180840151600c8401556101a0840151600d8401556101c0840151600e8401556101e0840151600f8401556102008401516010840155610220840151601184015561024084015190830155610260830151805193945084936131a89260138501920190614f3a565b5061028082015180516131c5916014840191602090910190614f3a565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a038916179055506004820154151561322657505050611fea565b831561324e57600182018054600160a060020a031916600160a060020a038816179055612935565b600282018054600160a060020a038816600160a060020a031990911617905550505050505050565b600b5481565b60025481565b600354600160a060020a03163314806132a55750600554600160a060020a031633145b806132ba5750600454600160a060020a031633145b15156132c557600080fd5b6118a781613fa7565b60006132d8615027565b50600160a060020a03808316600090815260166020908152604091829020825160608101845281548516815260018201548516928101839052600290910154909316918301919091528015613330579150611d3f9050565b509192915050565b60085481565b600354600160a060020a03163314806133615750600554600160a060020a031633145b806133765750600454600160a060020a031633145b151561338157600080fd5b600082101580156133935750600e5481105b151561339e57600080fd5b815b81811161178d576133d9600e828154811015156133b957fe5b600091825260209091200154600854600160a060020a039091169061369f565b6001016133a0565b600354600160a060020a03163314806134045750600554600160a060020a031633145b806134195750600454600160a060020a031633145b151561342457600080fd5b61342c61422f565b600955600780546001019055565b600c5481565b600354600160a060020a03163314806134635750600554600160a060020a031633145b806134785750600454600160a060020a031633145b151561348357600080fd5b601a805460ff19169055565b6000613499614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e08601526010810154610200860152601181015461022086015291820154610240850152601382018054845181840281018401909552808552929361026086019390928301828280156135db57602002820191906000526020600020905b8154815260200190600101908083116135c7575b505050505081526020016014820180548060200260200160405190810160405280929190818152602001828054801561363357602002820191906000526020600020905b81548152602001906001019080831161361f575b5050509190925250505060a08101516101608201516101c08301516101a084015161018085015194955092939192909160008383106136725783613674565b825b9050600060646136858888866146e2565b830281151561369057fe5b049a9950505050505050505050565b600354600160a060020a03163314806136c25750600554600160a060020a031633145b806136d75750600454600160a060020a031633145b15156136e257600080fd5b60006136ed83614409565b600160a060020a03841660009081526012602052604081209054919250908311156137715760138101805490600090600019830183811061372a57fe5b60009182526020808320909101548252601381526040808320600101805489900390819055600160a060020a038a16845260129092529091206008015550611fed92505050565b600781015460ff1615613785575050611fed565b611fea84836002600087614335565b600354600160a060020a03163314806137b75750600554600160a060020a031633145b806137cc5750600454600160a060020a031633145b15156137d757600080fd5b6137df61422f565b600160a060020a03909116600090815260126020526040902060080155565b60136020526000908152604090208054600182015460028301546003840154600490940154929391929091600160a060020a03908116919081169060a060020a900460ff1686565b601a5460ff16151561385757600080fd5b600554600160a060020a031633148061387a5750600354600160a060020a031633145b151561388557600080fd5b600795909555600893909355600991909155600a55600b55600c55565b600354600160a060020a03163314806138c55750600554600160a060020a031633145b806138da5750600454600160a060020a031633145b15156138e557600080fd5b600054600302601b600001546138f961422f565b031161390457600080fd5b825b82811015611fea576000600e8281548110151561391f57fe5b600091825260209091200154600160a060020a0316905082801561395e5750600160a060020a0381166000908152601d602052604090205460ff166003145b1561398757600160a060020a03166000908152601d60205260409020805460ff191690556139d6565b600160a060020a0381166000908152601d602052604090205460ff1615156139b357601f805460010190555b600160a060020a03166000908152601d60205260409020805460ff191660031790555b600101613906565b600354600160a060020a0316331480613a015750600554600160a060020a031633145b80613a165750600454600160a060020a031633145b1515613a2157600080fd5b601b541515613a2f57600080fd5b600054600302601b60000154613a4361422f565b0311613a4e57600080fd5b602154602054600290910410613a6357600080fd5b601e54600160a060020a031615613a7957600080fd5b6032831115613a8757600080fd5b60008210158015613a995750600e5481105b1515613aa457600080fd5b815b818111611fea576000600e82815481101515613abe57fe5b6000918252602080832090910154600160a060020a03168083526012909152604082206009810154919350911015613af7575050613b43565b600781015460ff1615613b0b575050613b43565b60058101546006820154600282048110613b285750505050613b43565b613b3e84826064858c0204036006600080614335565b505050505b600101613aa6565b600d54600160a060020a031681565b600f8054829081106119e057fe5b6006805434019055565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293600160a060020a0392831693929091169187565b600354600160a060020a0316331480613bde5750600554600160a060020a031633145b80613bf35750600454600160a060020a031633145b1515613bfe57600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19166001179055565b60185481565b600354600160a060020a031681565b601b8054601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529394939291830182828015613cc75780601f10613c9c57610100808354040283529160200191613cc7565b820191906000526020600020905b815481529060010190602001808311613caa57829003601f168201915b505050506003830154600484015460058501546006909501549394600160a060020a039092169390925086565b600354600160a060020a0316331480613d175750600554600160a060020a031633145b80613d2c5750600454600160a060020a031633145b1515613d3757600080fd5b60008181526013602052604090206004810154600160a060020a03161515613d5e57600080fd5b600281015460005b6004830154600160a060020a031615801590613d83575060185481105b15611fea576004830154600160a060020a03811660009081526012602052604090209060a060020a900460ff1615613dc457600e8101805484019055613dcf565b600d81018054840190555b6004840180548254600160a060020a03908116600090815260126020526040902060019081015474ff00000000000000000000000000000000000000001984169383169083161460a060020a0292909217808455935416600160a060020a031990931692909217905501613d66565b600354600160a060020a0316331480613e615750600554600160a060020a031633145b80613e765750600454600160a060020a031633145b1515613e8157600080fd5b600160a060020a03828116600090815260166020526040902060028101549091838116911614613eb057600080fd5b600281018054600160a060020a031990811690915560019091018054909116600160a060020a039290921691909117905550565b600354600160a060020a0316331480613f075750600554600160a060020a031633145b80613f1c5750600454600160a060020a031633145b1515613f2757600080fd5b6000613f328261348f565b90506000613f3f83614409565b600160a060020a038416600090815260126020526040812060068101546005820154600f9092015493945092909182118015613f845750816003028185878601010110155b1515613f8f57600080fd5b613f9f8660006064600080614335565b505050505050565b600160a060020a038116600090815260126020526040902060048101541515613fcf57600080fd5b60058101541515613feb576012810154341015613feb57600080fd5b601954600a82015410613ffd57600080fd5b600981015460321161400e57600080fd5b600981015415806140305750600054600702816008015461402d61422f565b03105b8061403e5750600581015415155b151561404957600080fd5b600680543401905560004361405c61422f565b84346040516020018085815260200184815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200194505050505060405160208183030381529060405280519060200120905060006002543484600501540111156140dc578260050154600254036140de565b345b90508015156140ef575050506118a7565b8254600160a060020a0390811660009081526012602052604090206001015481169085161461411c614ff2565b60c06040519081016040528085815260200161413661422f565b81526020808201869052600160a060020a03808a166040808501919091528954821660608086019190915287151560809586015260008a81526013855282902086518155938601516001850155908501516002840155840151600383018054918316600160a060020a0319928316179055928401516004909201805460a0860151151560a060020a0274ff000000000000000000000000000000000000000019949093169416939093179190911617905590506141f28461473e565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020191909155505050565b601754420190565b600160a060020a0382166000908152601260205260408120600501541161425d57600080fd5b600160a060020a03821660009081526012602052604090206007015460ff161561428657600080fd5b600054600302601b6000015461429a61422f565b03106142a557600080fd5b6000816142b35760016142b6565b60025b600160a060020a0384166000908152601d602052604090205490915060ff9081169082168114156142e657600080fd5b6142ef836147fd565b60ff81161515614300575050611fed565b821561431d5761430e611982565b60208054919091039055611fea565b614325611982565b601f805491909103905550505050565b83158015614344575082606414155b1561434e57614402565b600160a060020a038516151561436357614402565b600160a060020a0385166000908152601260205260408120906143858761348f565b905060008161439389614409565b84600f01540101905085600114156143a85786015b8260050154600302836006015482011015156143d1576143c981898461485d565b505050614402565b600083600f015411156143f1576143f183600f0154896004600080614906565b6143fe8789888888614906565b5050505b5050505050565b6000614413614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e086015260108101546102008601526011810154610220860152918201546102408501526013820180548451818402810184019095528085529293610260860193909283018282801561455557602002820191906000526020600020905b815481526020019060010190808311614541575b50505050508152602001601482018054806020026020016040519081016040528092919081815260200182805480156145ad57602002820191906000526020600020905b815481526020019060010190808311614599575b50505091909252505050610260810151519091506000805b828110156146d0576145d5614ff2565b60136000866102600151848151811015156145ec57fe5b60209081029091018101518252818101929092526040908101600020815160c0810183528154815260018201549381018490526002820154928101929092526003810154600160a060020a039081166060840152600490910154908116608083015260ff60a060020a90910416151560a0820152610100870151909250111561467557506146c8565b600054816020015161468561422f565b03106146c65760008054826020015161469c61422f565b038115156146a657fe5b04905060006064836040015183028115156146bd57fe5b04949094019350505b505b6001016145c5565b50610200909201519091039392505050565b6000806146ee84614998565b905060006146fb86614a1f565b9050600061470885614a1f565b90506000828410614719578261471b565b835b9050600081831061472c578161472e565b825b6002029998505050505050505050565b60008181526013602081815260408084206002810154600380830154600160a060020a039081168852601286528488209687018054600181018255908952958820909501889055600586018054830190558501549093168086529190942091929181156147ba57600b8101805485019055600c81018054850190555b6001548160050154101580156147d55750600781015460ff16155b15613f9f57613f9f82600a86600389015491900490600190600160a060020a03166000614335565b8061480957600161480c565b60025b336000908152601d60205260409020805460ff191660ff9290921691909117905580156148495761483b611982565b601f805490910190556118a7565b614851611982565b60208054909101905550565b600160a060020a0382166000908152601260205260408120600681015460058201549192600390920203908186039084111561489e5761489e856000614a99565b6009830180546001908101909155600a84018054909101905560058301805460009182905560068501919091556148d361422f565b600885015560006010850155600f840182905560098401546148f790879083614b2d565b61293583876000806000614c57565b600160a060020a0384166000908152601260205260409020600601805486019055600483141561494d57600160a060020a0384166000908152601260205260408120600f01555b8260031415614960576149608482614a99565b826002141561498b57600160a060020a03841660009081526012602052604090206010018054860190555b6144028585858585614c57565b60006801a055690d9db800008210156149b357506000611d3f565b680340aad21b3b7000008210156149cc57506001611d3f565b6804e1003b28d92800008210156149e557506002611d3f565b68068155a43676e000008210156149fe57506003611d3f565b680821ab0d4414980000821015614a1757506004611d3f565b506005919050565b6000671bc16d674ec80000821015614a3957506000611d3f565b673782dace9d900000821015614a5157506001611d3f565b6753444835ec580000821015614a6957506002611d3f565b676f05b59d3b200000821015614a8157506003611d3f565b678ac7230489e80000821015614a1757506004611d3f565b600160a060020a03821660009081526012602052604090206007546003108015614ac257508115155b15614ada576000600d8201819055600e820155614b1b565b600e810154600d82015410614b0457600e81018054600d8301805491909103905560009055614b1b565b600d81018054600e83018054919091039055600090555b811561178d576000600c820155505050565b600043614b3861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a0388160260608301526074808301879052815180840390910181526094909201905280519101209050614b92615083565b60806040519081016040528083815260200186600160a060020a03168152602001858152602001614bc161422f565b90526011805460018082019092557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801849055600093845260156020908152604080862084518155848301519381018054600160a060020a031916600160a060020a0395861617905584820151600282015560609094015160039094019390935596168352601295869052909120909301555050565b841515614c6357614402565b6000614c6e856132ce565b604051909150600160a060020a03821690605a606489040280156108fc02916000818181858888f19350505050158015614cac573d6000803e3d6000fd5b50600d54604051600160a060020a0390911690600a606489040280156108fc02916000818181858888f19350505050158015614cec573d6000803e3d6000fd5b50600044614cf861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a038a16026060830152607482018a905260948083018990528151808403909101815260b4909201905280519101209050614d59615047565b60e060405190810160405280838152602001614d7361422f565b815260208082018b9052600160a060020a03808b1660408085018290528a831660608087019190915260808087018e905260a09687018c905260008a815260148088528482208a5181558a8901516001808301919091558b8701516002830155948b0151600382018054918a16600160a060020a0319928316179055938b01516004820180549190991694169390931790965596880151600582015560c09097015160069097019690965590845260128352832001805480850182559083529082200184905560108054928301815590527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672019190915550505050505050565b6102a0604051908101604052806000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b828054828255906000526020600020908101928215614f75579160200282015b82811115614f75578251825591602001919060010190614f5a565b50614f819291506150aa565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fc657805160ff1916838001178555614f75565b82800160010185558215614f755791820182811115614f75578251825591602001919060010190614f5a565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080516060810182526000808252602082018190529181019190915290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6119c091905b80821115614f8157600081556001016150b056fea165627a7a723058202fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d570029
Deployed Bytecode
0x608060405260043610610417576000357c0100000000000000000000000000000000000000000000000000000000900480638ed24df111610230578063d0e30db011610140578063ed88c68e116100c8578063f851a44011610097578063f851a44014611156578063f9b137d71461116b578063fa2e15c91461122d578063fba5ab3514611257578063fd5e79aa1461129257610417565b8063ed88c68e1461109a578063efbf64a7146110a2578063f142ca5e1461110e578063f6610aa61461114157610417565b8063db652fa71161010f578063db652fa714610fa5578063dcd6825014610fed578063df40da2914611025578063e54480481461105b578063e83a25c51461107057610417565b8063d0e30db014610417578063d202925b14610ed1578063d51527d114610f0a578063d7eb937914610f3d57610417565b8063a9e4176f116101c3578063b4dd489011610192578063b4dd489014610e2f578063c8f4095614610e5f578063c9a1e7b214610e74578063ca5e586614610e89578063cb60930d14610e9e57610417565b8063a9e4176f14610dac578063aa67c91914610dc1578063afe46ea214610de7578063b30e3b3814610e1a57610417565b8063952867c1116101ff578063952867c114610ce957806395a25efa14610d225780639f9aca8414610d4c578063a363fc9614610d9757610417565b80638ed24df114610b8d5780638f0fb9e014610ba25780638f35a75e14610bfd57806394dd27d214610cd457610417565b8063479537b61161032b5780636d462ae1116102be5780637dded8f21161028d5780637dded8f214610a175780637e4ca6cc14610a47578063863e76db14610b05578063892611ef14610b1a5780638a97fce014610b7857610417565b80636d462ae11461095a5780637726b16b1461099f5780637a9506ed146109cf5780637af6603b146109e457610417565b806359aab5f1116102fa57806359aab5f1146108695780635bdbeb341461087e578063647fbc13146108b75780636a86e8fd1461090257610417565b8063479537b61461077557806349aa4ee2146107f85780634b9f5c981461080d5780634c6de5091461083957610417565b806326969b67116103ae57806337f6a7ee1161037d57806337f6a7ee146106d95780633865079f146106ee578063395bf562146107185780633f3108961461072d578063459b88df1461074257610417565b806326969b671461065c57806327f6ae8c146106715780632d9b7f4d1461069a5780632fb011fa146106af57610417565b806314e53a40116103ea57806314e53a40146105cc578063152ad433146105e15780631b3f8e44146105f65780631bf602ff1461062957610417565b8063049f25971461042157806306a8f8a21461055f578063097d42e0146105905780630e8ac5c1146105b7575b61041f6112c5565b005b34801561042d57600080fd5b5061041f6004803603606081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843515159590949093506040810192506020013590506401000000008111156104ed57600080fd5b8201836020820111156104ff57600080fd5b8035906020019184602083028401116401000000008311171561052157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112d0945050505050565b34801561056b57600080fd5b50610574611792565b60408051600160a060020a039092168252519081900360200190f35b34801561059c57600080fd5b506105a56117a1565b60408051918252519081900360200190f35b3480156105c357600080fd5b5061041f6117a7565b3480156105d857600080fd5b506105a56118aa565b3480156105ed57600080fd5b506105a56118b0565b34801561060257600080fd5b5061041f6004803603602081101561061957600080fd5b5035600160a060020a03166118b6565b34801561063557600080fd5b5061041f6004803603602081101561064c57600080fd5b5035600160a060020a031661191d565b34801561066857600080fd5b506105a5611982565b34801561067d57600080fd5b506106866119c3565b604080519115158252519081900360200190f35b3480156106a657600080fd5b506105a56119cc565b3480156106bb57600080fd5b506105a5600480360360208110156106d257600080fd5b50356119d2565b3480156106e557600080fd5b506105a56119f1565b3480156106fa57600080fd5b506105a56004803603602081101561071157600080fd5b50356119f7565b34801561072457600080fd5b506105a5611a05565b34801561073957600080fd5b506105a5611a0b565b34801561074e57600080fd5b5061041f6004803603602081101561076557600080fd5b5035600160a060020a0316611a11565b34801561078157600080fd5b506107a86004803603602081101561079857600080fd5b5035600160a060020a0316611a76565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107e45781810151838201526020016107cc565b505050509050019250505060405180910390f35b34801561080457600080fd5b5061041f611d44565b34801561081957600080fd5b5061041f6004803603602081101561083057600080fd5b50351515611e27565b34801561084557600080fd5b5061041f6004803603604081101561085c57600080fd5b5080359060200135611e31565b34801561087557600080fd5b5061041f611f07565b34801561088a57600080fd5b5061041f600480360360408110156108a157600080fd5b50600160a060020a038135169060200135611f60565b3480156108c357600080fd5b5061041f600480360360a08110156108da57600080fd5b50600160a060020a038135169060208101359060408101359060608101359060800135611ff1565b34801561090e57600080fd5b5061092c6004803603602081101561092557600080fd5b503561207b565b60408051948552600160a060020a039093166020850152838301919091526060830152519081900360800190f35b34801561096657600080fd5b5061041f6004803603608081101561097d57600080fd5b5080359060208101359060408101359060600135600160a060020a03166120ac565b3480156109ab57600080fd5b5061041f600480360360408110156109c257600080fd5b508035906020013561221f565b3480156109db57600080fd5b506105a5612478565b3480156109f057600080fd5b5061041f60048036036020811015610a0757600080fd5b5035600160a060020a031661247e565b348015610a2357600080fd5b5061041f60048036036040811015610a3a57600080fd5b5080359060200135612558565b348015610a5357600080fd5b5061041f60048036036040811015610a6a57600080fd5b810190602081018135640100000000811115610a8557600080fd5b820183602082011115610a9757600080fd5b80359060200191846001830284011164010000000083111715610ab957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506126179050565b348015610b1157600080fd5b506105a5612718565b348015610b2657600080fd5b50610b4d60048036036020811015610b3d57600080fd5b5035600160a060020a031661271e565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b348015610b8457600080fd5b5061057461274c565b348015610b9957600080fd5b506105a561275b565b348015610bae57600080fd5b5061041f600480360360e0811015610bc557600080fd5b50803590602081013590604081013590600160a060020a03606082013581169160808101359091169060a08101359060c00135612761565b348015610c0957600080fd5b50610c3060048036036020811015610c2057600080fd5b5035600160a060020a031661293e565b60405180806020018415151515815260200180602001838103835286818151815260200191508051906020019060200280838360005b83811015610c7e578181015183820152602001610c66565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cbd578181015183820152602001610ca5565b505050509050019550505050505060405180910390f35b348015610ce057600080fd5b506105a5612ddf565b348015610cf557600080fd5b5061041f60048036036040811015610d0c57600080fd5b50600160a060020a038135169060200135612de5565b348015610d2e57600080fd5b5061057460048036036020811015610d4557600080fd5b5035612e47565b348015610d5857600080fd5b5061041f60048036036080811015610d6f57600080fd5b50600160a060020a038135811691602081013582169160408201351690606001351515612e6f565b348015610da357600080fd5b506105a5613276565b348015610db857600080fd5b506105a561327c565b61041f60048036036020811015610dd757600080fd5b5035600160a060020a0316613282565b348015610df357600080fd5b5061057460048036036020811015610e0a57600080fd5b5035600160a060020a03166132ce565b348015610e2657600080fd5b506105a5613338565b348015610e3b57600080fd5b5061041f60048036036040811015610e5257600080fd5b508035906020013561333e565b348015610e6b57600080fd5b5061041f6133e1565b348015610e8057600080fd5b506105a561343a565b348015610e9557600080fd5b5061041f613440565b348015610eaa57600080fd5b506105a560048036036020811015610ec157600080fd5b5035600160a060020a031661348f565b348015610edd57600080fd5b5061041f60048036036040811015610ef457600080fd5b50600160a060020a03813516906020013561369f565b348015610f1657600080fd5b5061041f60048036036020811015610f2d57600080fd5b5035600160a060020a0316613794565b348015610f4957600080fd5b50610f6760048036036020811015610f6057600080fd5b50356137fe565b60408051968752602087019590955285850193909352600160a060020a039182166060860152166080840152151560a0830152519081900360c00190f35b348015610fb157600080fd5b5061041f600480360360c0811015610fc857600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613846565b348015610ff957600080fd5b5061041f6004803603606081101561101057600080fd5b508035906020810135906040013515156138a2565b34801561103157600080fd5b5061041f6004803603606081101561104857600080fd5b50803590602081013590604001356139de565b34801561106757600080fd5b50610574613b4b565b34801561107c57600080fd5b506105a56004803603602081101561109357600080fd5b5035613b5a565b61041f613b68565b3480156110ae57600080fd5b506110cc600480360360208110156110c557600080fd5b5035613b72565b60408051978852602088019690965286860194909452600160a060020a0392831660608701529116608085015260a084015260c0830152519081900360e00190f35b34801561111a57600080fd5b5061041f6004803603602081101561113157600080fd5b5035600160a060020a0316613bbb565b34801561114d57600080fd5b506105a5613c25565b34801561116257600080fd5b50610574613c2b565b34801561117757600080fd5b50611180613c3a565b604051808781526020018060200186600160a060020a0316600160a060020a03168152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156111ed5781810151838201526020016111d5565b50505050905090810190601f16801561121a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561123957600080fd5b5061041f6004803603602081101561125057600080fd5b5035613cf4565b34801561126357600080fd5b5061041f6004803603604081101561127a57600080fd5b50600160a060020a0381358116916020013516613e3e565b34801561129e57600080fd5b5061041f600480360360208110156112b557600080fd5b5035600160a060020a0316613ee4565b6112ce33613fa7565b565b601a5460ff1615156112e157600080fd5b600554600160a060020a03163314806113045750600354600160a060020a031633145b151561130f57600080fd5b6012600084600481518110151561132257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002060040154156113525761178d565b61135a614e73565b6102a06040519081016040528085600081518110151561137657fe5b90602001906020020151600160a060020a0316815260200185600181518110151561139d57fe5b90602001906020020151600160a060020a031681526020018560028151811015156113c457fe5b90602001906020020151600160a060020a031681526020018560038151811015156113eb57fe5b90602001906020020151600160a060020a0316815260200183600081518110151561141257fe5b90602001906020020151815260200183600181518110151561143057fe5b90602001906020020151815260200183600281518110151561144e57fe5b906020019060200201518152602001841515815260200183600381518110151561147457fe5b90602001906020020151815260200183600481518110151561149257fe5b9060200190602002015181526020018360058151811015156114b057fe5b9060200190602002015181526020018360068151811015156114ce57fe5b9060200190602002015181526020018360078151811015156114ec57fe5b90602001906020020151815260200183600881518110151561150a57fe5b90602001906020020151815260200183600981518110151561152857fe5b90602001906020020151815260200183600a81518110151561154657fe5b90602001906020020151815260200183600b81518110151561156457fe5b90602001906020020151815260200183600c81518110151561158257fe5b60209081029190910181015182526001548282015260408051600080825281840183528285019190915281518181529283019091526060909201528551919250829160129190879060049081106115d557fe5b602090810291909101810151600160a060020a03908116835282820193909352604091820160002084518154600160a060020a031990811691861691909117825585830151600183018054831691871691909117905592850151600282018054851691861691909117905560608501516003820180549094169416939093179091556080830151600483015560a0830151600583015560c0830151600683015560e083015160078301805460ff191691151591909117905561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c0830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301556102408301516012830155610260830151805161171e9260138501920190614f3a565b50610280820151805161173b916014840191602090910190614f3a565b50905050600e84600481518110151561175057fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a03909216919091179055505b505050565b600454600160a060020a031681565b60065481565b600354600160a060020a03163314806117ca5750600554600160a060020a031633145b806117df5750600454600160a060020a031633145b15156117ea57600080fd5b601b5415156117f857600080fd5b600054600302601b6000015461180c61422f565b031161181757600080fd5b602154601f5460029091041061182c57600080fd5b601e54600160a060020a0316151561184357600080fd5b601e54604051600091600160a060020a0316903031908381818185875af1925050503d8060008114611891576040519150601f19603f3d011682016040523d82523d6000602084013e611896565b606091505b50909150508015156118a757600080fd5b50565b60075481565b600a5481565b600354600160a060020a03163314806118d95750600554600160a060020a031633145b806118ee5750600454600160a060020a031633145b15156118f957600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19169055565b600354600160a060020a03163314806119405750600554600160a060020a031633145b806119555750600454600160a060020a031633145b151561196057600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b336000908152601260205260408120600401546003116119a4575060016119c0565b602154602810156119bc5750602154601490046119c0565b5060025b90565b601a5460ff1681565b60105490565b60108054829081106119e057fe5b600091825260209091200154905081565b600e5490565b60118054829081106119e057fe5b600f5490565b60115490565b600354600160a060020a0316331480611a345750600554600160a060020a031633145b80611a495750600454600160a060020a031633145b1515611a5457600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600e54604080518281526020808402820101909152606091908290828015611aa8578160200160208202803883390190505b50905083816000815181101515611abb57fe5b600160a060020a03909216602092830290910190910152600060015b818114611d3857611ae6614e73565b8351600184019360129160009187918110611afd57fe5b6020908102909101810151600160a060020a03908116835282820193909352604091820160002082516102a081018452815485168152600182015485168184015260028201548516818501526003820154909416606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460ff16151560e085015260088101546101008501526009810154610120850152600a810154610140850152600b810154610160850152600c810154610180850152600d8101546101a0850152600e8101546101c0850152600f8101546101e08501526010810154610200850152601181015461022085015260128101546102408501526013810180548451818502810185019095528085529193610260860193909290830182828015611c4b57602002820191906000526020600020905b815481526020019060010190808311611c37575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015611ca357602002820191906000526020600020905b815481526020019060010190808311611c8f575b505050919092525050506020810151909150600160a060020a031615611cf15760208101518451600184019386918110611cd957fe5b600160a060020a039092166020928302909101909101525b6040810151600160a060020a031615611d325760408101518451600184019386918110611d1a57fe5b600160a060020a039092166020928302909101909101525b50611ad7565b5090925050505b919050565b600354600160a060020a0316331480611d675750600554600160a060020a031633145b80611d7c5750600454600160a060020a031633145b1515611d8757600080fd5b6040805160c081018252600080825282516020818101808652838352908401829052938301829052606083018290526080830182905260a08301919091528151601b908155905191929091611dde91601c91614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a090910151600690910155565b6118a73382614237565b600354600160a060020a0316331480611e545750600554600160a060020a031633145b80611e695750600454600160a060020a031633145b1515611e7457600080fd5b60008210158015611e865750600e5481105b1515611e9157600080fd5b815b8181101561178d576000600e82815481101515611eac57fe5b6000918252602080832090910154600160a060020a031680835260129091526040909120600a01549091501515611ee35750611eff565b600160a060020a03166000908152601260205260408120600a01555b600101611e93565b600354600160a060020a0316331480611f2a5750600554600160a060020a031633145b80611f3f5750600454600160a060020a031633145b1515611f4a57600080fd5b611f5261422f565b600a55600880546001019055565b600354600160a060020a0316331480611f835750600554600160a060020a031633145b80611f985750600454600160a060020a031633145b1515611fa357600080fd5b600160a060020a0382166000908152601260205260409020600781015460ff1615611fce5750611fed565b6000611fd98461348f565b9050611fea84826003600087614335565b50505b5050565b600354600160a060020a03163314806120145750600554600160a060020a031633145b806120295750600454600160a060020a031633145b151561203457600080fd5b600160a060020a0385166000908152601260205260408120600481015490911061205d57600080fd5b600b810194909455600c840192909255600d830155600e9091015550565b60156020526000908152604090208054600182015460028301546003909301549192600160a060020a039091169184565b601a5460ff1615156120bd57600080fd5b600554600160a060020a03163314806120e05750600354600160a060020a031633145b15156120eb57600080fd5b6000848152601360205260409020600101541561210757611fea565b61210f614ff2565b506040805160c0810182528581526020808201868152828401868152600160a060020a038087166060860181815260006080880181815260a089018281528e83526013808a528b84209a518b55975160018b810191909155965160028b0155925160038a018054918716600160a060020a03199283161790559051600490990180549351151560a060020a0274ff0000000000000000000000000000000000000000199a90961693909116929092179790971692909217909155600f80548084019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018a905584526012835293832001805493840181558252902001849055600680548301905550505050565b600354600160a060020a03163314806122425750600554600160a060020a031633145b806122575750600454600160a060020a031633145b151561226257600080fd5b600082101580156122745750600e5481105b151561227f57600080fd5b601b54151561228d57600080fd5b600054600302601b600001546122a161422f565b03116122ac57600080fd5b602154601f546002909104106122c157600080fd5b601e54600160a060020a0316156122d757600080fd5b6122df61422f565b600c55815b8181101561178d576000600e828154811015156122fd57fe5b6000918252602080832090910154600160a060020a0316808352601282526040808420601d90935283205490935090919060ff16151561233e57600261235b565b600160a060020a0383166000908152601d602052604090205460ff165b60ff16905080600214156123e257600082600901541180612392575081600501548260060154101580156123925750600682015415155b156123ba5761239f61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c83015561246d565b60008260090154118061240b5750816005015482600601541015801561240b5750600682015415155b156124495760078201805460ff191660011790556000600f83015561242e61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c8301555b5050506001016122e4565b60015481565b336000908152601260205260408120600501541161249b57600080fd5b3360009081526016602052604090208054600160a060020a0316156124db576002018054600160a060020a031916600160a060020a0383161790556118a7565b6124e3615027565b505060408051606081018252338082526020808301828152600160a060020a03868116858701908152600094855260169093529490922092518354908516600160a060020a03199182161784559151600184018054918616918416919091179055516002909201805492909316911617905550565b600354600160a060020a031633148061257b5750600554600160a060020a031633145b806125905750600454600160a060020a031633145b151561259b57600080fd5b600082101580156125ad5750600e5481105b15156125b857600080fd5b600b54600054601e02016125ca61422f565b116125d457611fed565b815b81811161178d5761260f600e828154811015156125ef57fe5b600091825260209091200154600754600160a060020a0390911690611f60565b6001016125d6565b600354600160a060020a031633148061263a5750600554600160a060020a031633145b8061264f5750600454600160a060020a031633145b151561265a57600080fd5b601b541561266757600080fd5b60c06040519081016040528061267b61422f565b81526020808201859052600160a060020a03841660408301526000606083018190526080830152600e5460a0909201919091528151601b90815582820151805191926126cd92601c9290910190614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a0909101516006909101555050565b60005481565b601660205260009081526040902080546001820154600290920154600160a060020a03918216928216911683565b600554600160a060020a031681565b60195481565b601a5460ff16151561277257600080fd5b600554600160a060020a03163314806127955750600354600160a060020a031633145b15156127a057600080fd5b600087815260146020526040902060010154156127bc57612935565b6127c4615047565b60e06040519081016040528089815260200188815260200187815260200186600160a060020a0316815260200185600160a060020a0316815260200184815260200183815250905080601460008a815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c0820151816006015590505060006012600087600160a060020a0316600160a060020a03168152602001908152602001600020905080601401899080600181540180825580915050906001820390600052602060002001600090919290919091505550601089908060018154018082558091505090600182039060005260206000200160009091929091909150555050505b50505050505050565b60408051600480825260a082019092526060916000918391602082016080803883395050604080516010808252610220820190925292955090506020820161020080388339019050509050612991614e73565b600160a060020a0380861660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e0860152601081015461020086015260118101546102208601529182015461024085015260138201805484518184028101840190955280855292936102608601939092830182828015612ad357602002820191906000526020600020905b815481526020019060010190808311612abf575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015612b2b57602002820191906000526020600020905b815481526020019060010190808311612b17575b50505050508152505090508060000151846000815181101515612b4a57fe5b600160a060020a039092166020928302909101820152810151845185906001908110612b7257fe5b600160a060020a039092166020928302909101909101526040810151845185906002908110612b9d57fe5b600160a060020a039092166020928302909101909101526060810151845185906003908110612bc857fe5b600160a060020a039092166020928302909101909101526080810151825183906000908110612bf357fe5b6020908102909101015260a0810151825183906001908110612c1157fe5b6020908102909101015260c0810151825183906002908110612c2f57fe5b60209081029091010152610100810151825183906003908110612c4e57fe5b60209081029091010152610120810151825183906004908110612c6d57fe5b60209081029091010152610140810151825183906005908110612c8c57fe5b60209081029091010152610160810151825183906006908110612cab57fe5b60209081029091010152610180810151825183906007908110612cca57fe5b602090810290910101526101a0810151825183906008908110612ce957fe5b602090810290910101526101c0810151825183906009908110612d0857fe5b602090810290910101526101e081015182518390600a908110612d2757fe5b6020908102909101015261020081015182518390600b908110612d4657fe5b6020908102909101015261022081015182518390600c908110612d6557fe5b60209081029091010152612d788561348f565b82600d815181101515612d8757fe5b60209081029091010152612d9a85614409565b82600e815181101515612da957fe5b6020908102909101015261024081015182518390600f908110612dc857fe5b6020908102909101015260e0015191509193909250565b60095481565b600354600160a060020a0316331480612e085750600554600160a060020a031633145b80612e1d5750600454600160a060020a031633145b1515612e2857600080fd5b600160a060020a03909116600090815260126020526040902060090155565b600e805482908110612e5557fe5b600091825260209091200154600160a060020a0316905081565b600354600160a060020a0316331480612e925750600554600160a060020a031633145b80612ea75750600454600160a060020a031633145b1515612eb257600080fd5b600160a060020a0380851660009081526012602052604080822092851682529020600e5415612f365760048201541515612eeb57600080fd5b60048101541515612efb57600080fd5b8215612f1e576001810154600160a060020a031615612f1957600080fd5b612f36565b6002810154600160a060020a031615612f3657600080fd5b612f3e614e73565b6102a06040519081016040528086600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200188600160a060020a03168152602001836004015460010181526020016000815260200160008152602001600015158152602001612fb561422f565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ffa61422f565b815260200160015481526020016000604051908082528060200260200182016040528015613032578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613063578160200160208202803883390190505b509052600160a060020a0387811660009081526012602081815260409283902085518154600160a060020a031990811691871691909117825586830151600183018054831691881691909117905593860151600282018054861691871691909117905560608601516003820180549095169516949094179092556080840151600484015560a0840151600584015560c0840151600684015560e084015160078401805460ff191691151591909117905561010084015160088401556101208401516009840155610140840151600a840155610160840151600b840155610180840151600c8401556101a0840151600d8401556101c0840151600e8401556101e0840151600f8401556102008401516010840155610220840151601184015561024084015190830155610260830151805193945084936131a89260138501920190614f3a565b5061028082015180516131c5916014840191602090910190614f3a565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a038916179055506004820154151561322657505050611fea565b831561324e57600182018054600160a060020a031916600160a060020a038816179055612935565b600282018054600160a060020a038816600160a060020a031990911617905550505050505050565b600b5481565b60025481565b600354600160a060020a03163314806132a55750600554600160a060020a031633145b806132ba5750600454600160a060020a031633145b15156132c557600080fd5b6118a781613fa7565b60006132d8615027565b50600160a060020a03808316600090815260166020908152604091829020825160608101845281548516815260018201548516928101839052600290910154909316918301919091528015613330579150611d3f9050565b509192915050565b60085481565b600354600160a060020a03163314806133615750600554600160a060020a031633145b806133765750600454600160a060020a031633145b151561338157600080fd5b600082101580156133935750600e5481105b151561339e57600080fd5b815b81811161178d576133d9600e828154811015156133b957fe5b600091825260209091200154600854600160a060020a039091169061369f565b6001016133a0565b600354600160a060020a03163314806134045750600554600160a060020a031633145b806134195750600454600160a060020a031633145b151561342457600080fd5b61342c61422f565b600955600780546001019055565b600c5481565b600354600160a060020a03163314806134635750600554600160a060020a031633145b806134785750600454600160a060020a031633145b151561348357600080fd5b601a805460ff19169055565b6000613499614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e08601526010810154610200860152601181015461022086015291820154610240850152601382018054845181840281018401909552808552929361026086019390928301828280156135db57602002820191906000526020600020905b8154815260200190600101908083116135c7575b505050505081526020016014820180548060200260200160405190810160405280929190818152602001828054801561363357602002820191906000526020600020905b81548152602001906001019080831161361f575b5050509190925250505060a08101516101608201516101c08301516101a084015161018085015194955092939192909160008383106136725783613674565b825b9050600060646136858888866146e2565b830281151561369057fe5b049a9950505050505050505050565b600354600160a060020a03163314806136c25750600554600160a060020a031633145b806136d75750600454600160a060020a031633145b15156136e257600080fd5b60006136ed83614409565b600160a060020a03841660009081526012602052604081209054919250908311156137715760138101805490600090600019830183811061372a57fe5b60009182526020808320909101548252601381526040808320600101805489900390819055600160a060020a038a16845260129092529091206008015550611fed92505050565b600781015460ff1615613785575050611fed565b611fea84836002600087614335565b600354600160a060020a03163314806137b75750600554600160a060020a031633145b806137cc5750600454600160a060020a031633145b15156137d757600080fd5b6137df61422f565b600160a060020a03909116600090815260126020526040902060080155565b60136020526000908152604090208054600182015460028301546003840154600490940154929391929091600160a060020a03908116919081169060a060020a900460ff1686565b601a5460ff16151561385757600080fd5b600554600160a060020a031633148061387a5750600354600160a060020a031633145b151561388557600080fd5b600795909555600893909355600991909155600a55600b55600c55565b600354600160a060020a03163314806138c55750600554600160a060020a031633145b806138da5750600454600160a060020a031633145b15156138e557600080fd5b600054600302601b600001546138f961422f565b031161390457600080fd5b825b82811015611fea576000600e8281548110151561391f57fe5b600091825260209091200154600160a060020a0316905082801561395e5750600160a060020a0381166000908152601d602052604090205460ff166003145b1561398757600160a060020a03166000908152601d60205260409020805460ff191690556139d6565b600160a060020a0381166000908152601d602052604090205460ff1615156139b357601f805460010190555b600160a060020a03166000908152601d60205260409020805460ff191660031790555b600101613906565b600354600160a060020a0316331480613a015750600554600160a060020a031633145b80613a165750600454600160a060020a031633145b1515613a2157600080fd5b601b541515613a2f57600080fd5b600054600302601b60000154613a4361422f565b0311613a4e57600080fd5b602154602054600290910410613a6357600080fd5b601e54600160a060020a031615613a7957600080fd5b6032831115613a8757600080fd5b60008210158015613a995750600e5481105b1515613aa457600080fd5b815b818111611fea576000600e82815481101515613abe57fe5b6000918252602080832090910154600160a060020a03168083526012909152604082206009810154919350911015613af7575050613b43565b600781015460ff1615613b0b575050613b43565b60058101546006820154600282048110613b285750505050613b43565b613b3e84826064858c0204036006600080614335565b505050505b600101613aa6565b600d54600160a060020a031681565b600f8054829081106119e057fe5b6006805434019055565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293600160a060020a0392831693929091169187565b600354600160a060020a0316331480613bde5750600554600160a060020a031633145b80613bf35750600454600160a060020a031633145b1515613bfe57600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19166001179055565b60185481565b600354600160a060020a031681565b601b8054601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529394939291830182828015613cc75780601f10613c9c57610100808354040283529160200191613cc7565b820191906000526020600020905b815481529060010190602001808311613caa57829003601f168201915b505050506003830154600484015460058501546006909501549394600160a060020a039092169390925086565b600354600160a060020a0316331480613d175750600554600160a060020a031633145b80613d2c5750600454600160a060020a031633145b1515613d3757600080fd5b60008181526013602052604090206004810154600160a060020a03161515613d5e57600080fd5b600281015460005b6004830154600160a060020a031615801590613d83575060185481105b15611fea576004830154600160a060020a03811660009081526012602052604090209060a060020a900460ff1615613dc457600e8101805484019055613dcf565b600d81018054840190555b6004840180548254600160a060020a03908116600090815260126020526040902060019081015474ff00000000000000000000000000000000000000001984169383169083161460a060020a0292909217808455935416600160a060020a031990931692909217905501613d66565b600354600160a060020a0316331480613e615750600554600160a060020a031633145b80613e765750600454600160a060020a031633145b1515613e8157600080fd5b600160a060020a03828116600090815260166020526040902060028101549091838116911614613eb057600080fd5b600281018054600160a060020a031990811690915560019091018054909116600160a060020a039290921691909117905550565b600354600160a060020a0316331480613f075750600554600160a060020a031633145b80613f1c5750600454600160a060020a031633145b1515613f2757600080fd5b6000613f328261348f565b90506000613f3f83614409565b600160a060020a038416600090815260126020526040812060068101546005820154600f9092015493945092909182118015613f845750816003028185878601010110155b1515613f8f57600080fd5b613f9f8660006064600080614335565b505050505050565b600160a060020a038116600090815260126020526040902060048101541515613fcf57600080fd5b60058101541515613feb576012810154341015613feb57600080fd5b601954600a82015410613ffd57600080fd5b600981015460321161400e57600080fd5b600981015415806140305750600054600702816008015461402d61422f565b03105b8061403e5750600581015415155b151561404957600080fd5b600680543401905560004361405c61422f565b84346040516020018085815260200184815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200194505050505060405160208183030381529060405280519060200120905060006002543484600501540111156140dc578260050154600254036140de565b345b90508015156140ef575050506118a7565b8254600160a060020a0390811660009081526012602052604090206001015481169085161461411c614ff2565b60c06040519081016040528085815260200161413661422f565b81526020808201869052600160a060020a03808a166040808501919091528954821660608086019190915287151560809586015260008a81526013855282902086518155938601516001850155908501516002840155840151600383018054918316600160a060020a0319928316179055928401516004909201805460a0860151151560a060020a0274ff000000000000000000000000000000000000000019949093169416939093179190911617905590506141f28461473e565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020191909155505050565b601754420190565b600160a060020a0382166000908152601260205260408120600501541161425d57600080fd5b600160a060020a03821660009081526012602052604090206007015460ff161561428657600080fd5b600054600302601b6000015461429a61422f565b03106142a557600080fd5b6000816142b35760016142b6565b60025b600160a060020a0384166000908152601d602052604090205490915060ff9081169082168114156142e657600080fd5b6142ef836147fd565b60ff81161515614300575050611fed565b821561431d5761430e611982565b60208054919091039055611fea565b614325611982565b601f805491909103905550505050565b83158015614344575082606414155b1561434e57614402565b600160a060020a038516151561436357614402565b600160a060020a0385166000908152601260205260408120906143858761348f565b905060008161439389614409565b84600f01540101905085600114156143a85786015b8260050154600302836006015482011015156143d1576143c981898461485d565b505050614402565b600083600f015411156143f1576143f183600f0154896004600080614906565b6143fe8789888888614906565b5050505b5050505050565b6000614413614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e086015260108101546102008601526011810154610220860152918201546102408501526013820180548451818402810184019095528085529293610260860193909283018282801561455557602002820191906000526020600020905b815481526020019060010190808311614541575b50505050508152602001601482018054806020026020016040519081016040528092919081815260200182805480156145ad57602002820191906000526020600020905b815481526020019060010190808311614599575b50505091909252505050610260810151519091506000805b828110156146d0576145d5614ff2565b60136000866102600151848151811015156145ec57fe5b60209081029091018101518252818101929092526040908101600020815160c0810183528154815260018201549381018490526002820154928101929092526003810154600160a060020a039081166060840152600490910154908116608083015260ff60a060020a90910416151560a0820152610100870151909250111561467557506146c8565b600054816020015161468561422f565b03106146c65760008054826020015161469c61422f565b038115156146a657fe5b04905060006064836040015183028115156146bd57fe5b04949094019350505b505b6001016145c5565b50610200909201519091039392505050565b6000806146ee84614998565b905060006146fb86614a1f565b9050600061470885614a1f565b90506000828410614719578261471b565b835b9050600081831061472c578161472e565b825b6002029998505050505050505050565b60008181526013602081815260408084206002810154600380830154600160a060020a039081168852601286528488209687018054600181018255908952958820909501889055600586018054830190558501549093168086529190942091929181156147ba57600b8101805485019055600c81018054850190555b6001548160050154101580156147d55750600781015460ff16155b15613f9f57613f9f82600a86600389015491900490600190600160a060020a03166000614335565b8061480957600161480c565b60025b336000908152601d60205260409020805460ff191660ff9290921691909117905580156148495761483b611982565b601f805490910190556118a7565b614851611982565b60208054909101905550565b600160a060020a0382166000908152601260205260408120600681015460058201549192600390920203908186039084111561489e5761489e856000614a99565b6009830180546001908101909155600a84018054909101905560058301805460009182905560068501919091556148d361422f565b600885015560006010850155600f840182905560098401546148f790879083614b2d565b61293583876000806000614c57565b600160a060020a0384166000908152601260205260409020600601805486019055600483141561494d57600160a060020a0384166000908152601260205260408120600f01555b8260031415614960576149608482614a99565b826002141561498b57600160a060020a03841660009081526012602052604090206010018054860190555b6144028585858585614c57565b60006801a055690d9db800008210156149b357506000611d3f565b680340aad21b3b7000008210156149cc57506001611d3f565b6804e1003b28d92800008210156149e557506002611d3f565b68068155a43676e000008210156149fe57506003611d3f565b680821ab0d4414980000821015614a1757506004611d3f565b506005919050565b6000671bc16d674ec80000821015614a3957506000611d3f565b673782dace9d900000821015614a5157506001611d3f565b6753444835ec580000821015614a6957506002611d3f565b676f05b59d3b200000821015614a8157506003611d3f565b678ac7230489e80000821015614a1757506004611d3f565b600160a060020a03821660009081526012602052604090206007546003108015614ac257508115155b15614ada576000600d8201819055600e820155614b1b565b600e810154600d82015410614b0457600e81018054600d8301805491909103905560009055614b1b565b600d81018054600e83018054919091039055600090555b811561178d576000600c820155505050565b600043614b3861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a0388160260608301526074808301879052815180840390910181526094909201905280519101209050614b92615083565b60806040519081016040528083815260200186600160a060020a03168152602001858152602001614bc161422f565b90526011805460018082019092557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801849055600093845260156020908152604080862084518155848301519381018054600160a060020a031916600160a060020a0395861617905584820151600282015560609094015160039094019390935596168352601295869052909120909301555050565b841515614c6357614402565b6000614c6e856132ce565b604051909150600160a060020a03821690605a606489040280156108fc02916000818181858888f19350505050158015614cac573d6000803e3d6000fd5b50600d54604051600160a060020a0390911690600a606489040280156108fc02916000818181858888f19350505050158015614cec573d6000803e3d6000fd5b50600044614cf861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a038a16026060830152607482018a905260948083018990528151808403909101815260b4909201905280519101209050614d59615047565b60e060405190810160405280838152602001614d7361422f565b815260208082018b9052600160a060020a03808b1660408085018290528a831660608087019190915260808087018e905260a09687018c905260008a815260148088528482208a5181558a8901516001808301919091558b8701516002830155948b0151600382018054918a16600160a060020a0319928316179055938b01516004820180549190991694169390931790965596880151600582015560c09097015160069097019690965590845260128352832001805480850182559083529082200184905560108054928301815590527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672019190915550505050505050565b6102a0604051908101604052806000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b828054828255906000526020600020908101928215614f75579160200282015b82811115614f75578251825591602001919060010190614f5a565b50614f819291506150aa565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fc657805160ff1916838001178555614f75565b82800160010185558215614f755791820182811115614f75578251825591602001919060010190614f5a565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080516060810182526000808252602082018190529181019190915290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6119c091905b80821115614f8157600081556001016150b056fea165627a7a723058202fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d570029
Swarm Source
bzzr://2fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d57
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.