ETH Price: $3,954.33 (+1.48%)

Contract

0x014324b2307b1a578e3D64AA36e6E4b22b118061
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Disable Investor79459542019-06-12 20:00:012013 days ago1560369601IN
0x014324b2...22b118061
0 ETH0.000886720
Disable Investor79459522019-06-12 19:58:592013 days ago1560369539IN
0x014324b2...22b118061
0 ETH0.0008854220
Send Ether To Ne...79459002019-06-12 19:49:262013 days ago1560368966IN
0x014324b2...22b118061
0 ETH0.0006459620
Finalize Votes79458812019-06-12 19:45:422013 days ago1560368742IN
0x014324b2...22b118061
0 ETH0.013415333.01444043
Finalize Votes79458772019-06-12 19:45:062013 days ago1560368706IN
0x014324b2...22b118061
0 ETH0.015323283.01444043
Add Sell For Par...79446522019-06-12 15:07:532013 days ago1560352073IN
0x014324b2...22b118061
0 ETH0.001330543
Transfer79446302019-06-12 15:02:412013 days ago1560351761IN
0x014324b2...22b118061
2 ETH0.0074570116.5
Put Presentee79446152019-06-12 14:59:322013 days ago1560351572IN
0x014324b2...22b118061
0 ETH0.00105763.85
Add Sell For Par...79416812019-06-12 3:58:022014 days ago1560311882IN
0x014324b2...22b118061
0 ETH0.0021134
Add Sell For Par...79416592019-06-12 3:53:432014 days ago1560311623IN
0x014324b2...22b118061
0 ETH0.001993044
Add Sell For Par...79416592019-06-12 3:53:432014 days ago1560311623IN
0x014324b2...22b118061
0 ETH0.001923264
Add Sell For Par...79416562019-06-12 3:53:332014 days ago1560311613IN
0x014324b2...22b118061
0 ETH0.001992784
Put Presentee79414012019-06-12 2:56:502014 days ago1560308210IN
0x014324b2...22b118061
0 ETH0.001222424.45
Transfer79411732019-06-12 2:07:482014 days ago1560305268IN
0x014324b2...22b118061
2 ETH0.0146350931.8
Transfer79411382019-06-12 2:00:212014 days ago1560304821IN
0x014324b2...22b118061
2 ETH0.000235211.2
Transfer79411262019-06-12 1:57:272014 days ago1560304647IN
0x014324b2...22b118061
2 ETH0.000516624.6
Transfer79411222019-06-12 1:55:372014 days ago1560304537IN
0x014324b2...22b118061
2 ETH0.000369617.6
Transfer79410702019-06-12 1:45:492014 days ago1560303949IN
0x014324b2...22b118061
1 ETH0.0094242522
Transfer79410472019-06-12 1:40:312014 days ago1560303631IN
0x014324b2...22b118061
2 ETH0.014258933.2
Transfer79410142019-06-12 1:31:122014 days ago1560303072IN
0x014324b2...22b118061
2 ETH0.002125555
Add Sell For Par...79392602019-06-11 18:52:032014 days ago1560279123IN
0x014324b2...22b118061
0 ETH0.001076183
Add Sell For Par...79392602019-06-11 18:52:032014 days ago1560279123IN
0x014324b2...22b118061
0 ETH0.001128443
Add Sell For Par...79392472019-06-11 18:49:572014 days ago1560278997IN
0x014324b2...22b118061
0 ETH0.001233423
Pay Daily Income...79389512019-06-11 17:39:062014 days ago1560274746IN
0x014324b2...22b118061
0 ETH0.097572420
Transfer79374602019-06-11 12:13:582014 days ago1560255238IN
0x014324b2...22b118061
1 ETH0.008501720
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
79459002019-06-12 19:49:262013 days ago1560368966
0x014324b2...22b118061
1,247.19957558 ETH
79446302019-06-12 15:02:412013 days ago1560351761
0x014324b2...22b118061
0.02 ETH
79446302019-06-12 15:02:412013 days ago1560351761
0x014324b2...22b118061
0.18 ETH
79411732019-06-12 2:07:482014 days ago1560305268
0x014324b2...22b118061
0.02 ETH
79411732019-06-12 2:07:482014 days ago1560305268
0x014324b2...22b118061
0.18 ETH
79410702019-06-12 1:45:492014 days ago1560303949
0x014324b2...22b118061
0.01 ETH
79410702019-06-12 1:45:492014 days ago1560303949
0x014324b2...22b118061
0.09 ETH
79410472019-06-12 1:40:312014 days ago1560303631
0x014324b2...22b118061
0.02 ETH
79410472019-06-12 1:40:312014 days ago1560303631
0x014324b2...22b118061
0.18 ETH
79410142019-06-12 1:31:122014 days ago1560303072
0x014324b2...22b118061
0.02 ETH
79410142019-06-12 1:31:122014 days ago1560303072
0x014324b2...22b118061
0.18 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.238 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
2.142 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.459 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
4.131 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.05384529 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.48460761 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.034 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.306 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.034 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.306 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.34 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
3.06 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.034 ETH
79389512019-06-11 17:39:062014 days ago1560274746
0x014324b2...22b118061
0.306 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

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

Contract ABI

[{"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"}]

6080604052620151806000908155670de0b6b3a7640000600190815568056bc75e2d631000006002908155600683905560078290556008829055426009819055600a819055600b819055600c55600d8054600160a060020a03191673a4048772583220896ec93316616778b4ebc70f9d17905560179290925560c8601855601991909155601a805460ff1916909117905534801561009c57600080fd5b5060038054600160a060020a031916331790556150f0806100be6000396000f3fe608060405260043610610417576000357c0100000000000000000000000000000000000000000000000000000000900480638ed24df111610230578063d0e30db011610140578063ed88c68e116100c8578063f851a44011610097578063f851a44014611156578063f9b137d71461116b578063fa2e15c91461122d578063fba5ab3514611257578063fd5e79aa1461129257610417565b8063ed88c68e1461109a578063efbf64a7146110a2578063f142ca5e1461110e578063f6610aa61461114157610417565b8063db652fa71161010f578063db652fa714610fa5578063dcd6825014610fed578063df40da2914611025578063e54480481461105b578063e83a25c51461107057610417565b8063d0e30db014610417578063d202925b14610ed1578063d51527d114610f0a578063d7eb937914610f3d57610417565b8063a9e4176f116101c3578063b4dd489011610192578063b4dd489014610e2f578063c8f4095614610e5f578063c9a1e7b214610e74578063ca5e586614610e89578063cb60930d14610e9e57610417565b8063a9e4176f14610dac578063aa67c91914610dc1578063afe46ea214610de7578063b30e3b3814610e1a57610417565b8063952867c1116101ff578063952867c114610ce957806395a25efa14610d225780639f9aca8414610d4c578063a363fc9614610d9757610417565b80638ed24df114610b8d5780638f0fb9e014610ba25780638f35a75e14610bfd57806394dd27d214610cd457610417565b8063479537b61161032b5780636d462ae1116102be5780637dded8f21161028d5780637dded8f214610a175780637e4ca6cc14610a47578063863e76db14610b05578063892611ef14610b1a5780638a97fce014610b7857610417565b80636d462ae11461095a5780637726b16b1461099f5780637a9506ed146109cf5780637af6603b146109e457610417565b806359aab5f1116102fa57806359aab5f1146108695780635bdbeb341461087e578063647fbc13146108b75780636a86e8fd1461090257610417565b8063479537b61461077557806349aa4ee2146107f85780634b9f5c981461080d5780634c6de5091461083957610417565b806326969b67116103ae57806337f6a7ee1161037d57806337f6a7ee146106d95780633865079f146106ee578063395bf562146107185780633f3108961461072d578063459b88df1461074257610417565b806326969b671461065c57806327f6ae8c146106715780632d9b7f4d1461069a5780632fb011fa146106af57610417565b806314e53a40116103ea57806314e53a40146105cc578063152ad433146105e15780631b3f8e44146105f65780631bf602ff1461062957610417565b8063049f25971461042157806306a8f8a21461055f578063097d42e0146105905780630e8ac5c1146105b7575b61041f6112c5565b005b34801561042d57600080fd5b5061041f6004803603606081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843515159590949093506040810192506020013590506401000000008111156104ed57600080fd5b8201836020820111156104ff57600080fd5b8035906020019184602083028401116401000000008311171561052157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112d0945050505050565b34801561056b57600080fd5b50610574611792565b60408051600160a060020a039092168252519081900360200190f35b34801561059c57600080fd5b506105a56117a1565b60408051918252519081900360200190f35b3480156105c357600080fd5b5061041f6117a7565b3480156105d857600080fd5b506105a56118aa565b3480156105ed57600080fd5b506105a56118b0565b34801561060257600080fd5b5061041f6004803603602081101561061957600080fd5b5035600160a060020a03166118b6565b34801561063557600080fd5b5061041f6004803603602081101561064c57600080fd5b5035600160a060020a031661191d565b34801561066857600080fd5b506105a5611982565b34801561067d57600080fd5b506106866119c3565b604080519115158252519081900360200190f35b3480156106a657600080fd5b506105a56119cc565b3480156106bb57600080fd5b506105a5600480360360208110156106d257600080fd5b50356119d2565b3480156106e557600080fd5b506105a56119f1565b3480156106fa57600080fd5b506105a56004803603602081101561071157600080fd5b50356119f7565b34801561072457600080fd5b506105a5611a05565b34801561073957600080fd5b506105a5611a0b565b34801561074e57600080fd5b5061041f6004803603602081101561076557600080fd5b5035600160a060020a0316611a11565b34801561078157600080fd5b506107a86004803603602081101561079857600080fd5b5035600160a060020a0316611a76565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107e45781810151838201526020016107cc565b505050509050019250505060405180910390f35b34801561080457600080fd5b5061041f611d44565b34801561081957600080fd5b5061041f6004803603602081101561083057600080fd5b50351515611e27565b34801561084557600080fd5b5061041f6004803603604081101561085c57600080fd5b5080359060200135611e31565b34801561087557600080fd5b5061041f611f07565b34801561088a57600080fd5b5061041f600480360360408110156108a157600080fd5b50600160a060020a038135169060200135611f60565b3480156108c357600080fd5b5061041f600480360360a08110156108da57600080fd5b50600160a060020a038135169060208101359060408101359060608101359060800135611ff1565b34801561090e57600080fd5b5061092c6004803603602081101561092557600080fd5b503561207b565b60408051948552600160a060020a039093166020850152838301919091526060830152519081900360800190f35b34801561096657600080fd5b5061041f6004803603608081101561097d57600080fd5b5080359060208101359060408101359060600135600160a060020a03166120ac565b3480156109ab57600080fd5b5061041f600480360360408110156109c257600080fd5b508035906020013561221f565b3480156109db57600080fd5b506105a5612478565b3480156109f057600080fd5b5061041f60048036036020811015610a0757600080fd5b5035600160a060020a031661247e565b348015610a2357600080fd5b5061041f60048036036040811015610a3a57600080fd5b5080359060200135612558565b348015610a5357600080fd5b5061041f60048036036040811015610a6a57600080fd5b810190602081018135640100000000811115610a8557600080fd5b820183602082011115610a9757600080fd5b80359060200191846001830284011164010000000083111715610ab957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506126179050565b348015610b1157600080fd5b506105a5612718565b348015610b2657600080fd5b50610b4d60048036036020811015610b3d57600080fd5b5035600160a060020a031661271e565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b348015610b8457600080fd5b5061057461274c565b348015610b9957600080fd5b506105a561275b565b348015610bae57600080fd5b5061041f600480360360e0811015610bc557600080fd5b50803590602081013590604081013590600160a060020a03606082013581169160808101359091169060a08101359060c00135612761565b348015610c0957600080fd5b50610c3060048036036020811015610c2057600080fd5b5035600160a060020a031661293e565b60405180806020018415151515815260200180602001838103835286818151815260200191508051906020019060200280838360005b83811015610c7e578181015183820152602001610c66565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cbd578181015183820152602001610ca5565b505050509050019550505050505060405180910390f35b348015610ce057600080fd5b506105a5612ddf565b348015610cf557600080fd5b5061041f60048036036040811015610d0c57600080fd5b50600160a060020a038135169060200135612de5565b348015610d2e57600080fd5b5061057460048036036020811015610d4557600080fd5b5035612e47565b348015610d5857600080fd5b5061041f60048036036080811015610d6f57600080fd5b50600160a060020a038135811691602081013582169160408201351690606001351515612e6f565b348015610da357600080fd5b506105a5613276565b348015610db857600080fd5b506105a561327c565b61041f60048036036020811015610dd757600080fd5b5035600160a060020a0316613282565b348015610df357600080fd5b5061057460048036036020811015610e0a57600080fd5b5035600160a060020a03166132ce565b348015610e2657600080fd5b506105a5613338565b348015610e3b57600080fd5b5061041f60048036036040811015610e5257600080fd5b508035906020013561333e565b348015610e6b57600080fd5b5061041f6133e1565b348015610e8057600080fd5b506105a561343a565b348015610e9557600080fd5b5061041f613440565b348015610eaa57600080fd5b506105a560048036036020811015610ec157600080fd5b5035600160a060020a031661348f565b348015610edd57600080fd5b5061041f60048036036040811015610ef457600080fd5b50600160a060020a03813516906020013561369f565b348015610f1657600080fd5b5061041f60048036036020811015610f2d57600080fd5b5035600160a060020a0316613794565b348015610f4957600080fd5b50610f6760048036036020811015610f6057600080fd5b50356137fe565b60408051968752602087019590955285850193909352600160a060020a039182166060860152166080840152151560a0830152519081900360c00190f35b348015610fb157600080fd5b5061041f600480360360c0811015610fc857600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613846565b348015610ff957600080fd5b5061041f6004803603606081101561101057600080fd5b508035906020810135906040013515156138a2565b34801561103157600080fd5b5061041f6004803603606081101561104857600080fd5b50803590602081013590604001356139de565b34801561106757600080fd5b50610574613b4b565b34801561107c57600080fd5b506105a56004803603602081101561109357600080fd5b5035613b5a565b61041f613b68565b3480156110ae57600080fd5b506110cc600480360360208110156110c557600080fd5b5035613b72565b60408051978852602088019690965286860194909452600160a060020a0392831660608701529116608085015260a084015260c0830152519081900360e00190f35b34801561111a57600080fd5b5061041f6004803603602081101561113157600080fd5b5035600160a060020a0316613bbb565b34801561114d57600080fd5b506105a5613c25565b34801561116257600080fd5b50610574613c2b565b34801561117757600080fd5b50611180613c3a565b604051808781526020018060200186600160a060020a0316600160a060020a03168152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156111ed5781810151838201526020016111d5565b50505050905090810190601f16801561121a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561123957600080fd5b5061041f6004803603602081101561125057600080fd5b5035613cf4565b34801561126357600080fd5b5061041f6004803603604081101561127a57600080fd5b50600160a060020a0381358116916020013516613e3e565b34801561129e57600080fd5b5061041f600480360360208110156112b557600080fd5b5035600160a060020a0316613ee4565b6112ce33613fa7565b565b601a5460ff1615156112e157600080fd5b600554600160a060020a03163314806113045750600354600160a060020a031633145b151561130f57600080fd5b6012600084600481518110151561132257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002060040154156113525761178d565b61135a614e73565b6102a06040519081016040528085600081518110151561137657fe5b90602001906020020151600160a060020a0316815260200185600181518110151561139d57fe5b90602001906020020151600160a060020a031681526020018560028151811015156113c457fe5b90602001906020020151600160a060020a031681526020018560038151811015156113eb57fe5b90602001906020020151600160a060020a0316815260200183600081518110151561141257fe5b90602001906020020151815260200183600181518110151561143057fe5b90602001906020020151815260200183600281518110151561144e57fe5b906020019060200201518152602001841515815260200183600381518110151561147457fe5b90602001906020020151815260200183600481518110151561149257fe5b9060200190602002015181526020018360058151811015156114b057fe5b9060200190602002015181526020018360068151811015156114ce57fe5b9060200190602002015181526020018360078151811015156114ec57fe5b90602001906020020151815260200183600881518110151561150a57fe5b90602001906020020151815260200183600981518110151561152857fe5b90602001906020020151815260200183600a81518110151561154657fe5b90602001906020020151815260200183600b81518110151561156457fe5b90602001906020020151815260200183600c81518110151561158257fe5b60209081029190910181015182526001548282015260408051600080825281840183528285019190915281518181529283019091526060909201528551919250829160129190879060049081106115d557fe5b602090810291909101810151600160a060020a03908116835282820193909352604091820160002084518154600160a060020a031990811691861691909117825585830151600183018054831691871691909117905592850151600282018054851691861691909117905560608501516003820180549094169416939093179091556080830151600483015560a0830151600583015560c0830151600683015560e083015160078301805460ff191691151591909117905561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c0830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301556102408301516012830155610260830151805161171e9260138501920190614f3a565b50610280820151805161173b916014840191602090910190614f3a565b50905050600e84600481518110151561175057fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a03909216919091179055505b505050565b600454600160a060020a031681565b60065481565b600354600160a060020a03163314806117ca5750600554600160a060020a031633145b806117df5750600454600160a060020a031633145b15156117ea57600080fd5b601b5415156117f857600080fd5b600054600302601b6000015461180c61422f565b031161181757600080fd5b602154601f5460029091041061182c57600080fd5b601e54600160a060020a0316151561184357600080fd5b601e54604051600091600160a060020a0316903031908381818185875af1925050503d8060008114611891576040519150601f19603f3d011682016040523d82523d6000602084013e611896565b606091505b50909150508015156118a757600080fd5b50565b60075481565b600a5481565b600354600160a060020a03163314806118d95750600554600160a060020a031633145b806118ee5750600454600160a060020a031633145b15156118f957600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19169055565b600354600160a060020a03163314806119405750600554600160a060020a031633145b806119555750600454600160a060020a031633145b151561196057600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b336000908152601260205260408120600401546003116119a4575060016119c0565b602154602810156119bc5750602154601490046119c0565b5060025b90565b601a5460ff1681565b60105490565b60108054829081106119e057fe5b600091825260209091200154905081565b600e5490565b60118054829081106119e057fe5b600f5490565b60115490565b600354600160a060020a0316331480611a345750600554600160a060020a031633145b80611a495750600454600160a060020a031633145b1515611a5457600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600e54604080518281526020808402820101909152606091908290828015611aa8578160200160208202803883390190505b50905083816000815181101515611abb57fe5b600160a060020a03909216602092830290910190910152600060015b818114611d3857611ae6614e73565b8351600184019360129160009187918110611afd57fe5b6020908102909101810151600160a060020a03908116835282820193909352604091820160002082516102a081018452815485168152600182015485168184015260028201548516818501526003820154909416606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460ff16151560e085015260088101546101008501526009810154610120850152600a810154610140850152600b810154610160850152600c810154610180850152600d8101546101a0850152600e8101546101c0850152600f8101546101e08501526010810154610200850152601181015461022085015260128101546102408501526013810180548451818502810185019095528085529193610260860193909290830182828015611c4b57602002820191906000526020600020905b815481526020019060010190808311611c37575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015611ca357602002820191906000526020600020905b815481526020019060010190808311611c8f575b505050919092525050506020810151909150600160a060020a031615611cf15760208101518451600184019386918110611cd957fe5b600160a060020a039092166020928302909101909101525b6040810151600160a060020a031615611d325760408101518451600184019386918110611d1a57fe5b600160a060020a039092166020928302909101909101525b50611ad7565b5090925050505b919050565b600354600160a060020a0316331480611d675750600554600160a060020a031633145b80611d7c5750600454600160a060020a031633145b1515611d8757600080fd5b6040805160c081018252600080825282516020818101808652838352908401829052938301829052606083018290526080830182905260a08301919091528151601b908155905191929091611dde91601c91614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a090910151600690910155565b6118a73382614237565b600354600160a060020a0316331480611e545750600554600160a060020a031633145b80611e695750600454600160a060020a031633145b1515611e7457600080fd5b60008210158015611e865750600e5481105b1515611e9157600080fd5b815b8181101561178d576000600e82815481101515611eac57fe5b6000918252602080832090910154600160a060020a031680835260129091526040909120600a01549091501515611ee35750611eff565b600160a060020a03166000908152601260205260408120600a01555b600101611e93565b600354600160a060020a0316331480611f2a5750600554600160a060020a031633145b80611f3f5750600454600160a060020a031633145b1515611f4a57600080fd5b611f5261422f565b600a55600880546001019055565b600354600160a060020a0316331480611f835750600554600160a060020a031633145b80611f985750600454600160a060020a031633145b1515611fa357600080fd5b600160a060020a0382166000908152601260205260409020600781015460ff1615611fce5750611fed565b6000611fd98461348f565b9050611fea84826003600087614335565b50505b5050565b600354600160a060020a03163314806120145750600554600160a060020a031633145b806120295750600454600160a060020a031633145b151561203457600080fd5b600160a060020a0385166000908152601260205260408120600481015490911061205d57600080fd5b600b810194909455600c840192909255600d830155600e9091015550565b60156020526000908152604090208054600182015460028301546003909301549192600160a060020a039091169184565b601a5460ff1615156120bd57600080fd5b600554600160a060020a03163314806120e05750600354600160a060020a031633145b15156120eb57600080fd5b6000848152601360205260409020600101541561210757611fea565b61210f614ff2565b506040805160c0810182528581526020808201868152828401868152600160a060020a038087166060860181815260006080880181815260a089018281528e83526013808a528b84209a518b55975160018b810191909155965160028b0155925160038a018054918716600160a060020a03199283161790559051600490990180549351151560a060020a0274ff0000000000000000000000000000000000000000199a90961693909116929092179790971692909217909155600f80548084019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018a905584526012835293832001805493840181558252902001849055600680548301905550505050565b600354600160a060020a03163314806122425750600554600160a060020a031633145b806122575750600454600160a060020a031633145b151561226257600080fd5b600082101580156122745750600e5481105b151561227f57600080fd5b601b54151561228d57600080fd5b600054600302601b600001546122a161422f565b03116122ac57600080fd5b602154601f546002909104106122c157600080fd5b601e54600160a060020a0316156122d757600080fd5b6122df61422f565b600c55815b8181101561178d576000600e828154811015156122fd57fe5b6000918252602080832090910154600160a060020a0316808352601282526040808420601d90935283205490935090919060ff16151561233e57600261235b565b600160a060020a0383166000908152601d602052604090205460ff165b60ff16905080600214156123e257600082600901541180612392575081600501548260060154101580156123925750600682015415155b156123ba5761239f61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c83015561246d565b60008260090154118061240b5750816005015482600601541015801561240b5750600682015415155b156124495760078201805460ff191660011790556000600f83015561242e61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c8301555b5050506001016122e4565b60015481565b336000908152601260205260408120600501541161249b57600080fd5b3360009081526016602052604090208054600160a060020a0316156124db576002018054600160a060020a031916600160a060020a0383161790556118a7565b6124e3615027565b505060408051606081018252338082526020808301828152600160a060020a03868116858701908152600094855260169093529490922092518354908516600160a060020a03199182161784559151600184018054918616918416919091179055516002909201805492909316911617905550565b600354600160a060020a031633148061257b5750600554600160a060020a031633145b806125905750600454600160a060020a031633145b151561259b57600080fd5b600082101580156125ad5750600e5481105b15156125b857600080fd5b600b54600054601e02016125ca61422f565b116125d457611fed565b815b81811161178d5761260f600e828154811015156125ef57fe5b600091825260209091200154600754600160a060020a0390911690611f60565b6001016125d6565b600354600160a060020a031633148061263a5750600554600160a060020a031633145b8061264f5750600454600160a060020a031633145b151561265a57600080fd5b601b541561266757600080fd5b60c06040519081016040528061267b61422f565b81526020808201859052600160a060020a03841660408301526000606083018190526080830152600e5460a0909201919091528151601b90815582820151805191926126cd92601c9290910190614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a0909101516006909101555050565b60005481565b601660205260009081526040902080546001820154600290920154600160a060020a03918216928216911683565b600554600160a060020a031681565b60195481565b601a5460ff16151561277257600080fd5b600554600160a060020a03163314806127955750600354600160a060020a031633145b15156127a057600080fd5b600087815260146020526040902060010154156127bc57612935565b6127c4615047565b60e06040519081016040528089815260200188815260200187815260200186600160a060020a0316815260200185600160a060020a0316815260200184815260200183815250905080601460008a815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c0820151816006015590505060006012600087600160a060020a0316600160a060020a03168152602001908152602001600020905080601401899080600181540180825580915050906001820390600052602060002001600090919290919091505550601089908060018154018082558091505090600182039060005260206000200160009091929091909150555050505b50505050505050565b60408051600480825260a082019092526060916000918391602082016080803883395050604080516010808252610220820190925292955090506020820161020080388339019050509050612991614e73565b600160a060020a0380861660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e0860152601081015461020086015260118101546102208601529182015461024085015260138201805484518184028101840190955280855292936102608601939092830182828015612ad357602002820191906000526020600020905b815481526020019060010190808311612abf575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015612b2b57602002820191906000526020600020905b815481526020019060010190808311612b17575b50505050508152505090508060000151846000815181101515612b4a57fe5b600160a060020a039092166020928302909101820152810151845185906001908110612b7257fe5b600160a060020a039092166020928302909101909101526040810151845185906002908110612b9d57fe5b600160a060020a039092166020928302909101909101526060810151845185906003908110612bc857fe5b600160a060020a039092166020928302909101909101526080810151825183906000908110612bf357fe5b6020908102909101015260a0810151825183906001908110612c1157fe5b6020908102909101015260c0810151825183906002908110612c2f57fe5b60209081029091010152610100810151825183906003908110612c4e57fe5b60209081029091010152610120810151825183906004908110612c6d57fe5b60209081029091010152610140810151825183906005908110612c8c57fe5b60209081029091010152610160810151825183906006908110612cab57fe5b60209081029091010152610180810151825183906007908110612cca57fe5b602090810290910101526101a0810151825183906008908110612ce957fe5b602090810290910101526101c0810151825183906009908110612d0857fe5b602090810290910101526101e081015182518390600a908110612d2757fe5b6020908102909101015261020081015182518390600b908110612d4657fe5b6020908102909101015261022081015182518390600c908110612d6557fe5b60209081029091010152612d788561348f565b82600d815181101515612d8757fe5b60209081029091010152612d9a85614409565b82600e815181101515612da957fe5b6020908102909101015261024081015182518390600f908110612dc857fe5b6020908102909101015260e0015191509193909250565b60095481565b600354600160a060020a0316331480612e085750600554600160a060020a031633145b80612e1d5750600454600160a060020a031633145b1515612e2857600080fd5b600160a060020a03909116600090815260126020526040902060090155565b600e805482908110612e5557fe5b600091825260209091200154600160a060020a0316905081565b600354600160a060020a0316331480612e925750600554600160a060020a031633145b80612ea75750600454600160a060020a031633145b1515612eb257600080fd5b600160a060020a0380851660009081526012602052604080822092851682529020600e5415612f365760048201541515612eeb57600080fd5b60048101541515612efb57600080fd5b8215612f1e576001810154600160a060020a031615612f1957600080fd5b612f36565b6002810154600160a060020a031615612f3657600080fd5b612f3e614e73565b6102a06040519081016040528086600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200188600160a060020a03168152602001836004015460010181526020016000815260200160008152602001600015158152602001612fb561422f565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ffa61422f565b815260200160015481526020016000604051908082528060200260200182016040528015613032578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613063578160200160208202803883390190505b509052600160a060020a0387811660009081526012602081815260409283902085518154600160a060020a031990811691871691909117825586830151600183018054831691881691909117905593860151600282018054861691871691909117905560608601516003820180549095169516949094179092556080840151600484015560a0840151600584015560c0840151600684015560e084015160078401805460ff191691151591909117905561010084015160088401556101208401516009840155610140840151600a840155610160840151600b840155610180840151600c8401556101a0840151600d8401556101c0840151600e8401556101e0840151600f8401556102008401516010840155610220840151601184015561024084015190830155610260830151805193945084936131a89260138501920190614f3a565b5061028082015180516131c5916014840191602090910190614f3a565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a038916179055506004820154151561322657505050611fea565b831561324e57600182018054600160a060020a031916600160a060020a038816179055612935565b600282018054600160a060020a038816600160a060020a031990911617905550505050505050565b600b5481565b60025481565b600354600160a060020a03163314806132a55750600554600160a060020a031633145b806132ba5750600454600160a060020a031633145b15156132c557600080fd5b6118a781613fa7565b60006132d8615027565b50600160a060020a03808316600090815260166020908152604091829020825160608101845281548516815260018201548516928101839052600290910154909316918301919091528015613330579150611d3f9050565b509192915050565b60085481565b600354600160a060020a03163314806133615750600554600160a060020a031633145b806133765750600454600160a060020a031633145b151561338157600080fd5b600082101580156133935750600e5481105b151561339e57600080fd5b815b81811161178d576133d9600e828154811015156133b957fe5b600091825260209091200154600854600160a060020a039091169061369f565b6001016133a0565b600354600160a060020a03163314806134045750600554600160a060020a031633145b806134195750600454600160a060020a031633145b151561342457600080fd5b61342c61422f565b600955600780546001019055565b600c5481565b600354600160a060020a03163314806134635750600554600160a060020a031633145b806134785750600454600160a060020a031633145b151561348357600080fd5b601a805460ff19169055565b6000613499614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e08601526010810154610200860152601181015461022086015291820154610240850152601382018054845181840281018401909552808552929361026086019390928301828280156135db57602002820191906000526020600020905b8154815260200190600101908083116135c7575b505050505081526020016014820180548060200260200160405190810160405280929190818152602001828054801561363357602002820191906000526020600020905b81548152602001906001019080831161361f575b5050509190925250505060a08101516101608201516101c08301516101a084015161018085015194955092939192909160008383106136725783613674565b825b9050600060646136858888866146e2565b830281151561369057fe5b049a9950505050505050505050565b600354600160a060020a03163314806136c25750600554600160a060020a031633145b806136d75750600454600160a060020a031633145b15156136e257600080fd5b60006136ed83614409565b600160a060020a03841660009081526012602052604081209054919250908311156137715760138101805490600090600019830183811061372a57fe5b60009182526020808320909101548252601381526040808320600101805489900390819055600160a060020a038a16845260129092529091206008015550611fed92505050565b600781015460ff1615613785575050611fed565b611fea84836002600087614335565b600354600160a060020a03163314806137b75750600554600160a060020a031633145b806137cc5750600454600160a060020a031633145b15156137d757600080fd5b6137df61422f565b600160a060020a03909116600090815260126020526040902060080155565b60136020526000908152604090208054600182015460028301546003840154600490940154929391929091600160a060020a03908116919081169060a060020a900460ff1686565b601a5460ff16151561385757600080fd5b600554600160a060020a031633148061387a5750600354600160a060020a031633145b151561388557600080fd5b600795909555600893909355600991909155600a55600b55600c55565b600354600160a060020a03163314806138c55750600554600160a060020a031633145b806138da5750600454600160a060020a031633145b15156138e557600080fd5b600054600302601b600001546138f961422f565b031161390457600080fd5b825b82811015611fea576000600e8281548110151561391f57fe5b600091825260209091200154600160a060020a0316905082801561395e5750600160a060020a0381166000908152601d602052604090205460ff166003145b1561398757600160a060020a03166000908152601d60205260409020805460ff191690556139d6565b600160a060020a0381166000908152601d602052604090205460ff1615156139b357601f805460010190555b600160a060020a03166000908152601d60205260409020805460ff191660031790555b600101613906565b600354600160a060020a0316331480613a015750600554600160a060020a031633145b80613a165750600454600160a060020a031633145b1515613a2157600080fd5b601b541515613a2f57600080fd5b600054600302601b60000154613a4361422f565b0311613a4e57600080fd5b602154602054600290910410613a6357600080fd5b601e54600160a060020a031615613a7957600080fd5b6032831115613a8757600080fd5b60008210158015613a995750600e5481105b1515613aa457600080fd5b815b818111611fea576000600e82815481101515613abe57fe5b6000918252602080832090910154600160a060020a03168083526012909152604082206009810154919350911015613af7575050613b43565b600781015460ff1615613b0b575050613b43565b60058101546006820154600282048110613b285750505050613b43565b613b3e84826064858c0204036006600080614335565b505050505b600101613aa6565b600d54600160a060020a031681565b600f8054829081106119e057fe5b6006805434019055565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293600160a060020a0392831693929091169187565b600354600160a060020a0316331480613bde5750600554600160a060020a031633145b80613bf35750600454600160a060020a031633145b1515613bfe57600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19166001179055565b60185481565b600354600160a060020a031681565b601b8054601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529394939291830182828015613cc75780601f10613c9c57610100808354040283529160200191613cc7565b820191906000526020600020905b815481529060010190602001808311613caa57829003601f168201915b505050506003830154600484015460058501546006909501549394600160a060020a039092169390925086565b600354600160a060020a0316331480613d175750600554600160a060020a031633145b80613d2c5750600454600160a060020a031633145b1515613d3757600080fd5b60008181526013602052604090206004810154600160a060020a03161515613d5e57600080fd5b600281015460005b6004830154600160a060020a031615801590613d83575060185481105b15611fea576004830154600160a060020a03811660009081526012602052604090209060a060020a900460ff1615613dc457600e8101805484019055613dcf565b600d81018054840190555b6004840180548254600160a060020a03908116600090815260126020526040902060019081015474ff00000000000000000000000000000000000000001984169383169083161460a060020a0292909217808455935416600160a060020a031990931692909217905501613d66565b600354600160a060020a0316331480613e615750600554600160a060020a031633145b80613e765750600454600160a060020a031633145b1515613e8157600080fd5b600160a060020a03828116600090815260166020526040902060028101549091838116911614613eb057600080fd5b600281018054600160a060020a031990811690915560019091018054909116600160a060020a039290921691909117905550565b600354600160a060020a0316331480613f075750600554600160a060020a031633145b80613f1c5750600454600160a060020a031633145b1515613f2757600080fd5b6000613f328261348f565b90506000613f3f83614409565b600160a060020a038416600090815260126020526040812060068101546005820154600f9092015493945092909182118015613f845750816003028185878601010110155b1515613f8f57600080fd5b613f9f8660006064600080614335565b505050505050565b600160a060020a038116600090815260126020526040902060048101541515613fcf57600080fd5b60058101541515613feb576012810154341015613feb57600080fd5b601954600a82015410613ffd57600080fd5b600981015460321161400e57600080fd5b600981015415806140305750600054600702816008015461402d61422f565b03105b8061403e5750600581015415155b151561404957600080fd5b600680543401905560004361405c61422f565b84346040516020018085815260200184815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200194505050505060405160208183030381529060405280519060200120905060006002543484600501540111156140dc578260050154600254036140de565b345b90508015156140ef575050506118a7565b8254600160a060020a0390811660009081526012602052604090206001015481169085161461411c614ff2565b60c06040519081016040528085815260200161413661422f565b81526020808201869052600160a060020a03808a166040808501919091528954821660608086019190915287151560809586015260008a81526013855282902086518155938601516001850155908501516002840155840151600383018054918316600160a060020a0319928316179055928401516004909201805460a0860151151560a060020a0274ff000000000000000000000000000000000000000019949093169416939093179190911617905590506141f28461473e565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020191909155505050565b601754420190565b600160a060020a0382166000908152601260205260408120600501541161425d57600080fd5b600160a060020a03821660009081526012602052604090206007015460ff161561428657600080fd5b600054600302601b6000015461429a61422f565b03106142a557600080fd5b6000816142b35760016142b6565b60025b600160a060020a0384166000908152601d602052604090205490915060ff9081169082168114156142e657600080fd5b6142ef836147fd565b60ff81161515614300575050611fed565b821561431d5761430e611982565b60208054919091039055611fea565b614325611982565b601f805491909103905550505050565b83158015614344575082606414155b1561434e57614402565b600160a060020a038516151561436357614402565b600160a060020a0385166000908152601260205260408120906143858761348f565b905060008161439389614409565b84600f01540101905085600114156143a85786015b8260050154600302836006015482011015156143d1576143c981898461485d565b505050614402565b600083600f015411156143f1576143f183600f0154896004600080614906565b6143fe8789888888614906565b5050505b5050505050565b6000614413614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e086015260108101546102008601526011810154610220860152918201546102408501526013820180548451818402810184019095528085529293610260860193909283018282801561455557602002820191906000526020600020905b815481526020019060010190808311614541575b50505050508152602001601482018054806020026020016040519081016040528092919081815260200182805480156145ad57602002820191906000526020600020905b815481526020019060010190808311614599575b50505091909252505050610260810151519091506000805b828110156146d0576145d5614ff2565b60136000866102600151848151811015156145ec57fe5b60209081029091018101518252818101929092526040908101600020815160c0810183528154815260018201549381018490526002820154928101929092526003810154600160a060020a039081166060840152600490910154908116608083015260ff60a060020a90910416151560a0820152610100870151909250111561467557506146c8565b600054816020015161468561422f565b03106146c65760008054826020015161469c61422f565b038115156146a657fe5b04905060006064836040015183028115156146bd57fe5b04949094019350505b505b6001016145c5565b50610200909201519091039392505050565b6000806146ee84614998565b905060006146fb86614a1f565b9050600061470885614a1f565b90506000828410614719578261471b565b835b9050600081831061472c578161472e565b825b6002029998505050505050505050565b60008181526013602081815260408084206002810154600380830154600160a060020a039081168852601286528488209687018054600181018255908952958820909501889055600586018054830190558501549093168086529190942091929181156147ba57600b8101805485019055600c81018054850190555b6001548160050154101580156147d55750600781015460ff16155b15613f9f57613f9f82600a86600389015491900490600190600160a060020a03166000614335565b8061480957600161480c565b60025b336000908152601d60205260409020805460ff191660ff9290921691909117905580156148495761483b611982565b601f805490910190556118a7565b614851611982565b60208054909101905550565b600160a060020a0382166000908152601260205260408120600681015460058201549192600390920203908186039084111561489e5761489e856000614a99565b6009830180546001908101909155600a84018054909101905560058301805460009182905560068501919091556148d361422f565b600885015560006010850155600f840182905560098401546148f790879083614b2d565b61293583876000806000614c57565b600160a060020a0384166000908152601260205260409020600601805486019055600483141561494d57600160a060020a0384166000908152601260205260408120600f01555b8260031415614960576149608482614a99565b826002141561498b57600160a060020a03841660009081526012602052604090206010018054860190555b6144028585858585614c57565b60006801a055690d9db800008210156149b357506000611d3f565b680340aad21b3b7000008210156149cc57506001611d3f565b6804e1003b28d92800008210156149e557506002611d3f565b68068155a43676e000008210156149fe57506003611d3f565b680821ab0d4414980000821015614a1757506004611d3f565b506005919050565b6000671bc16d674ec80000821015614a3957506000611d3f565b673782dace9d900000821015614a5157506001611d3f565b6753444835ec580000821015614a6957506002611d3f565b676f05b59d3b200000821015614a8157506003611d3f565b678ac7230489e80000821015614a1757506004611d3f565b600160a060020a03821660009081526012602052604090206007546003108015614ac257508115155b15614ada576000600d8201819055600e820155614b1b565b600e810154600d82015410614b0457600e81018054600d8301805491909103905560009055614b1b565b600d81018054600e83018054919091039055600090555b811561178d576000600c820155505050565b600043614b3861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a0388160260608301526074808301879052815180840390910181526094909201905280519101209050614b92615083565b60806040519081016040528083815260200186600160a060020a03168152602001858152602001614bc161422f565b90526011805460018082019092557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801849055600093845260156020908152604080862084518155848301519381018054600160a060020a031916600160a060020a0395861617905584820151600282015560609094015160039094019390935596168352601295869052909120909301555050565b841515614c6357614402565b6000614c6e856132ce565b604051909150600160a060020a03821690605a606489040280156108fc02916000818181858888f19350505050158015614cac573d6000803e3d6000fd5b50600d54604051600160a060020a0390911690600a606489040280156108fc02916000818181858888f19350505050158015614cec573d6000803e3d6000fd5b50600044614cf861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a038a16026060830152607482018a905260948083018990528151808403909101815260b4909201905280519101209050614d59615047565b60e060405190810160405280838152602001614d7361422f565b815260208082018b9052600160a060020a03808b1660408085018290528a831660608087019190915260808087018e905260a09687018c905260008a815260148088528482208a5181558a8901516001808301919091558b8701516002830155948b0151600382018054918a16600160a060020a0319928316179055938b01516004820180549190991694169390931790965596880151600582015560c09097015160069097019690965590845260128352832001805480850182559083529082200184905560108054928301815590527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672019190915550505050505050565b6102a0604051908101604052806000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b828054828255906000526020600020908101928215614f75579160200282015b82811115614f75578251825591602001919060010190614f5a565b50614f819291506150aa565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fc657805160ff1916838001178555614f75565b82800160010185558215614f755791820182811115614f75578251825591602001919060010190614f5a565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080516060810182526000808252602082018190529181019190915290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6119c091905b80821115614f8157600081556001016150b056fea165627a7a723058202fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d570029

Deployed Bytecode

0x608060405260043610610417576000357c0100000000000000000000000000000000000000000000000000000000900480638ed24df111610230578063d0e30db011610140578063ed88c68e116100c8578063f851a44011610097578063f851a44014611156578063f9b137d71461116b578063fa2e15c91461122d578063fba5ab3514611257578063fd5e79aa1461129257610417565b8063ed88c68e1461109a578063efbf64a7146110a2578063f142ca5e1461110e578063f6610aa61461114157610417565b8063db652fa71161010f578063db652fa714610fa5578063dcd6825014610fed578063df40da2914611025578063e54480481461105b578063e83a25c51461107057610417565b8063d0e30db014610417578063d202925b14610ed1578063d51527d114610f0a578063d7eb937914610f3d57610417565b8063a9e4176f116101c3578063b4dd489011610192578063b4dd489014610e2f578063c8f4095614610e5f578063c9a1e7b214610e74578063ca5e586614610e89578063cb60930d14610e9e57610417565b8063a9e4176f14610dac578063aa67c91914610dc1578063afe46ea214610de7578063b30e3b3814610e1a57610417565b8063952867c1116101ff578063952867c114610ce957806395a25efa14610d225780639f9aca8414610d4c578063a363fc9614610d9757610417565b80638ed24df114610b8d5780638f0fb9e014610ba25780638f35a75e14610bfd57806394dd27d214610cd457610417565b8063479537b61161032b5780636d462ae1116102be5780637dded8f21161028d5780637dded8f214610a175780637e4ca6cc14610a47578063863e76db14610b05578063892611ef14610b1a5780638a97fce014610b7857610417565b80636d462ae11461095a5780637726b16b1461099f5780637a9506ed146109cf5780637af6603b146109e457610417565b806359aab5f1116102fa57806359aab5f1146108695780635bdbeb341461087e578063647fbc13146108b75780636a86e8fd1461090257610417565b8063479537b61461077557806349aa4ee2146107f85780634b9f5c981461080d5780634c6de5091461083957610417565b806326969b67116103ae57806337f6a7ee1161037d57806337f6a7ee146106d95780633865079f146106ee578063395bf562146107185780633f3108961461072d578063459b88df1461074257610417565b806326969b671461065c57806327f6ae8c146106715780632d9b7f4d1461069a5780632fb011fa146106af57610417565b806314e53a40116103ea57806314e53a40146105cc578063152ad433146105e15780631b3f8e44146105f65780631bf602ff1461062957610417565b8063049f25971461042157806306a8f8a21461055f578063097d42e0146105905780630e8ac5c1146105b7575b61041f6112c5565b005b34801561042d57600080fd5b5061041f6004803603606081101561044457600080fd5b81019060208101813564010000000081111561045f57600080fd5b82018360208201111561047157600080fd5b8035906020019184602083028401116401000000008311171561049357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843515159590949093506040810192506020013590506401000000008111156104ed57600080fd5b8201836020820111156104ff57600080fd5b8035906020019184602083028401116401000000008311171561052157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112d0945050505050565b34801561056b57600080fd5b50610574611792565b60408051600160a060020a039092168252519081900360200190f35b34801561059c57600080fd5b506105a56117a1565b60408051918252519081900360200190f35b3480156105c357600080fd5b5061041f6117a7565b3480156105d857600080fd5b506105a56118aa565b3480156105ed57600080fd5b506105a56118b0565b34801561060257600080fd5b5061041f6004803603602081101561061957600080fd5b5035600160a060020a03166118b6565b34801561063557600080fd5b5061041f6004803603602081101561064c57600080fd5b5035600160a060020a031661191d565b34801561066857600080fd5b506105a5611982565b34801561067d57600080fd5b506106866119c3565b604080519115158252519081900360200190f35b3480156106a657600080fd5b506105a56119cc565b3480156106bb57600080fd5b506105a5600480360360208110156106d257600080fd5b50356119d2565b3480156106e557600080fd5b506105a56119f1565b3480156106fa57600080fd5b506105a56004803603602081101561071157600080fd5b50356119f7565b34801561072457600080fd5b506105a5611a05565b34801561073957600080fd5b506105a5611a0b565b34801561074e57600080fd5b5061041f6004803603602081101561076557600080fd5b5035600160a060020a0316611a11565b34801561078157600080fd5b506107a86004803603602081101561079857600080fd5b5035600160a060020a0316611a76565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156107e45781810151838201526020016107cc565b505050509050019250505060405180910390f35b34801561080457600080fd5b5061041f611d44565b34801561081957600080fd5b5061041f6004803603602081101561083057600080fd5b50351515611e27565b34801561084557600080fd5b5061041f6004803603604081101561085c57600080fd5b5080359060200135611e31565b34801561087557600080fd5b5061041f611f07565b34801561088a57600080fd5b5061041f600480360360408110156108a157600080fd5b50600160a060020a038135169060200135611f60565b3480156108c357600080fd5b5061041f600480360360a08110156108da57600080fd5b50600160a060020a038135169060208101359060408101359060608101359060800135611ff1565b34801561090e57600080fd5b5061092c6004803603602081101561092557600080fd5b503561207b565b60408051948552600160a060020a039093166020850152838301919091526060830152519081900360800190f35b34801561096657600080fd5b5061041f6004803603608081101561097d57600080fd5b5080359060208101359060408101359060600135600160a060020a03166120ac565b3480156109ab57600080fd5b5061041f600480360360408110156109c257600080fd5b508035906020013561221f565b3480156109db57600080fd5b506105a5612478565b3480156109f057600080fd5b5061041f60048036036020811015610a0757600080fd5b5035600160a060020a031661247e565b348015610a2357600080fd5b5061041f60048036036040811015610a3a57600080fd5b5080359060200135612558565b348015610a5357600080fd5b5061041f60048036036040811015610a6a57600080fd5b810190602081018135640100000000811115610a8557600080fd5b820183602082011115610a9757600080fd5b80359060200191846001830284011164010000000083111715610ab957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050509035600160a060020a031691506126179050565b348015610b1157600080fd5b506105a5612718565b348015610b2657600080fd5b50610b4d60048036036020811015610b3d57600080fd5b5035600160a060020a031661271e565b60408051600160a060020a039485168152928416602084015292168183015290519081900360600190f35b348015610b8457600080fd5b5061057461274c565b348015610b9957600080fd5b506105a561275b565b348015610bae57600080fd5b5061041f600480360360e0811015610bc557600080fd5b50803590602081013590604081013590600160a060020a03606082013581169160808101359091169060a08101359060c00135612761565b348015610c0957600080fd5b50610c3060048036036020811015610c2057600080fd5b5035600160a060020a031661293e565b60405180806020018415151515815260200180602001838103835286818151815260200191508051906020019060200280838360005b83811015610c7e578181015183820152602001610c66565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cbd578181015183820152602001610ca5565b505050509050019550505050505060405180910390f35b348015610ce057600080fd5b506105a5612ddf565b348015610cf557600080fd5b5061041f60048036036040811015610d0c57600080fd5b50600160a060020a038135169060200135612de5565b348015610d2e57600080fd5b5061057460048036036020811015610d4557600080fd5b5035612e47565b348015610d5857600080fd5b5061041f60048036036080811015610d6f57600080fd5b50600160a060020a038135811691602081013582169160408201351690606001351515612e6f565b348015610da357600080fd5b506105a5613276565b348015610db857600080fd5b506105a561327c565b61041f60048036036020811015610dd757600080fd5b5035600160a060020a0316613282565b348015610df357600080fd5b5061057460048036036020811015610e0a57600080fd5b5035600160a060020a03166132ce565b348015610e2657600080fd5b506105a5613338565b348015610e3b57600080fd5b5061041f60048036036040811015610e5257600080fd5b508035906020013561333e565b348015610e6b57600080fd5b5061041f6133e1565b348015610e8057600080fd5b506105a561343a565b348015610e9557600080fd5b5061041f613440565b348015610eaa57600080fd5b506105a560048036036020811015610ec157600080fd5b5035600160a060020a031661348f565b348015610edd57600080fd5b5061041f60048036036040811015610ef457600080fd5b50600160a060020a03813516906020013561369f565b348015610f1657600080fd5b5061041f60048036036020811015610f2d57600080fd5b5035600160a060020a0316613794565b348015610f4957600080fd5b50610f6760048036036020811015610f6057600080fd5b50356137fe565b60408051968752602087019590955285850193909352600160a060020a039182166060860152166080840152151560a0830152519081900360c00190f35b348015610fb157600080fd5b5061041f600480360360c0811015610fc857600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613846565b348015610ff957600080fd5b5061041f6004803603606081101561101057600080fd5b508035906020810135906040013515156138a2565b34801561103157600080fd5b5061041f6004803603606081101561104857600080fd5b50803590602081013590604001356139de565b34801561106757600080fd5b50610574613b4b565b34801561107c57600080fd5b506105a56004803603602081101561109357600080fd5b5035613b5a565b61041f613b68565b3480156110ae57600080fd5b506110cc600480360360208110156110c557600080fd5b5035613b72565b60408051978852602088019690965286860194909452600160a060020a0392831660608701529116608085015260a084015260c0830152519081900360e00190f35b34801561111a57600080fd5b5061041f6004803603602081101561113157600080fd5b5035600160a060020a0316613bbb565b34801561114d57600080fd5b506105a5613c25565b34801561116257600080fd5b50610574613c2b565b34801561117757600080fd5b50611180613c3a565b604051808781526020018060200186600160a060020a0316600160a060020a03168152602001858152602001848152602001838152602001828103825287818151815260200191508051906020019080838360005b838110156111ed5781810151838201526020016111d5565b50505050905090810190601f16801561121a5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b34801561123957600080fd5b5061041f6004803603602081101561125057600080fd5b5035613cf4565b34801561126357600080fd5b5061041f6004803603604081101561127a57600080fd5b50600160a060020a0381358116916020013516613e3e565b34801561129e57600080fd5b5061041f600480360360208110156112b557600080fd5b5035600160a060020a0316613ee4565b6112ce33613fa7565b565b601a5460ff1615156112e157600080fd5b600554600160a060020a03163314806113045750600354600160a060020a031633145b151561130f57600080fd5b6012600084600481518110151561132257fe5b6020908102909101810151600160a060020a0316825281019190915260400160002060040154156113525761178d565b61135a614e73565b6102a06040519081016040528085600081518110151561137657fe5b90602001906020020151600160a060020a0316815260200185600181518110151561139d57fe5b90602001906020020151600160a060020a031681526020018560028151811015156113c457fe5b90602001906020020151600160a060020a031681526020018560038151811015156113eb57fe5b90602001906020020151600160a060020a0316815260200183600081518110151561141257fe5b90602001906020020151815260200183600181518110151561143057fe5b90602001906020020151815260200183600281518110151561144e57fe5b906020019060200201518152602001841515815260200183600381518110151561147457fe5b90602001906020020151815260200183600481518110151561149257fe5b9060200190602002015181526020018360058151811015156114b057fe5b9060200190602002015181526020018360068151811015156114ce57fe5b9060200190602002015181526020018360078151811015156114ec57fe5b90602001906020020151815260200183600881518110151561150a57fe5b90602001906020020151815260200183600981518110151561152857fe5b90602001906020020151815260200183600a81518110151561154657fe5b90602001906020020151815260200183600b81518110151561156457fe5b90602001906020020151815260200183600c81518110151561158257fe5b60209081029190910181015182526001548282015260408051600080825281840183528285019190915281518181529283019091526060909201528551919250829160129190879060049081106115d557fe5b602090810291909101810151600160a060020a03908116835282820193909352604091820160002084518154600160a060020a031990811691861691909117825585830151600183018054831691871691909117905592850151600282018054851691861691909117905560608501516003820180549094169416939093179091556080830151600483015560a0830151600583015560c0830151600683015560e083015160078301805460ff191691151591909117905561010083015160088301556101208301516009830155610140830151600a830155610160830151600b830155610180830151600c8301556101a0830151600d8301556101c0830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301556102408301516012830155610260830151805161171e9260138501920190614f3a565b50610280820151805161173b916014840191602090910190614f3a565b50905050600e84600481518110151561175057fe5b6020908102919091018101518254600181018455600093845291909220018054600160a060020a031916600160a060020a03909216919091179055505b505050565b600454600160a060020a031681565b60065481565b600354600160a060020a03163314806117ca5750600554600160a060020a031633145b806117df5750600454600160a060020a031633145b15156117ea57600080fd5b601b5415156117f857600080fd5b600054600302601b6000015461180c61422f565b031161181757600080fd5b602154601f5460029091041061182c57600080fd5b601e54600160a060020a0316151561184357600080fd5b601e54604051600091600160a060020a0316903031908381818185875af1925050503d8060008114611891576040519150601f19603f3d011682016040523d82523d6000602084013e611896565b606091505b50909150508015156118a757600080fd5b50565b60075481565b600a5481565b600354600160a060020a03163314806118d95750600554600160a060020a031633145b806118ee5750600454600160a060020a031633145b15156118f957600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19169055565b600354600160a060020a03163314806119405750600554600160a060020a031633145b806119555750600454600160a060020a031633145b151561196057600080fd5b60048054600160a060020a031916600160a060020a0392909216919091179055565b336000908152601260205260408120600401546003116119a4575060016119c0565b602154602810156119bc5750602154601490046119c0565b5060025b90565b601a5460ff1681565b60105490565b60108054829081106119e057fe5b600091825260209091200154905081565b600e5490565b60118054829081106119e057fe5b600f5490565b60115490565b600354600160a060020a0316331480611a345750600554600160a060020a031633145b80611a495750600454600160a060020a031633145b1515611a5457600080fd5b60058054600160a060020a031916600160a060020a0392909216919091179055565b600e54604080518281526020808402820101909152606091908290828015611aa8578160200160208202803883390190505b50905083816000815181101515611abb57fe5b600160a060020a03909216602092830290910190910152600060015b818114611d3857611ae6614e73565b8351600184019360129160009187918110611afd57fe5b6020908102909101810151600160a060020a03908116835282820193909352604091820160002082516102a081018452815485168152600182015485168184015260028201548516818501526003820154909416606085015260048101546080850152600581015460a0850152600681015460c0850152600781015460ff16151560e085015260088101546101008501526009810154610120850152600a810154610140850152600b810154610160850152600c810154610180850152600d8101546101a0850152600e8101546101c0850152600f8101546101e08501526010810154610200850152601181015461022085015260128101546102408501526013810180548451818502810185019095528085529193610260860193909290830182828015611c4b57602002820191906000526020600020905b815481526020019060010190808311611c37575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015611ca357602002820191906000526020600020905b815481526020019060010190808311611c8f575b505050919092525050506020810151909150600160a060020a031615611cf15760208101518451600184019386918110611cd957fe5b600160a060020a039092166020928302909101909101525b6040810151600160a060020a031615611d325760408101518451600184019386918110611d1a57fe5b600160a060020a039092166020928302909101909101525b50611ad7565b5090925050505b919050565b600354600160a060020a0316331480611d675750600554600160a060020a031633145b80611d7c5750600454600160a060020a031633145b1515611d8757600080fd5b6040805160c081018252600080825282516020818101808652838352908401829052938301829052606083018290526080830182905260a08301919091528151601b908155905191929091611dde91601c91614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a090910151600690910155565b6118a73382614237565b600354600160a060020a0316331480611e545750600554600160a060020a031633145b80611e695750600454600160a060020a031633145b1515611e7457600080fd5b60008210158015611e865750600e5481105b1515611e9157600080fd5b815b8181101561178d576000600e82815481101515611eac57fe5b6000918252602080832090910154600160a060020a031680835260129091526040909120600a01549091501515611ee35750611eff565b600160a060020a03166000908152601260205260408120600a01555b600101611e93565b600354600160a060020a0316331480611f2a5750600554600160a060020a031633145b80611f3f5750600454600160a060020a031633145b1515611f4a57600080fd5b611f5261422f565b600a55600880546001019055565b600354600160a060020a0316331480611f835750600554600160a060020a031633145b80611f985750600454600160a060020a031633145b1515611fa357600080fd5b600160a060020a0382166000908152601260205260409020600781015460ff1615611fce5750611fed565b6000611fd98461348f565b9050611fea84826003600087614335565b50505b5050565b600354600160a060020a03163314806120145750600554600160a060020a031633145b806120295750600454600160a060020a031633145b151561203457600080fd5b600160a060020a0385166000908152601260205260408120600481015490911061205d57600080fd5b600b810194909455600c840192909255600d830155600e9091015550565b60156020526000908152604090208054600182015460028301546003909301549192600160a060020a039091169184565b601a5460ff1615156120bd57600080fd5b600554600160a060020a03163314806120e05750600354600160a060020a031633145b15156120eb57600080fd5b6000848152601360205260409020600101541561210757611fea565b61210f614ff2565b506040805160c0810182528581526020808201868152828401868152600160a060020a038087166060860181815260006080880181815260a089018281528e83526013808a528b84209a518b55975160018b810191909155965160028b0155925160038a018054918716600160a060020a03199283161790559051600490990180549351151560a060020a0274ff0000000000000000000000000000000000000000199a90961693909116929092179790971692909217909155600f80548084019091557f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018a905584526012835293832001805493840181558252902001849055600680548301905550505050565b600354600160a060020a03163314806122425750600554600160a060020a031633145b806122575750600454600160a060020a031633145b151561226257600080fd5b600082101580156122745750600e5481105b151561227f57600080fd5b601b54151561228d57600080fd5b600054600302601b600001546122a161422f565b03116122ac57600080fd5b602154601f546002909104106122c157600080fd5b601e54600160a060020a0316156122d757600080fd5b6122df61422f565b600c55815b8181101561178d576000600e828154811015156122fd57fe5b6000918252602080832090910154600160a060020a0316808352601282526040808420601d90935283205490935090919060ff16151561233e57600261235b565b600160a060020a0383166000908152601d602052604090205460ff165b60ff16905080600214156123e257600082600901541180612392575081600501548260060154101580156123925750600682015415155b156123ba5761239f61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c83015561246d565b60008260090154118061240b5750816005015482600601541015801561240b5750600682015415155b156124495760078201805460ff191660011790556000600f83015561242e61422f565b60088301556000600583018190556006830181905560108301555b6000600f8301819055600d8301819055600e8301819055600b8301819055600c8301555b5050506001016122e4565b60015481565b336000908152601260205260408120600501541161249b57600080fd5b3360009081526016602052604090208054600160a060020a0316156124db576002018054600160a060020a031916600160a060020a0383161790556118a7565b6124e3615027565b505060408051606081018252338082526020808301828152600160a060020a03868116858701908152600094855260169093529490922092518354908516600160a060020a03199182161784559151600184018054918616918416919091179055516002909201805492909316911617905550565b600354600160a060020a031633148061257b5750600554600160a060020a031633145b806125905750600454600160a060020a031633145b151561259b57600080fd5b600082101580156125ad5750600e5481105b15156125b857600080fd5b600b54600054601e02016125ca61422f565b116125d457611fed565b815b81811161178d5761260f600e828154811015156125ef57fe5b600091825260209091200154600754600160a060020a0390911690611f60565b6001016125d6565b600354600160a060020a031633148061263a5750600554600160a060020a031633145b8061264f5750600454600160a060020a031633145b151561265a57600080fd5b601b541561266757600080fd5b60c06040519081016040528061267b61422f565b81526020808201859052600160a060020a03841660408301526000606083018190526080830152600e5460a0909201919091528151601b90815582820151805191926126cd92601c9290910190614f85565b506040820151600382018054600160a060020a031916600160a060020a03909216919091179055606082015160048201556080820151600582015560a0909101516006909101555050565b60005481565b601660205260009081526040902080546001820154600290920154600160a060020a03918216928216911683565b600554600160a060020a031681565b60195481565b601a5460ff16151561277257600080fd5b600554600160a060020a03163314806127955750600354600160a060020a031633145b15156127a057600080fd5b600087815260146020526040902060010154156127bc57612935565b6127c4615047565b60e06040519081016040528089815260200188815260200187815260200186600160a060020a0316815260200185600160a060020a0316815260200184815260200183815250905080601460008a815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a815481600160a060020a030219169083600160a060020a0316021790555060808201518160040160006101000a815481600160a060020a030219169083600160a060020a0316021790555060a0820151816005015560c0820151816006015590505060006012600087600160a060020a0316600160a060020a03168152602001908152602001600020905080601401899080600181540180825580915050906001820390600052602060002001600090919290919091505550601089908060018154018082558091505090600182039060005260206000200160009091929091909150555050505b50505050505050565b60408051600480825260a082019092526060916000918391602082016080803883395050604080516010808252610220820190925292955090506020820161020080388339019050509050612991614e73565b600160a060020a0380861660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e0860152601081015461020086015260118101546102208601529182015461024085015260138201805484518184028101840190955280855292936102608601939092830182828015612ad357602002820191906000526020600020905b815481526020019060010190808311612abf575b5050505050815260200160148201805480602002602001604051908101604052809291908181526020018280548015612b2b57602002820191906000526020600020905b815481526020019060010190808311612b17575b50505050508152505090508060000151846000815181101515612b4a57fe5b600160a060020a039092166020928302909101820152810151845185906001908110612b7257fe5b600160a060020a039092166020928302909101909101526040810151845185906002908110612b9d57fe5b600160a060020a039092166020928302909101909101526060810151845185906003908110612bc857fe5b600160a060020a039092166020928302909101909101526080810151825183906000908110612bf357fe5b6020908102909101015260a0810151825183906001908110612c1157fe5b6020908102909101015260c0810151825183906002908110612c2f57fe5b60209081029091010152610100810151825183906003908110612c4e57fe5b60209081029091010152610120810151825183906004908110612c6d57fe5b60209081029091010152610140810151825183906005908110612c8c57fe5b60209081029091010152610160810151825183906006908110612cab57fe5b60209081029091010152610180810151825183906007908110612cca57fe5b602090810290910101526101a0810151825183906008908110612ce957fe5b602090810290910101526101c0810151825183906009908110612d0857fe5b602090810290910101526101e081015182518390600a908110612d2757fe5b6020908102909101015261020081015182518390600b908110612d4657fe5b6020908102909101015261022081015182518390600c908110612d6557fe5b60209081029091010152612d788561348f565b82600d815181101515612d8757fe5b60209081029091010152612d9a85614409565b82600e815181101515612da957fe5b6020908102909101015261024081015182518390600f908110612dc857fe5b6020908102909101015260e0015191509193909250565b60095481565b600354600160a060020a0316331480612e085750600554600160a060020a031633145b80612e1d5750600454600160a060020a031633145b1515612e2857600080fd5b600160a060020a03909116600090815260126020526040902060090155565b600e805482908110612e5557fe5b600091825260209091200154600160a060020a0316905081565b600354600160a060020a0316331480612e925750600554600160a060020a031633145b80612ea75750600454600160a060020a031633145b1515612eb257600080fd5b600160a060020a0380851660009081526012602052604080822092851682529020600e5415612f365760048201541515612eeb57600080fd5b60048101541515612efb57600080fd5b8215612f1e576001810154600160a060020a031615612f1957600080fd5b612f36565b6002810154600160a060020a031615612f3657600080fd5b612f3e614e73565b6102a06040519081016040528086600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a0316815260200188600160a060020a03168152602001836004015460010181526020016000815260200160008152602001600015158152602001612fb561422f565b81526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001612ffa61422f565b815260200160015481526020016000604051908082528060200260200182016040528015613032578160200160208202803883390190505b5081526020016000604051908082528060200260200182016040528015613063578160200160208202803883390190505b509052600160a060020a0387811660009081526012602081815260409283902085518154600160a060020a031990811691871691909117825586830151600183018054831691881691909117905593860151600282018054861691871691909117905560608601516003820180549095169516949094179092556080840151600484015560a0840151600584015560c0840151600684015560e084015160078401805460ff191691151591909117905561010084015160088401556101208401516009840155610140840151600a840155610160840151600b840155610180840151600c8401556101a0840151600d8401556101c0840151600e8401556101e0840151600f8401556102008401516010840155610220840151601184015561024084015190830155610260830151805193945084936131a89260138501920190614f3a565b5061028082015180516131c5916014840191602090910190614f3a565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a038916179055506004820154151561322657505050611fea565b831561324e57600182018054600160a060020a031916600160a060020a038816179055612935565b600282018054600160a060020a038816600160a060020a031990911617905550505050505050565b600b5481565b60025481565b600354600160a060020a03163314806132a55750600554600160a060020a031633145b806132ba5750600454600160a060020a031633145b15156132c557600080fd5b6118a781613fa7565b60006132d8615027565b50600160a060020a03808316600090815260166020908152604091829020825160608101845281548516815260018201548516928101839052600290910154909316918301919091528015613330579150611d3f9050565b509192915050565b60085481565b600354600160a060020a03163314806133615750600554600160a060020a031633145b806133765750600454600160a060020a031633145b151561338157600080fd5b600082101580156133935750600e5481105b151561339e57600080fd5b815b81811161178d576133d9600e828154811015156133b957fe5b600091825260209091200154600854600160a060020a039091169061369f565b6001016133a0565b600354600160a060020a03163314806134045750600554600160a060020a031633145b806134195750600454600160a060020a031633145b151561342457600080fd5b61342c61422f565b600955600780546001019055565b600c5481565b600354600160a060020a03163314806134635750600554600160a060020a031633145b806134785750600454600160a060020a031633145b151561348357600080fd5b601a805460ff19169055565b6000613499614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e08601526010810154610200860152601181015461022086015291820154610240850152601382018054845181840281018401909552808552929361026086019390928301828280156135db57602002820191906000526020600020905b8154815260200190600101908083116135c7575b505050505081526020016014820180548060200260200160405190810160405280929190818152602001828054801561363357602002820191906000526020600020905b81548152602001906001019080831161361f575b5050509190925250505060a08101516101608201516101c08301516101a084015161018085015194955092939192909160008383106136725783613674565b825b9050600060646136858888866146e2565b830281151561369057fe5b049a9950505050505050505050565b600354600160a060020a03163314806136c25750600554600160a060020a031633145b806136d75750600454600160a060020a031633145b15156136e257600080fd5b60006136ed83614409565b600160a060020a03841660009081526012602052604081209054919250908311156137715760138101805490600090600019830183811061372a57fe5b60009182526020808320909101548252601381526040808320600101805489900390819055600160a060020a038a16845260129092529091206008015550611fed92505050565b600781015460ff1615613785575050611fed565b611fea84836002600087614335565b600354600160a060020a03163314806137b75750600554600160a060020a031633145b806137cc5750600454600160a060020a031633145b15156137d757600080fd5b6137df61422f565b600160a060020a03909116600090815260126020526040902060080155565b60136020526000908152604090208054600182015460028301546003840154600490940154929391929091600160a060020a03908116919081169060a060020a900460ff1686565b601a5460ff16151561385757600080fd5b600554600160a060020a031633148061387a5750600354600160a060020a031633145b151561388557600080fd5b600795909555600893909355600991909155600a55600b55600c55565b600354600160a060020a03163314806138c55750600554600160a060020a031633145b806138da5750600454600160a060020a031633145b15156138e557600080fd5b600054600302601b600001546138f961422f565b031161390457600080fd5b825b82811015611fea576000600e8281548110151561391f57fe5b600091825260209091200154600160a060020a0316905082801561395e5750600160a060020a0381166000908152601d602052604090205460ff166003145b1561398757600160a060020a03166000908152601d60205260409020805460ff191690556139d6565b600160a060020a0381166000908152601d602052604090205460ff1615156139b357601f805460010190555b600160a060020a03166000908152601d60205260409020805460ff191660031790555b600101613906565b600354600160a060020a0316331480613a015750600554600160a060020a031633145b80613a165750600454600160a060020a031633145b1515613a2157600080fd5b601b541515613a2f57600080fd5b600054600302601b60000154613a4361422f565b0311613a4e57600080fd5b602154602054600290910410613a6357600080fd5b601e54600160a060020a031615613a7957600080fd5b6032831115613a8757600080fd5b60008210158015613a995750600e5481105b1515613aa457600080fd5b815b818111611fea576000600e82815481101515613abe57fe5b6000918252602080832090910154600160a060020a03168083526012909152604082206009810154919350911015613af7575050613b43565b600781015460ff1615613b0b575050613b43565b60058101546006820154600282048110613b285750505050613b43565b613b3e84826064858c0204036006600080614335565b505050505b600101613aa6565b600d54600160a060020a031681565b600f8054829081106119e057fe5b6006805434019055565b6014602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293600160a060020a0392831693929091169187565b600354600160a060020a0316331480613bde5750600554600160a060020a031633145b80613bf35750600454600160a060020a031633145b1515613bfe57600080fd5b600160a060020a03166000908152601260205260409020600701805460ff19166001179055565b60185481565b600354600160a060020a031681565b601b8054601c805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529394939291830182828015613cc75780601f10613c9c57610100808354040283529160200191613cc7565b820191906000526020600020905b815481529060010190602001808311613caa57829003601f168201915b505050506003830154600484015460058501546006909501549394600160a060020a039092169390925086565b600354600160a060020a0316331480613d175750600554600160a060020a031633145b80613d2c5750600454600160a060020a031633145b1515613d3757600080fd5b60008181526013602052604090206004810154600160a060020a03161515613d5e57600080fd5b600281015460005b6004830154600160a060020a031615801590613d83575060185481105b15611fea576004830154600160a060020a03811660009081526012602052604090209060a060020a900460ff1615613dc457600e8101805484019055613dcf565b600d81018054840190555b6004840180548254600160a060020a03908116600090815260126020526040902060019081015474ff00000000000000000000000000000000000000001984169383169083161460a060020a0292909217808455935416600160a060020a031990931692909217905501613d66565b600354600160a060020a0316331480613e615750600554600160a060020a031633145b80613e765750600454600160a060020a031633145b1515613e8157600080fd5b600160a060020a03828116600090815260166020526040902060028101549091838116911614613eb057600080fd5b600281018054600160a060020a031990811690915560019091018054909116600160a060020a039290921691909117905550565b600354600160a060020a0316331480613f075750600554600160a060020a031633145b80613f1c5750600454600160a060020a031633145b1515613f2757600080fd5b6000613f328261348f565b90506000613f3f83614409565b600160a060020a038416600090815260126020526040812060068101546005820154600f9092015493945092909182118015613f845750816003028185878601010110155b1515613f8f57600080fd5b613f9f8660006064600080614335565b505050505050565b600160a060020a038116600090815260126020526040902060048101541515613fcf57600080fd5b60058101541515613feb576012810154341015613feb57600080fd5b601954600a82015410613ffd57600080fd5b600981015460321161400e57600080fd5b600981015415806140305750600054600702816008015461402d61422f565b03105b8061403e5750600581015415155b151561404957600080fd5b600680543401905560004361405c61422f565b84346040516020018085815260200184815260200183600160a060020a0316600160a060020a03166c0100000000000000000000000002815260140182815260200194505050505060405160208183030381529060405280519060200120905060006002543484600501540111156140dc578260050154600254036140de565b345b90508015156140ef575050506118a7565b8254600160a060020a0390811660009081526012602052604090206001015481169085161461411c614ff2565b60c06040519081016040528085815260200161413661422f565b81526020808201869052600160a060020a03808a166040808501919091528954821660608086019190915287151560809586015260008a81526013855282902086518155938601516001850155908501516002840155840151600383018054918316600160a060020a0319928316179055928401516004909201805460a0860151151560a060020a0274ff000000000000000000000000000000000000000019949093169416939093179190911617905590506141f28461473e565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac8020191909155505050565b601754420190565b600160a060020a0382166000908152601260205260408120600501541161425d57600080fd5b600160a060020a03821660009081526012602052604090206007015460ff161561428657600080fd5b600054600302601b6000015461429a61422f565b03106142a557600080fd5b6000816142b35760016142b6565b60025b600160a060020a0384166000908152601d602052604090205490915060ff9081169082168114156142e657600080fd5b6142ef836147fd565b60ff81161515614300575050611fed565b821561431d5761430e611982565b60208054919091039055611fea565b614325611982565b601f805491909103905550505050565b83158015614344575082606414155b1561434e57614402565b600160a060020a038516151561436357614402565b600160a060020a0385166000908152601260205260408120906143858761348f565b905060008161439389614409565b84600f01540101905085600114156143a85786015b8260050154600302836006015482011015156143d1576143c981898461485d565b505050614402565b600083600f015411156143f1576143f183600f0154896004600080614906565b6143fe8789888888614906565b5050505b5050505050565b6000614413614e73565b600160a060020a0380841660009081526012602081815260409283902083516102a081018552815486168152600182015486168184015260028201548616818601526003820154909516606086015260048101546080860152600581015460a0860152600681015460c0860152600781015460ff16151560e086015260088101546101008601526009810154610120860152600a810154610140860152600b810154610160860152600c810154610180860152600d8101546101a0860152600e8101546101c0860152600f8101546101e086015260108101546102008601526011810154610220860152918201546102408501526013820180548451818402810184019095528085529293610260860193909283018282801561455557602002820191906000526020600020905b815481526020019060010190808311614541575b50505050508152602001601482018054806020026020016040519081016040528092919081815260200182805480156145ad57602002820191906000526020600020905b815481526020019060010190808311614599575b50505091909252505050610260810151519091506000805b828110156146d0576145d5614ff2565b60136000866102600151848151811015156145ec57fe5b60209081029091018101518252818101929092526040908101600020815160c0810183528154815260018201549381018490526002820154928101929092526003810154600160a060020a039081166060840152600490910154908116608083015260ff60a060020a90910416151560a0820152610100870151909250111561467557506146c8565b600054816020015161468561422f565b03106146c65760008054826020015161469c61422f565b038115156146a657fe5b04905060006064836040015183028115156146bd57fe5b04949094019350505b505b6001016145c5565b50610200909201519091039392505050565b6000806146ee84614998565b905060006146fb86614a1f565b9050600061470885614a1f565b90506000828410614719578261471b565b835b9050600081831061472c578161472e565b825b6002029998505050505050505050565b60008181526013602081815260408084206002810154600380830154600160a060020a039081168852601286528488209687018054600181018255908952958820909501889055600586018054830190558501549093168086529190942091929181156147ba57600b8101805485019055600c81018054850190555b6001548160050154101580156147d55750600781015460ff16155b15613f9f57613f9f82600a86600389015491900490600190600160a060020a03166000614335565b8061480957600161480c565b60025b336000908152601d60205260409020805460ff191660ff9290921691909117905580156148495761483b611982565b601f805490910190556118a7565b614851611982565b60208054909101905550565b600160a060020a0382166000908152601260205260408120600681015460058201549192600390920203908186039084111561489e5761489e856000614a99565b6009830180546001908101909155600a84018054909101905560058301805460009182905560068501919091556148d361422f565b600885015560006010850155600f840182905560098401546148f790879083614b2d565b61293583876000806000614c57565b600160a060020a0384166000908152601260205260409020600601805486019055600483141561494d57600160a060020a0384166000908152601260205260408120600f01555b8260031415614960576149608482614a99565b826002141561498b57600160a060020a03841660009081526012602052604090206010018054860190555b6144028585858585614c57565b60006801a055690d9db800008210156149b357506000611d3f565b680340aad21b3b7000008210156149cc57506001611d3f565b6804e1003b28d92800008210156149e557506002611d3f565b68068155a43676e000008210156149fe57506003611d3f565b680821ab0d4414980000821015614a1757506004611d3f565b506005919050565b6000671bc16d674ec80000821015614a3957506000611d3f565b673782dace9d900000821015614a5157506001611d3f565b6753444835ec580000821015614a6957506002611d3f565b676f05b59d3b200000821015614a8157506003611d3f565b678ac7230489e80000821015614a1757506004611d3f565b600160a060020a03821660009081526012602052604090206007546003108015614ac257508115155b15614ada576000600d8201819055600e820155614b1b565b600e810154600d82015410614b0457600e81018054600d8301805491909103905560009055614b1b565b600d81018054600e83018054919091039055600090555b811561178d576000600c820155505050565b600043614b3861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a0388160260608301526074808301879052815180840390910181526094909201905280519101209050614b92615083565b60806040519081016040528083815260200186600160a060020a03168152602001858152602001614bc161422f565b90526011805460018082019092557f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801849055600093845260156020908152604080862084518155848301519381018054600160a060020a031916600160a060020a0395861617905584820151600282015560609094015160039094019390935596168352601295869052909120909301555050565b841515614c6357614402565b6000614c6e856132ce565b604051909150600160a060020a03821690605a606489040280156108fc02916000818181858888f19350505050158015614cac573d6000803e3d6000fd5b50600d54604051600160a060020a0390911690600a606489040280156108fc02916000818181858888f19350505050158015614cec573d6000803e3d6000fd5b50600044614cf861422f565b60408051602080820194909452808201929092526c01000000000000000000000000600160a060020a038a16026060830152607482018a905260948083018990528151808403909101815260b4909201905280519101209050614d59615047565b60e060405190810160405280838152602001614d7361422f565b815260208082018b9052600160a060020a03808b1660408085018290528a831660608087019190915260808087018e905260a09687018c905260008a815260148088528482208a5181558a8901516001808301919091558b8701516002830155948b0151600382018054918a16600160a060020a0319928316179055938b01516004820180549190991694169390931790965596880151600582015560c09097015160069097019690965590845260128352832001805480850182559083529082200184905560108054928301815590527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672019190915550505050505050565b6102a0604051908101604052806000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a031681526020016000600160a060020a03168152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b828054828255906000526020600020908101928215614f75579160200282015b82811115614f75578251825591602001919060010190614f5a565b50614f819291506150aa565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614fc657805160ff1916838001178555614f75565b82800160010185558215614f755791820182811115614f75578251825591602001919060010190614f5a565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b604080516060810182526000808252602082018190529181019190915290565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b6119c091905b80821115614f8157600081556001016150b056fea165627a7a723058202fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d570029

Swarm Source

bzzr://2fcdb7624d85c6a65d1ad3745fb91fc9950ef0cbaf93fcdf1d86d58fa1f49d57

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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