ETH Price: $2,092.29 (-2.75%)

Contract

0xFD3fa0fb1c063dF3840f4E14deFF7e24c8d735cE
 

Overview

ETH Balance

0.000940960659726372 ETH

Eth Value

$1.97 (@ $2,092.29/ETH)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw182952812023-10-07 1:18:35880 days ago1696641515IN
0xFD3fa0fb...4c8d735cE
0 ETH0.000859275
Withdraw182950422023-10-07 0:30:11880 days ago1696638611IN
0xFD3fa0fb...4c8d735cE
0 ETH0.000859275
Reinvest175980752023-07-01 8:38:35978 days ago1688200715IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0013825213.71466959
Reinvest175185392023-06-20 4:29:23989 days ago1687235363IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0013721413.2566639
Reinvest174451252023-06-09 20:45:59999 days ago1686343559IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0032904634.46375928
Reinvest167070542023-02-25 18:24:351104 days ago1677349475IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0018703219.62768663
Reinvest164402402023-01-19 10:25:351141 days ago1674123935IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0015118615.0254694
Reinvest163660652023-01-09 1:50:471151 days ago1673229047IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0017722118.59620546
Reinvest162358042022-12-21 21:37:111169 days ago1671658631IN
0xFD3fa0fb...4c8d735cE
0 ETH0.001181511.74105427
Reinvest162150192022-12-19 0:00:111172 days ago1671408011IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0011124111.67280889
Reinvest161780852022-12-13 20:12:591178 days ago1670962379IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0023569824.73230296
Reinvest161217472022-12-05 23:04:351185 days ago1670281475IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0013192113.84279477
Reinvest161202732022-12-05 18:08:111186 days ago1670263691IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0015958415.85857487
Reinvest160959512022-12-02 8:32:591189 days ago1669969979IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0010473910.99048142
Reinvest160908582022-12-01 15:29:591190 days ago1669908599IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0013271213.92581138
Withdraw160907632022-12-01 15:10:471190 days ago1669907447IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0017774612
Reinvest160890752022-12-01 9:30:591190 days ago1669887059IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0013236413.88921658
Withdraw160490442022-11-25 19:20:231196 days ago1669404023IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0019035510.9092954
Reinvest160481662022-11-25 16:23:231196 days ago1669393403IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0011862412.44747152
Reinvest160458292022-11-25 8:32:591196 days ago1669365179IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0011413111.39492139
Reinvest160435532022-11-25 0:54:351196 days ago1669337675IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0011933111.85841084
Reinvest160402392022-11-24 13:48:591197 days ago1669297739IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0011951511.87673446
Reinvest160383712022-11-24 7:32:591197 days ago1669275179IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0015277416.03093553
Reinvest160275082022-11-22 19:04:231199 days ago1669143863IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0018553919.46901239
Withdraw160207202022-11-21 20:17:231200 days ago1669061843IN
0xFD3fa0fb...4c8d735cE
0 ETH0.0015499113.62333122
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer160207202022-11-21 20:17:231200 days ago1669061843
0xFD3fa0fb...4c8d735cE
0.01406861 ETH
Transfer160207202022-11-21 20:17:231200 days ago1669061843
0xFD3fa0fb...4c8d735cE
0.00042205 ETH
Transfer160207202022-11-21 20:17:231200 days ago1669061843
0xFD3fa0fb...4c8d735cE
0.00056274 ETH
Transfer160207202022-11-21 20:17:231200 days ago1669061843
0xFD3fa0fb...4c8d735cE
0.00042205 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00402183 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00469213 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00536244 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00201091 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00268122 ETH
Transfer160187912022-11-21 13:49:351200 days ago1669038575
0xFD3fa0fb...4c8d735cE
0.00201091 ETH
Transfer160187592022-11-21 13:43:111200 days ago1669038191
0xFD3fa0fb...4c8d735cE
0.03036916 ETH
Transfer160187592022-11-21 13:43:111200 days ago1669038191
0xFD3fa0fb...4c8d735cE
0.00091107 ETH
Transfer160187592022-11-21 13:43:111200 days ago1669038191
0xFD3fa0fb...4c8d735cE
0.00121476 ETH
Transfer160187592022-11-21 13:43:111200 days ago1669038191
0xFD3fa0fb...4c8d735cE
0.00091107 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0022 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0033 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0066 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0077 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0088 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0033 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0044 ETH
Transfer160187402022-11-21 13:39:231200 days ago1669037963
0xFD3fa0fb...4c8d735cE
0.0033 ETH
Transfer159457052022-11-11 8:52:231210 days ago1668156743
0xFD3fa0fb...4c8d735cE
0.01060597 ETH
Transfer159457052022-11-11 8:52:231210 days ago1668156743
0xFD3fa0fb...4c8d735cE
0.00031817 ETH
Transfer159457052022-11-11 8:52:231210 days ago1668156743
0xFD3fa0fb...4c8d735cE
0.00042423 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BullFarm

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./interfaces/IBullFund.sol";

contract BullFarm {
    // Structs
    struct User {
        address account;
        address upline;
        uint deposit;
        uint withdraw;
        uint x3Factor;
        uint x3FactorCount;
        uint lastDepositUpdate;
        uint deferredProfit;
        uint openLines;
        uint[6] missedPartnersRewardByLine;
        uint[6] partnersRewardByLine;
        uint[6] partnersCountByLine;
    }

    // Constants
    uint public constant MIN_DEPOSIT_VALUE = 0.1 ether;
    uint public constant MIN_REINVEST_VALUE = 0.01 ether;
    uint public constant MIN_WITHDRAWAL_VALUE = 0.01 ether;
    uint public constant INITIAL_MAX_DEPOSIT = 1 ether;
    uint public constant MAX_DEPOSIT_DAILY_STEP = 0.2 ether;
    uint public constant MAX_DEPOSIT = 20 ether;
    uint public constant STAGE_PERIOD = 3 days;
    uint public constant MAX_LINES = 6;
    uint public constant DEVS_FEE = 300; // 3%
    uint public constant HONEY_BANK_FEE = 400; // 4%
    uint public constant INSURANCE_FEE = 300; // 3%
    uint public constant TOTAL_FEES = DEVS_FEE + HONEY_BANK_FEE + INSURANCE_FEE; // 10%
    uint[4] public PROFIT_BY_STAGES = [500,400,300,200]; // [5%, 4%, 3%, 2%]
    uint[6] public OPEN_LINE_MIN_DEPOSIT = [0.1 ether, 0.5 ether, 1 ether, 1.5 ether, 2 ether, 2.5 ether];
    uint[][] public PARTNER_PROGRAMS; // [12%, 10%, 8%] -> [10%, 8%, 7%, 5%] -> [9%, 7%, 6%, 5%, 3%] -> [8%, 7%, 6%, 4%, 3%, 2%]
    uint public PERCENTS_DIVISOR = 10000;

    // State
    mapping(address => User) users;
    mapping(address => bool) waitingMigration;
    address public admin;
    address public lineManager;
    uint public launchTimestamp;
    uint[] public stageTimestamps;
    mapping(address => bool) unlimited;
    uint public totalUsers;

    // Addresses for fee distribution
    address public devAddress;
    address public honeyFundAddress;
    IBullFarmFund public insuranceFund;

    // Events
    event Deposit(address account, uint value);
    event Reinvest(address account, uint value);
    event Withdraw(address account, uint value);
    event WithdrawTokens(address account, uint value);
    event Registration(address account, address upline);
    event PartnerReward(address account, address upline, uint reward);
    event FailedPartnerReward(address account, address upline, uint reward);
    event MissedPartnerReward(address account, address upline, uint reward);
    event X3FactorApply(address account, uint deposit);
    event Launch();

    // Modifiers
    modifier onlyRegistered() {
        require(users[msg.sender].account != address(0), "User is not registered");
        _;
    }

    constructor(address _devAddress, address _honeyFundAddress, IBullFarmFund _insuranceFund) {
        devAddress = _devAddress;
        honeyFundAddress = _honeyFundAddress;
        insuranceFund = _insuranceFund;
        admin = msg.sender;
        users[admin].account = admin;
        users[admin].upline = admin;
        users[admin].openLines = MAX_LINES;
        unlimited[admin] = true;
        totalUsers++;
        PARTNER_PROGRAMS.push([1200, 1000, 800]); //12%, 10%, 8%
        PARTNER_PROGRAMS.push([1000, 800, 700, 500]); //10%, 8%, 7%, 5%
        PARTNER_PROGRAMS.push([900, 700, 600, 500, 300]); //9%, 7%, 6%, 5%, 3%
        PARTNER_PROGRAMS.push([800, 700, 600, 400, 300, 200]); //8%, 7%, 6%, 4%, 3%, 2%
    }

    receive() external payable { /* Do nothing */ }

    // State changing functions
    function registerAndDeposit(address upline) payable external {
        register(upline);
        depositTo(msg.sender);
    }

    function register(address upline) public {
        if(users[upline].account == address(0)) {
            upline = admin;
        }

        require(users[msg.sender].account == address(0), "User is already registered");
        require(users[upline].account != address(0), "Upline is not registered");

        users[msg.sender].account = msg.sender;
        users[msg.sender].upline = upline;
        totalUsers++;

        address curUpline = upline;
        for(uint line; line < MAX_LINES; line++) {
            users[curUpline].partnersCountByLine[line]++;
            if (curUpline != users[curUpline].upline) {
                curUpline = users[curUpline].upline;
            } else {
                break;
            }
        }

        emit Registration(msg.sender, upline);
    }

    function deposit() payable external onlyRegistered {
        depositTo(msg.sender);
    }

    function depositTo(address account) payable public {
        require(launchTimestamp > 0, "BullFarm: not launched");
        require(users[account].account != address(0), "User is not registered");
        require(msg.value >= MIN_DEPOSIT_VALUE, "Deposit value is too small");
        require(users[account].deposit + msg.value <= getCurrentMaxDeposit(), "Deposit limit exceeded");
        require(!waitingMigration[account], "Migration required before deposit");

        users[account].deferredProfit += calcProfitForPeriod(users[account].deposit, users[account].lastDepositUpdate, block.timestamp);
        users[account].lastDepositUpdate = block.timestamp;
        users[account].deposit += msg.value;
        users[account].x3Factor += msg.value * 3;
        users[account].openLines = recalcOpenLines(account);

        distributeFees(msg.value);
        sendPartnerRewards(account, msg.value);

        emit Deposit(account, msg.value);
    }

    function reinvest() external onlyRegistered {
        require(launchTimestamp > 0, "BullFarm: not launched");
        require(users[msg.sender].deposit > 0, "Nothing to reinvest");

        uint availableProfit = calcAvailableProfit(msg.sender);
        require(availableProfit >= MIN_REINVEST_VALUE, "Reinvest value is too small");
        require(users[msg.sender].deposit + availableProfit <= getCurrentMaxDeposit(), "Reinvest value is too big");

        users[msg.sender].deferredProfit = 0;
        users[msg.sender].lastDepositUpdate = block.timestamp;
        users[msg.sender].deposit += availableProfit;
        users[msg.sender].x3Factor += availableProfit * 3;
        users[msg.sender].openLines = recalcOpenLines(msg.sender);

        uint feeAndPartnersReward = availableProfit * (getCurrentTotalPartnersRewardPercents() + TOTAL_FEES) / PERCENTS_DIVISOR;
        if (address(this).balance >= feeAndPartnersReward) {
            distributeFees(availableProfit);
            sendPartnerRewards(msg.sender, availableProfit);
        }

        emit Reinvest(msg.sender, availableProfit);
    }

    function withdraw() external onlyRegistered {
        require(users[msg.sender].lastDepositUpdate > 0, "No deposits");

        uint profit = calcAvailableProfit(msg.sender);
        require(profit > MIN_WITHDRAWAL_VALUE, "No profit available");

        users[msg.sender].deferredProfit = 0;
        users[msg.sender].lastDepositUpdate = block.timestamp;

        if (profit * (PERCENTS_DIVISOR + TOTAL_FEES) / PERCENTS_DIVISOR <= address(this).balance) {
            users[msg.sender].withdraw += profit;
            users[msg.sender].x3Factor -= min(profit, users[msg.sender].x3Factor);
            distributeFees(profit);
            payable(msg.sender).transfer(profit);
            emit Withdraw(msg.sender, profit);
        } else if(users[msg.sender].withdraw < users[msg.sender].deposit) {
            users[msg.sender].withdraw += profit;
            users[msg.sender].x3Factor -= min(profit, users[msg.sender].x3Factor);
            insuranceFund.sendTokens(msg.sender, profit);
            emit WithdrawTokens(msg.sender, profit);
        } else {
            revert("Withdrawal failed");
        }

        if (users[msg.sender].x3Factor == 0) {
            applyX3Factor(msg.sender);
        }
    }

    function launch() external {
        require(msg.sender == admin, "Only admin");
        require(launchTimestamp == 0, "Launch can be used only once");
        launchTimestamp = block.timestamp;
        stageTimestamps = [
            block.timestamp,
            block.timestamp + STAGE_PERIOD,
            block.timestamp + 2 * STAGE_PERIOD,
            block.timestamp + 3 * STAGE_PERIOD
        ];

        emit Launch();
    }

    function setUnlimited(address account) external {
        require(msg.sender == admin, "Only admin");
        require(launchTimestamp == 0, "Can be used only before launch");
        require(users[account].account == account, "User is not registered");

        unlimited[account] = true;
        users[account].openLines = MAX_LINES;
    }

    function migrate(address account) external payable {
        require(msg.sender == lineManager, "Only lineManager");
        require(launchTimestamp > 0, "BullFarm: not launched");
        require(users[account].account != address(0), "User is not registered");
        require(waitingMigration[account], "Account not waiting for migration");

        waitingMigration[account] = false;
        if (users[account].x3Factor > 0) {
            users[account].lastDepositUpdate = block.timestamp;
            users[account].deposit = msg.value;
        }

        distributeFees(msg.value);
        sendPartnerRewards(account, msg.value);

        emit Deposit(account, msg.value);
    }

    function setOpenLines(address account, uint lines) external {
        require(msg.sender == lineManager, "Only lineManager");
        require(launchTimestamp == 0, "Can be used only before launch");
        require(users[account].account == account, "User is not registered");
        require(lines > 0 && lines <= MAX_LINES, "Invalid lines count");

        users[account].openLines = lines;
        users[account].x3Factor = OPEN_LINE_MIN_DEPOSIT[lines - 1] * 3;
        waitingMigration[account] = true;
    }

    function setLineManager(address _lineManager) external {
        require(msg.sender == admin, "Only admin");
        lineManager = _lineManager;
    }

    // Private functions
    function distributeFees(uint depositValue) private {
        uint devFeeValue = depositValue * DEVS_FEE / PERCENTS_DIVISOR;
        (bool devFeeSent,) = payable(devAddress).call{value : devFeeValue}("");
        require(devFeeSent, "Failed to send dev fee");

        uint honeyFundFeeValue = depositValue * HONEY_BANK_FEE / PERCENTS_DIVISOR;
        (bool honeyFundFeeSent,) = payable(honeyFundAddress).call{value : honeyFundFeeValue}("");
        require(honeyFundFeeSent, "Failed to send Honey Fund fee");

        uint insuranceFeeValue = depositValue * INSURANCE_FEE / PERCENTS_DIVISOR;
        bool insuranceFeeSent = payable(address(insuranceFund)).send(insuranceFeeValue);
        require(insuranceFeeSent, "Failed to send Insurance Fund fee");
    }

    function sendPartnerRewards(address account, uint depositValue) private {
        uint[] memory partnersProgram = getCurrentPartnersProgram();
        address upline = users[account].upline;
        for(uint line; line < partnersProgram.length; line++) {
            uint reward = depositValue * partnersProgram[line] / PERCENTS_DIVISOR;
            if (users[upline].openLines > line) {
                bool sent = payable(upline).send(reward);
                if (sent) {
                    users[upline].partnersRewardByLine[line] += reward;
                    users[upline].x3Factor -= min(reward, users[upline].x3Factor);
                    if(users[upline].x3Factor == 0) {
                        applyX3Factor(upline);
                    }
                    emit PartnerReward(account, upline, reward);
                } else {
                    // Only if receiver is smart contract with broken handler
                    payable(admin).transfer(reward);
                    emit FailedPartnerReward(account, upline, reward);
                }
            } else {
                users[upline].missedPartnersRewardByLine[line] += reward;
                emit MissedPartnerReward(account, upline, reward);
            }

            upline = users[upline].upline;
        }
    }

    function applyX3Factor(address account) private {
        if (unlimited[account]) {
            return;
        }

        users[account].x3FactorCount++;
        users[account].withdraw = 0;
        users[account].x3Factor = 0;
        users[account].lastDepositUpdate = 0;
        users[account].deferredProfit = 0;
        users[account].openLines = 0;

        emit X3FactorApply(account, users[account].deposit);
        users[account].deposit = 0;
    }

    // View functions
    function recalcOpenLines(address account) public view returns(uint) {
        for(uint i = users[account].openLines; i < MAX_LINES; i++) {
            if (users[account].deposit < OPEN_LINE_MIN_DEPOSIT[i]) {
                return i;
            }
        }

        return MAX_LINES;
    }

    function getCurrentPartnersProgram() public view returns(uint[] memory) {
        return PARTNER_PROGRAMS[getCurrentStageIndex()];
    }

    function getCurrentProfitPercents() public view returns(uint) {
        return PROFIT_BY_STAGES[getCurrentStageIndex()];
    }

    function calcAvailableProfit(address account) public view returns(uint) {
        uint profit = users[account].deferredProfit + calcProfitForPeriod(users[account].deposit, users[account].lastDepositUpdate, block.timestamp);
        if (unlimited[account]) {
            return profit;
        }

        return profit > users[account].x3Factor ? users[account].x3Factor : profit;
    }

    function calcProfitForPeriod(uint depositValue, uint from, uint to) public view returns(uint) {
        if (launchTimestamp == 0 || to <= from || to < stageTimestamps[0]) {
            return 0;
        }

        uint result;

        // Profit for stage 1
        if (from < stageTimestamps[1]) {
            result += calcProfitForStage(depositValue, 0, min(to, stageTimestamps[1]) - max(from, stageTimestamps[0]));
        }

        // Profit for stage 2
        if (from < stageTimestamps[2] && to > stageTimestamps[1]) {
            result += calcProfitForStage(depositValue, 1, min(to, stageTimestamps[2]) - max(from, stageTimestamps[1]));
        }

        // Profit for stage 3
        if (from < stageTimestamps[3] && to > stageTimestamps[2]) {
            result += calcProfitForStage(depositValue, 2, min(to, stageTimestamps[3]) - max(from, stageTimestamps[2]));
        }

        // Profit for stage 4
        if (to >= stageTimestamps[3]) {
            result += calcProfitForStage(depositValue, 3, to - max(from, stageTimestamps[3]));
        }

        return result;
    }

    function getCurrentMaxDeposit() public view returns(uint) {
        uint curMaxDep = INITIAL_MAX_DEPOSIT + MAX_DEPOSIT_DAILY_STEP * ((block.timestamp - launchTimestamp) / 1 days);
        return curMaxDep > MAX_DEPOSIT ? MAX_DEPOSIT : curMaxDep;
    }

    function getCurrentStageIndex() public view returns(uint) {
        uint timeSpent = (block.timestamp - launchTimestamp);
        if (timeSpent < STAGE_PERIOD) {
            return 0;
        } else if (timeSpent < STAGE_PERIOD * 2) {
            return 1;
        } else if (timeSpent < STAGE_PERIOD * 3) {
            return 2;
        } else {
            return 3;
        }
    }

    function getProfitByStages() external view returns(uint[4] memory) {
        return PROFIT_BY_STAGES;
    }

    function getOpenLinesMinDeposit() external view returns(uint[6] memory) {
        return OPEN_LINE_MIN_DEPOSIT;
    }

    function getUser(address account) external view returns(User memory) {
        return users[account];
    }

    function calcProfitForStage(uint depositValue, uint stageIndex, uint duration) private view returns(uint) {
        return depositValue * PROFIT_BY_STAGES[stageIndex] * duration * 10000 / 1 days / 10000 / PERCENTS_DIVISOR;
    }

    function getStageTimestamps() external view returns(uint[] memory) {
        return stageTimestamps;
    }

    function getCurrentTotalPartnersRewardPercents() public view returns(uint) {
        uint result;
        uint[] memory rewardPercents = getCurrentPartnersProgram();
        for(uint i; i < rewardPercents.length; i++) {
            result += rewardPercents[i];
        }

        return result;
    }

    function min(uint value1, uint value2) private pure returns(uint) {
        return value1 < value2 ? value1 : value2;
    }

    function max(uint value1, uint value2) private pure returns(uint) {
        return value1 > value2 ? value1 : value2;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;


interface IBullFarmFund {
    function sendTokens(address to, uint ethAmount) external;
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"},{"internalType":"address","name":"_honeyFundAddress","type":"address"},{"internalType":"contract IBullFarmFund","name":"_insuranceFund","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"upline","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"FailedPartnerReward","type":"event"},{"anonymous":false,"inputs":[],"name":"Launch","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"upline","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"MissedPartnerReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"upline","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"PartnerReward","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"upline","type":"address"}],"name":"Registration","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Reinvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"WithdrawTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"deposit","type":"uint256"}],"name":"X3FactorApply","type":"event"},{"inputs":[],"name":"DEVS_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HONEY_BANK_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_MAX_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INSURANCE_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DEPOSIT_DAILY_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_LINES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_DEPOSIT_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_REINVEST_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_WITHDRAWAL_VALUE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"OPEN_LINE_MIN_DEPOSIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"PARTNER_PROGRAMS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVISOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"PROFIT_BY_STAGES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAGE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_FEES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"calcAvailableProfit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"depositValue","type":"uint256"},{"internalType":"uint256","name":"from","type":"uint256"},{"internalType":"uint256","name":"to","type":"uint256"}],"name":"calcProfitForPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"depositTo","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentMaxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentPartnersProgram","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentProfitPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentStageIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentTotalPartnersRewardPercents","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOpenLinesMinDeposit","outputs":[{"internalType":"uint256[6]","name":"","type":"uint256[6]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getProfitByStages","outputs":[{"internalType":"uint256[4]","name":"","type":"uint256[4]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStageTimestamps","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getUser","outputs":[{"components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"upline","type":"address"},{"internalType":"uint256","name":"deposit","type":"uint256"},{"internalType":"uint256","name":"withdraw","type":"uint256"},{"internalType":"uint256","name":"x3Factor","type":"uint256"},{"internalType":"uint256","name":"x3FactorCount","type":"uint256"},{"internalType":"uint256","name":"lastDepositUpdate","type":"uint256"},{"internalType":"uint256","name":"deferredProfit","type":"uint256"},{"internalType":"uint256","name":"openLines","type":"uint256"},{"internalType":"uint256[6]","name":"missedPartnersRewardByLine","type":"uint256[6]"},{"internalType":"uint256[6]","name":"partnersRewardByLine","type":"uint256[6]"},{"internalType":"uint256[6]","name":"partnersCountByLine","type":"uint256[6]"}],"internalType":"struct BullFarm.User","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"honeyFundAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"insuranceFund","outputs":[{"internalType":"contract IBullFarmFund","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lineManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"migrate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"recalcOpenLines","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"upline","type":"address"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"upline","type":"address"}],"name":"registerAndDeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lineManager","type":"address"}],"name":"setLineManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"lines","type":"uint256"}],"name":"setOpenLines","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setUnlimited","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stageTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260405180608001604052806101f461ffff16815260200161019061ffff16815260200161012c61ffff16815260200160c861ffff1681525060009060046200004e929190620006a4565b506040518060c0016040528067016345785d8a000067ffffffffffffffff1681526020016706f05b59d3b2000067ffffffffffffffff168152602001670de0b6b3a764000067ffffffffffffffff1681526020016714d1120d7b16000067ffffffffffffffff168152602001671bc16d674ec8000067ffffffffffffffff1681526020016722b1c8c1227a000067ffffffffffffffff168152506004906006620000fa929190620006ef565b50612710600b553480156200010e57600080fd5b50604051620062c7380380620062c783398181016040528101906200013491906200096e565b82601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506006600c6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550600160126000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060136000815480929190620004bb9062000a03565b9190505550600a60405180606001604052806104b061ffff1681526020016103e861ffff16815260200161032061ffff16815250908060018154018082558091505060019003906000526020600020016000909190919091509060036200052492919062000740565b50600a60405180608001604052806103e861ffff16815260200161032061ffff1681526020016102bc61ffff1681526020016101f461ffff16815250908060018154018082558091505060019003906000526020600020016000909190919091509060046200059592919062000798565b50600a6040518060a0016040528061038461ffff1681526020016102bc61ffff16815260200161025861ffff1681526020016101f461ffff16815260200161012c61ffff168152509080600181540180825580915050600190039060005260206000200160009091909190915090600562000612929190620007f0565b50600a6040518060c0016040528061032061ffff1681526020016102bc61ffff16815260200161025861ffff16815260200161019061ffff16815260200161012c61ffff16815260200160c861ffff16815250908060018154018082558091505060019003906000526020600020016000909190919091509060066200069a92919062000848565b5050505062000a51565b8260048101928215620006dc579160200282015b82811115620006db578251829061ffff16905591602001919060010190620006b8565b5b509050620006eb9190620008a0565b5090565b82600681019282156200072d579160200282015b828111156200072c578251829067ffffffffffffffff1690559160200191906001019062000703565b5b5090506200073c9190620008a0565b5090565b82805482825590600052602060002090810192821562000785579160200282015b8281111562000784578251829061ffff1690559160200191906001019062000761565b5b509050620007949190620008a0565b5090565b828054828255906000526020600020908101928215620007dd579160200282015b82811115620007dc578251829061ffff16905591602001919060010190620007b9565b5b509050620007ec9190620008a0565b5090565b82805482825590600052602060002090810192821562000835579160200282015b8281111562000834578251829061ffff1690559160200191906001019062000811565b5b509050620008449190620008a0565b5090565b8280548282559060005260206000209081019282156200088d579160200282015b828111156200088c578251829061ffff1690559160200191906001019062000869565b5b5090506200089c9190620008a0565b5090565b5b80821115620008bb576000816000905550600101620008a1565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f182620008c4565b9050919050565b6200090381620008e4565b81146200090f57600080fd5b50565b6000815190506200092381620008f8565b92915050565b60006200093682620008e4565b9050919050565b620009488162000929565b81146200095457600080fd5b50565b60008151905062000968816200093d565b92915050565b6000806000606084860312156200098a5762000989620008bf565b5b60006200099a8682870162000912565b9350506020620009ad8682870162000912565b9250506040620009c08682870162000957565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000819050919050565b600062000a1082620009f9565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141562000a465762000a45620009ca565b5b600182019050919050565b6158668062000a616000396000f3fe60806040526004361061028c5760003560e01c8063785e24ef1161015a578063cd9d6087116100c1578063dd5967c31161007a578063dd5967c31461099c578063e72c9228146109c7578063e7eaad99146109f2578063f851a44014610a0e578063fdb5a03e14610a39578063ff8ab49414610a5057610293565b8063cd9d6087146108ca578063ce5494bb146108f5578063cff4d33a14610911578063d025d3aa1461093c578063d0e30db014610967578063daa4cf881461097157610293565b8063b760faf911610113578063b760faf9146107c5578063b7902303146107e1578063bd2e85881461080c578063bff1f9e114610837578063c2d3d74c14610862578063cbbdb7f11461089f57610293565b8063785e24ef146106a15780637a125600146106ca5780637d62bd49146106f557806392a2da1e1461072057806392ca1e8d1461075d578063a3310a5f1461078857610293565b80633ad10ef6116101fe57806365cf7c9b116101b757806365cf7c9b1461058d5780636c1f4259146105b85780636e45d039146105e35780636e5524261461060e5780636f5b3ab5146106395780636f77926b1461066457610293565b80633ad10ef6146104915780633ccfd60b146104bc5780634420e486146104d3578063461f07d7146104fc5780635ac5c206146105395780635cec62611461056457610293565b80631fe8d94c116102505780631fe8d94c1461035b57806327ae66981461038657806329a667ef146103b15780632b27720b146103ee57806333b2f5ff1461042b57806337cea5cd1461045457610293565b806301339c21146102985780630e841ab9146102af5780631573b577146102da5780631a3b6998146103055780631fce8dc71461033057610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a7b565b005b3480156102bb57600080fd5b506102c4610bf9565b6040516102d1919061458f565b60405180910390f35b3480156102e657600080fd5b506102ef610c00565b6040516102fc919061458f565b60405180910390f35b34801561031157600080fd5b5061031a610c06565b604051610327919061458f565b60405180910390f35b34801561033c57600080fd5b50610345610c29565b604051610352919061458f565b60405180910390f35b34801561036757600080fd5b50610370610c88565b60405161037d919061458f565b60405180910390f35b34801561039257600080fd5b5061039b610cf6565b6040516103a8919061458f565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906145db565b610d02565b6040516103e5919061458f565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614666565b610d26565b604051610422919061458f565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614666565b610efe565b005b34801561046057600080fd5b5061047b600480360381019061047691906145db565b611146565b604051610488919061458f565b60405180910390f35b34801561049d57600080fd5b506104a6611161565b6040516104b391906146a2565b60405180910390f35b3480156104c857600080fd5b506104d1611187565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190614666565b611880565b005b34801561050857600080fd5b50610523600480360381019061051e91906146bd565b611dcb565b604051610530919061458f565b60405180910390f35b34801561054557600080fd5b5061054e611e08565b60405161055b919061458f565b60405180910390f35b34801561057057600080fd5b5061058b60048036038101906105869190614666565b611e0e565b005b34801561059957600080fd5b506105a2611ee2565b6040516105af919061458f565b60405180910390f35b3480156105c457600080fd5b506105cd611ee8565b6040516105da919061458f565b60405180910390f35b3480156105ef57600080fd5b506105f8611ef4565b604051610605919061458f565b60405180910390f35b34801561061a57600080fd5b50610623611efa565b604051610630919061458f565b60405180910390f35b34801561064557600080fd5b5061064e611f05565b60405161065b91906147bb565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190614666565b611f80565b6040516106989190614966565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190614982565b61219b565b005b3480156106d657600080fd5b506106df6124a7565b6040516106ec91906146a2565b60405180910390f35b34801561070157600080fd5b5061070a6124cd565b6040516107179190614a46565b60405180910390f35b34801561072c57600080fd5b50610747600480360381019061074291906145db565b612518565b604051610754919061458f565b60405180910390f35b34801561076957600080fd5b50610772612533565b60405161077f919061458f565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614666565b612553565b6040516107bc919061458f565b60405180910390f35b6107df60048036038101906107da9190614666565b61262b565b005b3480156107ed57600080fd5b506107f6612b3b565b6040516108039190614ac0565b60405180910390f35b34801561081857600080fd5b50610821612b61565b60405161082e919061458f565b60405180910390f35b34801561084357600080fd5b5061084c612b67565b604051610859919061458f565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614adb565b612b6d565b604051610896919061458f565b60405180910390f35b3480156108ab57600080fd5b506108b4612e5f565b6040516108c191906146a2565b60405180910390f35b3480156108d657600080fd5b506108df612e85565b6040516108ec919061458f565b60405180910390f35b61090f600480360381019061090a9190614666565b612e90565b005b34801561091d57600080fd5b50610926613244565b60405161093391906147bb565b60405180910390f35b34801561094857600080fd5b5061095161329c565b60405161095e919061458f565b60405180910390f35b61096f6132a1565b005b34801561097d57600080fd5b5061098661337e565b604051610993919061458f565b60405180910390f35b3480156109a857600080fd5b506109b16133f1565b6040516109be919061458f565b60405180910390f35b3480156109d357600080fd5b506109dc6133fe565b6040516109e9919061458f565b60405180910390f35b610a0c6004803603810190610a079190614666565b61340a565b005b348015610a1a57600080fd5b50610a2361341f565b604051610a3091906146a2565b60405180910390f35b348015610a4557600080fd5b50610a4e613445565b005b348015610a5c57600080fd5b50610a6561390e565b604051610a729190614b90565b60405180910390f35b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290614c08565b60405180910390fd5b600060105414610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790614c74565b60405180910390fd5b4260108190555060405180608001604052804281526020016203f48042610b779190614cc3565b81526020016203f4806002610b8c9190614d19565b42610b979190614cc3565b81526020016203f4806003610bac9190614d19565b42610bb79190614cc3565b8152506011906004610bca929190614429565b507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b6203f48081565b61012c81565b600080610c1161337e565b60048110610c2257610c21614d73565b5b0154905090565b6000806000610c36611f05565b905060005b8151811015610c7f57818181518110610c5757610c56614d73565b5b602002602001015183610c6a9190614cc3565b92508080610c7790614da2565b915050610c3b565b50819250505090565b6000806201518060105442610c9d9190614deb565b610ca79190614e4e565b6702c68af0bb140000610cba9190614d19565b670de0b6b3a7640000610ccd9190614cc3565b90506801158e460913d000008111610ce55780610cf0565b6801158e460913d000005b91505090565b6702c68af0bb14000081565b60118181548110610d1257600080fd5b906000526020600020016000915090505481565b600080610db8600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015442612b6d565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154610e059190614cc3565b9050601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e625780915050610ef9565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401548111610eb15780610ef5565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401545b9150505b919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590614c08565b60405180910390fd5b600060105414610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90614ecb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90614f37565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555050565b6004816006811061115657600080fd5b016000915090505481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125090614f37565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590614fa3565b60405180910390fd5b60006112e933610d26565b9050662386f26fc100008111611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b9061500f565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555047600b5461012c61019061012c6113da9190614cc3565b6113e49190614cc3565b600b546113f19190614cc3565b836113fc9190614d19565b6114069190614e4e565b116115965780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825461145d9190614cc3565b925050819055506114b081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546115019190614deb565b9250508190555061151181613972565b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611557573d6000803e3d6000fd5b507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364338260405161158992919061502f565b60405180910390a1611828565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015410156117ec5780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546116749190614cc3565b925050819055506116c781600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546117189190614deb565b92505081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305ab421d33836040518363ffffffff1660e01b815260040161177c92919061502f565b600060405180830381600087803b15801561179657600080fd5b505af11580156117aa573d6000803e3d6000fd5b505050507f680f2e4f4032ebf1774e8cdbaddcb1b617a5a606411c8ca96257ada338d3833c33826040516117df92919061502f565b60405180910390a1611827565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906150a4565b60405180910390fd5b5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561187d5761187c33613c0f565b5b50565b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561193d57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590615110565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad79061517c565b60405180910390fd5b33600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060136000815480929190611bf590614da2565b9190505550600081905060005b6006811015611d8d57600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206015018160068110611c5f57611c5e614d73565b5b016000815480929190611c7190614da2565b9190505550600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d7557600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611d7a565b611d8d565b8080611d8590614da2565b915050611c02565b507f2a4f530ae55f002aac4686b649762fc68e96bd8b80ac835b41777145c94e1f8a3383604051611dbf92919061519c565b60405180910390a15050565b600a8281548110611ddb57600080fd5b906000526020600020018181548110611df357600080fd5b90600052602060002001600091509150505481565b61012c81565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590614c08565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b67016345785d8a000081565b600b5481565b662386f26fc1000081565b6060600a611f1161337e565b81548110611f2257611f21614d73565b5b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015611f7657602002820191906000526020600020905b815481526020019060010190808311611f62575b5050505050905090565b611f88614476565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201600680602002604051908101604052809291908260068015612101576020028201915b8154815260200190600101908083116120ed575b50505050508152602001600f8201600680602002604051908101604052809291908260068015612146576020028201915b815481526020019060010190808311612132575b505050505081526020016015820160068060200260405190810160405280929190826006801561218b576020028201915b815481526020019060010190808311612177575b5050505050815250509050919050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290615211565b60405180910390fd5b600060105414612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790614ecb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614f37565b60405180910390fd5b600081118015612351575060068111155b612390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123879061527d565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550600360046001836123e89190614deb565b600681106123f9576123f8614d73565b5b01546124059190614d19565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124d5614515565b600060048060200260405190810160405280929190826004801561250e576020028201915b8154815260200190600101908083116124fa575b5050505050905090565b6000816004811061252857600080fd5b016000915090505481565b61012c61019061012c6125469190614cc3565b6125509190614cc3565b81565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b600681101561262057600481600681106125b9576125b8614d73565b5b0154600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154101561260d5780915050612626565b808061261890614da2565b91505061259c565b50600690505b919050565b600060105411612670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612667906152e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273990614f37565b60405180910390fd5b67016345785d8a000034101561278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490615355565b60405180910390fd5b612795610c88565b34600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546127e39190614cc3565b1115612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b906153c1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a890615453565b60405180910390fd5b612940600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015442612b6d565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160008282546129919190614cc3565b9250508190555042600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555034600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612a319190614cc3565b92505081905550600334612a459190614d19565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612a969190614cc3565b92505081905550612aa681612553565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612af534613972565b612aff8134613eed565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c8134604051612b3092919061502f565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61019081565b60135481565b6000806010541480612b7f5750828211155b80612ba857506011600081548110612b9a57612b99614d73565b5b906000526020600020015482105b15612bb65760009050612e58565b60006011600181548110612bcd57612bcc614d73565b5b9060005260206000200154841015612c5457612c46856000612c0e876011600081548110612bfe57612bfd614d73565b5b90600052602060002001546143a4565b612c37876011600181548110612c2757612c26614d73565b5b9060005260206000200154613959565b612c419190614deb565b6143bd565b81612c519190614cc3565b90505b6011600281548110612c6957612c68614d73565b5b906000526020600020015484108015612ca057506011600181548110612c9257612c91614d73565b5b906000526020600020015483115b15612d1a57612d0c856001612cd4876011600181548110612cc457612cc3614d73565b5b90600052602060002001546143a4565b612cfd876011600281548110612ced57612cec614d73565b5b9060005260206000200154613959565b612d079190614deb565b6143bd565b81612d179190614cc3565b90505b6011600381548110612d2f57612d2e614d73565b5b906000526020600020015484108015612d6657506011600281548110612d5857612d57614d73565b5b906000526020600020015483115b15612de057612dd2856002612d9a876011600281548110612d8a57612d89614d73565b5b90600052602060002001546143a4565b612dc3876011600381548110612db357612db2614d73565b5b9060005260206000200154613959565b612dcd9190614deb565b6143bd565b81612ddd9190614cc3565b90505b6011600381548110612df557612df4614d73565b5b90600052602060002001548310612e5357612e45856003612e35876011600381548110612e2557612e24614d73565b5b90600052602060002001546143a4565b86612e409190614deb565b6143bd565b81612e509190614cc3565b90505b809150505b9392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b662386f26fc1000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1790615211565b60405180910390fd5b600060105411612f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5c906152e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90614f37565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ba906154e5565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015411156131f55742600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555034600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b6131fe34613972565b6132088134613eed565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c813460405161323992919061502f565b60405180910390a150565b6060601180548060200260200160405190810160405280929190818152602001828054801561329257602002820191906000526020600020905b81548152602001906001019080831161327e575b5050505050905090565b600681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336a90614f37565b60405180910390fd5b61337c3361262b565b565b6000806010544261338f9190614deb565b90506203f4808110156133a65760009150506133ee565b60026203f4806133b69190614d19565b8110156133c75760019150506133ee565b60036203f4806133d79190614d19565b8110156133e85760029150506133ee565b60039150505b90565b6801158e460913d0000081565b670de0b6b3a764000081565b61341381611880565b61341c3361262b565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614f37565b60405180910390fd5b60006010541161355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613553906152e9565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154116135e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d890615551565b60405180910390fd5b60006135ec33610d26565b9050662386f26fc10000811015613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f906155bd565b60405180910390fd5b613640610c88565b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461368e9190614cc3565b11156136cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c690615629565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546137b09190614cc3565b925050819055506003816137c49190614d19565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546138159190614cc3565b9250508190555061382533612553565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000600b5461012c61019061012c6138839190614cc3565b61388d9190614cc3565b613895610c29565b61389f9190614cc3565b836138aa9190614d19565b6138b49190614e4e565b90508047106138d1576138c682613972565b6138d03383613eed565b5b7fbd654390d0d973e8c8376ed6053be8658870df892687852cc5c914d700291b87338360405161390292919061502f565b60405180910390a15050565b613916614537565b600460068060200260405190810160405280929190826006801561394f576020028201915b81548152602001906001019080831161393b575b5050505050905090565b6000818310613968578161396a565b825b905092915050565b6000600b5461012c836139859190614d19565b61398f9190614e4e565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139d99061567a565b60006040518083038185875af1925050503d8060008114613a16576040519150601f19603f3d011682016040523d82523d6000602084013e613a1b565b606091505b5050905080613a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a56906156db565b60405180910390fd5b6000600b5461019085613a729190614d19565b613a7c9190614e4e565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ac69061567a565b60006040518083038185875af1925050503d8060008114613b03576040519150601f19603f3d011682016040523d82523d6000602084013e613b08565b606091505b5050905080613b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4390615747565b60405180910390fd5b6000600b5461012c87613b5f9190614d19565b613b699190614e4e565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050905080613c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bfd906157d9565b60405180910390fd5b50505050505050565b601260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c6657613eea565b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000815480929190613cb990614da2565b91905055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055507f2e7da569650ff873bdc27804d093dd4f019058746b012d06b0f411ae57009c5281600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154604051613e9992919061502f565b60405180910390a16000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b50565b6000613ef7611f05565b90506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b825181101561439d576000600b54848381518110613f8457613f83614d73565b5b602002602001015186613f979190614d19565b613fa19190614e4e565b905081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154111561427c5760008373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050905080156141d15781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f01846006811061408157614080614d73565b5b0160008282546140919190614cc3565b925050819055506140e482600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546141359190614deb565b925050819055506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015414156141915761419084613c0f565b5b7fe33f884cf2d2a4661aef41b48edddc3a8f19aa33bde11fa6554b81a55f0146248785846040516141c4939291906157f9565b60405180910390a1614276565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015614239573d6000803e3d6000fd5b507fbec9e11c00ecccfcf4d2eccfb872560256c650f162ab1e04ff04cb4710137e7f87858460405161426d939291906157f9565b60405180910390a15b50614324565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090183600681106142d1576142d0614d73565b5b0160008282546142e19190614cc3565b925050819055507ffc01aa0bed8b76340f973ef45d56a7a6fa55b04ff6f9e24b5d097b929c54801f86848360405161431b939291906157f9565b60405180910390a15b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050808061439590614da2565b915050613f63565b5050505050565b60008183116143b357816143b5565b825b905092915050565b6000600b546127106201518061271085600088600481106143e1576143e0614d73565b5b0154896143ee9190614d19565b6143f89190614d19565b6144029190614d19565b61440c9190614e4e565b6144169190614e4e565b6144209190614e4e565b90509392505050565b828054828255906000526020600020908101928215614465579160200282015b82811115614464578251825591602001919060010190614449565b5b5090506144729190614559565b5090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016144f5614537565b8152602001614502614537565b815260200161450f614537565b81525090565b6040518060800160405280600490602082028036833780820191505090505090565b6040518060c00160405280600690602082028036833780820191505090505090565b5b8082111561457257600081600090555060010161455a565b5090565b6000819050919050565b61458981614576565b82525050565b60006020820190506145a46000830184614580565b92915050565b600080fd5b6145b881614576565b81146145c357600080fd5b50565b6000813590506145d5816145af565b92915050565b6000602082840312156145f1576145f06145aa565b5b60006145ff848285016145c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061463382614608565b9050919050565b61464381614628565b811461464e57600080fd5b50565b6000813590506146608161463a565b92915050565b60006020828403121561467c5761467b6145aa565b5b600061468a84828501614651565b91505092915050565b61469c81614628565b82525050565b60006020820190506146b76000830184614693565b92915050565b600080604083850312156146d4576146d36145aa565b5b60006146e2858286016145c6565b92505060206146f3858286016145c6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61473281614576565b82525050565b60006147448383614729565b60208301905092915050565b6000602082019050919050565b6000614768826146fd565b6147728185614708565b935061477d83614719565b8060005b838110156147ae5781516147958882614738565b97506147a083614750565b925050600181019050614781565b5085935050505092915050565b600060208201905081810360008301526147d5818461475d565b905092915050565b6147e681614628565b82525050565b600060069050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614822816147ec565b61482c81846147f7565b925061483782614802565b8060005b8381101561486857815161484f8782614738565b965061485a8361480c565b92505060018101905061483b565b505050505050565b6103608201600082015161488760008501826147dd565b50602082015161489a60208501826147dd565b5060408201516148ad6040850182614729565b5060608201516148c06060850182614729565b5060808201516148d36080850182614729565b5060a08201516148e660a0850182614729565b5060c08201516148f960c0850182614729565b5060e082015161490c60e0850182614729565b50610100820151614921610100850182614729565b50610120820151614936610120850182614819565b5061014082015161494b6101e0850182614819565b506101608201516149606102a0850182614819565b50505050565b60006103608201905061497c6000830184614870565b92915050565b60008060408385031215614999576149986145aa565b5b60006149a785828601614651565b92505060206149b8858286016145c6565b9150509250929050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6149f8816149c2565b614a0281846149cd565b9250614a0d826149d8565b8060005b83811015614a3e578151614a258782614738565b9650614a30836149e2565b925050600181019050614a11565b505050505050565b6000608082019050614a5b60008301846149ef565b92915050565b6000819050919050565b6000614a86614a81614a7c84614608565b614a61565b614608565b9050919050565b6000614a9882614a6b565b9050919050565b6000614aaa82614a8d565b9050919050565b614aba81614a9f565b82525050565b6000602082019050614ad56000830184614ab1565b92915050565b600080600060608486031215614af457614af36145aa565b5b6000614b02868287016145c6565b9350506020614b13868287016145c6565b9250506040614b24868287016145c6565b9150509250925092565b600081905092915050565b614b42816147ec565b614b4c8184614b2e565b9250614b5782614802565b8060005b83811015614b88578151614b6f8782614738565b9650614b7a8361480c565b925050600181019050614b5b565b505050505050565b600060c082019050614ba56000830184614b39565b92915050565b600082825260208201905092915050565b7f4f6e6c792061646d696e00000000000000000000000000000000000000000000600082015250565b6000614bf2600a83614bab565b9150614bfd82614bbc565b602082019050919050565b60006020820190508181036000830152614c2181614be5565b9050919050565b7f4c61756e63682063616e2062652075736564206f6e6c79206f6e636500000000600082015250565b6000614c5e601c83614bab565b9150614c6982614c28565b602082019050919050565b60006020820190508181036000830152614c8d81614c51565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cce82614576565b9150614cd983614576565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d0e57614d0d614c94565b5b828201905092915050565b6000614d2482614576565b9150614d2f83614576565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d6857614d67614c94565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614dad82614576565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614de057614ddf614c94565b5b600182019050919050565b6000614df682614576565b9150614e0183614576565b925082821015614e1457614e13614c94565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e5982614576565b9150614e6483614576565b925082614e7457614e73614e1f565b5b828204905092915050565b7f43616e2062652075736564206f6e6c79206265666f7265206c61756e63680000600082015250565b6000614eb5601e83614bab565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f55736572206973206e6f74207265676973746572656400000000000000000000600082015250565b6000614f21601683614bab565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f4e6f206465706f73697473000000000000000000000000000000000000000000600082015250565b6000614f8d600b83614bab565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f4e6f2070726f66697420617661696c61626c6500000000000000000000000000600082015250565b6000614ff9601383614bab565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b60006040820190506150446000830185614693565b6150516020830184614580565b9392505050565b7f5769746864726177616c206661696c6564000000000000000000000000000000600082015250565b600061508e601183614bab565b915061509982615058565b602082019050919050565b600060208201905081810360008301526150bd81615081565b9050919050565b7f5573657220697320616c72656164792072656769737465726564000000000000600082015250565b60006150fa601a83614bab565b9150615105826150c4565b602082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f55706c696e65206973206e6f7420726567697374657265640000000000000000600082015250565b6000615166601883614bab565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b60006040820190506151b16000830185614693565b6151be6020830184614693565b9392505050565b7f4f6e6c79206c696e654d616e6167657200000000000000000000000000000000600082015250565b60006151fb601083614bab565b9150615206826151c5565b602082019050919050565b6000602082019050818103600083015261522a816151ee565b9050919050565b7f496e76616c6964206c696e657320636f756e7400000000000000000000000000600082015250565b6000615267601383614bab565b915061527282615231565b602082019050919050565b600060208201905081810360008301526152968161525a565b9050919050565b7f42756c6c4661726d3a206e6f74206c61756e6368656400000000000000000000600082015250565b60006152d3601683614bab565b91506152de8261529d565b602082019050919050565b60006020820190508181036000830152615302816152c6565b9050919050565b7f4465706f7369742076616c756520697320746f6f20736d616c6c000000000000600082015250565b600061533f601a83614bab565b915061534a82615309565b602082019050919050565b6000602082019050818103600083015261536e81615332565b9050919050565b7f4465706f736974206c696d697420657863656564656400000000000000000000600082015250565b60006153ab601683614bab565b91506153b682615375565b602082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f4d6967726174696f6e207265717569726564206265666f7265206465706f736960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602183614bab565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4163636f756e74206e6f742077616974696e6720666f72206d6967726174696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614bab565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f4e6f7468696e6720746f207265696e7665737400000000000000000000000000600082015250565b600061553b601383614bab565b915061554682615505565b602082019050919050565b6000602082019050818103600083015261556a8161552e565b9050919050565b7f5265696e766573742076616c756520697320746f6f20736d616c6c0000000000600082015250565b60006155a7601b83614bab565b91506155b282615571565b602082019050919050565b600060208201905081810360008301526155d68161559a565b9050919050565b7f5265696e766573742076616c756520697320746f6f2062696700000000000000600082015250565b6000615613601983614bab565b915061561e826155dd565b602082019050919050565b6000602082019050818103600083015261564281615606565b9050919050565b600081905092915050565b50565b6000615664600083615649565b915061566f82615654565b600082019050919050565b600061568582615657565b9150819050919050565b7f4661696c656420746f2073656e64206465762066656500000000000000000000600082015250565b60006156c5601683614bab565b91506156d08261568f565b602082019050919050565b600060208201905081810360008301526156f4816156b8565b9050919050565b7f4661696c656420746f2073656e6420486f6e65792046756e6420666565000000600082015250565b6000615731601d83614bab565b915061573c826156fb565b602082019050919050565b6000602082019050818103600083015261576081615724565b9050919050565b7f4661696c656420746f2073656e6420496e737572616e63652046756e6420666560008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c3602183614bab565b91506157ce82615767565b604082019050919050565b600060208201905081810360008301526157f2816157b6565b9050919050565b600060608201905061580e6000830186614693565b61581b6020830185614693565b6158286040830184614580565b94935050505056fea26469706673582212205414b7137b7d55879715518a9a43d61a05643b3b9382152c388270584935613f64736f6c634300080900330000000000000000000000008c0cf0a4ea0b7eb42246e91ee48595f54893153c00000000000000000000000087968f1db67bf9cf07ec6a25b134394458be325600000000000000000000000069304855697e2805f2e5a93f3e64dfaa83117d6b

Deployed Bytecode

0x60806040526004361061028c5760003560e01c8063785e24ef1161015a578063cd9d6087116100c1578063dd5967c31161007a578063dd5967c31461099c578063e72c9228146109c7578063e7eaad99146109f2578063f851a44014610a0e578063fdb5a03e14610a39578063ff8ab49414610a5057610293565b8063cd9d6087146108ca578063ce5494bb146108f5578063cff4d33a14610911578063d025d3aa1461093c578063d0e30db014610967578063daa4cf881461097157610293565b8063b760faf911610113578063b760faf9146107c5578063b7902303146107e1578063bd2e85881461080c578063bff1f9e114610837578063c2d3d74c14610862578063cbbdb7f11461089f57610293565b8063785e24ef146106a15780637a125600146106ca5780637d62bd49146106f557806392a2da1e1461072057806392ca1e8d1461075d578063a3310a5f1461078857610293565b80633ad10ef6116101fe57806365cf7c9b116101b757806365cf7c9b1461058d5780636c1f4259146105b85780636e45d039146105e35780636e5524261461060e5780636f5b3ab5146106395780636f77926b1461066457610293565b80633ad10ef6146104915780633ccfd60b146104bc5780634420e486146104d3578063461f07d7146104fc5780635ac5c206146105395780635cec62611461056457610293565b80631fe8d94c116102505780631fe8d94c1461035b57806327ae66981461038657806329a667ef146103b15780632b27720b146103ee57806333b2f5ff1461042b57806337cea5cd1461045457610293565b806301339c21146102985780630e841ab9146102af5780631573b577146102da5780631a3b6998146103055780631fce8dc71461033057610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610a7b565b005b3480156102bb57600080fd5b506102c4610bf9565b6040516102d1919061458f565b60405180910390f35b3480156102e657600080fd5b506102ef610c00565b6040516102fc919061458f565b60405180910390f35b34801561031157600080fd5b5061031a610c06565b604051610327919061458f565b60405180910390f35b34801561033c57600080fd5b50610345610c29565b604051610352919061458f565b60405180910390f35b34801561036757600080fd5b50610370610c88565b60405161037d919061458f565b60405180910390f35b34801561039257600080fd5b5061039b610cf6565b6040516103a8919061458f565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906145db565b610d02565b6040516103e5919061458f565b60405180910390f35b3480156103fa57600080fd5b5061041560048036038101906104109190614666565b610d26565b604051610422919061458f565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190614666565b610efe565b005b34801561046057600080fd5b5061047b600480360381019061047691906145db565b611146565b604051610488919061458f565b60405180910390f35b34801561049d57600080fd5b506104a6611161565b6040516104b391906146a2565b60405180910390f35b3480156104c857600080fd5b506104d1611187565b005b3480156104df57600080fd5b506104fa60048036038101906104f59190614666565b611880565b005b34801561050857600080fd5b50610523600480360381019061051e91906146bd565b611dcb565b604051610530919061458f565b60405180910390f35b34801561054557600080fd5b5061054e611e08565b60405161055b919061458f565b60405180910390f35b34801561057057600080fd5b5061058b60048036038101906105869190614666565b611e0e565b005b34801561059957600080fd5b506105a2611ee2565b6040516105af919061458f565b60405180910390f35b3480156105c457600080fd5b506105cd611ee8565b6040516105da919061458f565b60405180910390f35b3480156105ef57600080fd5b506105f8611ef4565b604051610605919061458f565b60405180910390f35b34801561061a57600080fd5b50610623611efa565b604051610630919061458f565b60405180910390f35b34801561064557600080fd5b5061064e611f05565b60405161065b91906147bb565b60405180910390f35b34801561067057600080fd5b5061068b60048036038101906106869190614666565b611f80565b6040516106989190614966565b60405180910390f35b3480156106ad57600080fd5b506106c860048036038101906106c39190614982565b61219b565b005b3480156106d657600080fd5b506106df6124a7565b6040516106ec91906146a2565b60405180910390f35b34801561070157600080fd5b5061070a6124cd565b6040516107179190614a46565b60405180910390f35b34801561072c57600080fd5b50610747600480360381019061074291906145db565b612518565b604051610754919061458f565b60405180910390f35b34801561076957600080fd5b50610772612533565b60405161077f919061458f565b60405180910390f35b34801561079457600080fd5b506107af60048036038101906107aa9190614666565b612553565b6040516107bc919061458f565b60405180910390f35b6107df60048036038101906107da9190614666565b61262b565b005b3480156107ed57600080fd5b506107f6612b3b565b6040516108039190614ac0565b60405180910390f35b34801561081857600080fd5b50610821612b61565b60405161082e919061458f565b60405180910390f35b34801561084357600080fd5b5061084c612b67565b604051610859919061458f565b60405180910390f35b34801561086e57600080fd5b5061088960048036038101906108849190614adb565b612b6d565b604051610896919061458f565b60405180910390f35b3480156108ab57600080fd5b506108b4612e5f565b6040516108c191906146a2565b60405180910390f35b3480156108d657600080fd5b506108df612e85565b6040516108ec919061458f565b60405180910390f35b61090f600480360381019061090a9190614666565b612e90565b005b34801561091d57600080fd5b50610926613244565b60405161093391906147bb565b60405180910390f35b34801561094857600080fd5b5061095161329c565b60405161095e919061458f565b60405180910390f35b61096f6132a1565b005b34801561097d57600080fd5b5061098661337e565b604051610993919061458f565b60405180910390f35b3480156109a857600080fd5b506109b16133f1565b6040516109be919061458f565b60405180910390f35b3480156109d357600080fd5b506109dc6133fe565b6040516109e9919061458f565b60405180910390f35b610a0c6004803603810190610a079190614666565b61340a565b005b348015610a1a57600080fd5b50610a2361341f565b604051610a3091906146a2565b60405180910390f35b348015610a4557600080fd5b50610a4e613445565b005b348015610a5c57600080fd5b50610a6561390e565b604051610a729190614b90565b60405180910390f35b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290614c08565b60405180910390fd5b600060105414610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4790614c74565b60405180910390fd5b4260108190555060405180608001604052804281526020016203f48042610b779190614cc3565b81526020016203f4806002610b8c9190614d19565b42610b979190614cc3565b81526020016203f4806003610bac9190614d19565b42610bb79190614cc3565b8152506011906004610bca929190614429565b507f02ac8168caf2f254b394bd39e19417c5c28124ab89c9bc2d44921b19808e266960405160405180910390a1565b6203f48081565b61012c81565b600080610c1161337e565b60048110610c2257610c21614d73565b5b0154905090565b6000806000610c36611f05565b905060005b8151811015610c7f57818181518110610c5757610c56614d73565b5b602002602001015183610c6a9190614cc3565b92508080610c7790614da2565b915050610c3b565b50819250505090565b6000806201518060105442610c9d9190614deb565b610ca79190614e4e565b6702c68af0bb140000610cba9190614d19565b670de0b6b3a7640000610ccd9190614cc3565b90506801158e460913d000008111610ce55780610cf0565b6801158e460913d000005b91505090565b6702c68af0bb14000081565b60118181548110610d1257600080fd5b906000526020600020016000915090505481565b600080610db8600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015442612b6d565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154610e059190614cc3565b9050601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e625780915050610ef9565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401548111610eb15780610ef5565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401545b9150505b919050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8590614c08565b60405180910390fd5b600060105414610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90614ecb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109a90614f37565b60405180910390fd5b6001601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008018190555050565b6004816006811061115657600080fd5b016000915090505481565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611259576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125090614f37565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116112de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d590614fa3565b60405180910390fd5b60006112e933610d26565b9050662386f26fc100008111611334576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132b9061500f565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555047600b5461012c61019061012c6113da9190614cc3565b6113e49190614cc3565b600b546113f19190614cc3565b836113fc9190614d19565b6114069190614e4e565b116115965780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600082825461145d9190614cc3565b925050819055506114b081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546115019190614deb565b9250508190555061151181613972565b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611557573d6000803e3d6000fd5b507f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364338260405161158992919061502f565b60405180910390a1611828565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015410156117ec5780600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160008282546116749190614cc3565b925050819055506116c781600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546117189190614deb565b92505081905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166305ab421d33836040518363ffffffff1660e01b815260040161177c92919061502f565b600060405180830381600087803b15801561179657600080fd5b505af11580156117aa573d6000803e3d6000fd5b505050507f680f2e4f4032ebf1774e8cdbaddcb1b617a5a606411c8ca96257ada338d3833c33826040516117df92919061502f565b60405180910390a1611827565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181e906150a4565b60405180910390fd5b5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154141561187d5761187c33613c0f565b5b50565b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561193d57600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0590615110565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611ae0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad79061517c565b60405180910390fd5b33600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060136000815480929190611bf590614da2565b9190505550600081905060005b6006811015611d8d57600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206015018160068110611c5f57611c5e614d73565b5b016000815480929190611c7190614da2565b9190505550600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d7557600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611d7a565b611d8d565b8080611d8590614da2565b915050611c02565b507f2a4f530ae55f002aac4686b649762fc68e96bd8b80ac835b41777145c94e1f8a3383604051611dbf92919061519c565b60405180910390a15050565b600a8281548110611ddb57600080fd5b906000526020600020018181548110611df357600080fd5b90600052602060002001600091509150505481565b61012c81565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e9590614c08565b60405180910390fd5b80600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60105481565b67016345785d8a000081565b600b5481565b662386f26fc1000081565b6060600a611f1161337e565b81548110611f2257611f21614d73565b5b90600052602060002001805480602002602001604051908101604052809291908181526020018280548015611f7657602002820191906000526020600020905b815481526020019060010190808311611f62575b5050505050905090565b611f88614476565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020604051806101800160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201600680602002604051908101604052809291908260068015612101576020028201915b8154815260200190600101908083116120ed575b50505050508152602001600f8201600680602002604051908101604052809291908260068015612146576020028201915b815481526020019060010190808311612132575b505050505081526020016015820160068060200260405190810160405280929190826006801561218b576020028201915b815481526020019060010190808311612177575b5050505050815250509050919050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290615211565b60405180910390fd5b600060105414612270576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226790614ecb565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612340576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233790614f37565b60405180910390fd5b600081118015612351575060068111155b612390576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123879061527d565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550600360046001836123e89190614deb565b600681106123f9576123f8614d73565b5b01546124059190614d19565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6124d5614515565b600060048060200260405190810160405280929190826004801561250e576020028201915b8154815260200190600101908083116124fa575b5050505050905090565b6000816004811061252857600080fd5b016000915090505481565b61012c61019061012c6125469190614cc3565b6125509190614cc3565b81565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206008015490505b600681101561262057600481600681106125b9576125b8614d73565b5b0154600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154101561260d5780915050612626565b808061261890614da2565b91505061259c565b50600690505b919050565b600060105411612670576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612667906152e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415612742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273990614f37565b60405180910390fd5b67016345785d8a000034101561278d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278490615355565b60405180910390fd5b612795610c88565b34600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201546127e39190614cc3565b1115612824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281b906153c1565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156128b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a890615453565b60405180910390fd5b612940600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006015442612b6d565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070160008282546129919190614cc3565b9250508190555042600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555034600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000828254612a319190614cc3565b92505081905550600334612a459190614d19565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004016000828254612a969190614cc3565b92505081905550612aa681612553565b600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550612af534613972565b612aff8134613eed565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c8134604051612b3092919061502f565b60405180910390a150565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61019081565b60135481565b6000806010541480612b7f5750828211155b80612ba857506011600081548110612b9a57612b99614d73565b5b906000526020600020015482105b15612bb65760009050612e58565b60006011600181548110612bcd57612bcc614d73565b5b9060005260206000200154841015612c5457612c46856000612c0e876011600081548110612bfe57612bfd614d73565b5b90600052602060002001546143a4565b612c37876011600181548110612c2757612c26614d73565b5b9060005260206000200154613959565b612c419190614deb565b6143bd565b81612c519190614cc3565b90505b6011600281548110612c6957612c68614d73565b5b906000526020600020015484108015612ca057506011600181548110612c9257612c91614d73565b5b906000526020600020015483115b15612d1a57612d0c856001612cd4876011600181548110612cc457612cc3614d73565b5b90600052602060002001546143a4565b612cfd876011600281548110612ced57612cec614d73565b5b9060005260206000200154613959565b612d079190614deb565b6143bd565b81612d179190614cc3565b90505b6011600381548110612d2f57612d2e614d73565b5b906000526020600020015484108015612d6657506011600281548110612d5857612d57614d73565b5b906000526020600020015483115b15612de057612dd2856002612d9a876011600281548110612d8a57612d89614d73565b5b90600052602060002001546143a4565b612dc3876011600381548110612db357612db2614d73565b5b9060005260206000200154613959565b612dcd9190614deb565b6143bd565b81612ddd9190614cc3565b90505b6011600381548110612df557612df4614d73565b5b90600052602060002001548310612e5357612e45856003612e35876011600381548110612e2557612e24614d73565b5b90600052602060002001546143a4565b86612e409190614deb565b6143bd565b81612e509190614cc3565b90505b809150505b9392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b662386f26fc1000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1790615211565b60405180910390fd5b600060105411612f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f5c906152e9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161302e90614f37565b60405180910390fd5b600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166130c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ba906154e5565b60405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015411156131f55742600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555034600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b6131fe34613972565b6132088134613eed565b7fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c813460405161323992919061502f565b60405180910390a150565b6060601180548060200260200160405190810160405280929190818152602001828054801561329257602002820191906000526020600020905b81548152602001906001019080831161327e575b5050505050905090565b600681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161336a90614f37565b60405180910390fd5b61337c3361262b565b565b6000806010544261338f9190614deb565b90506203f4808110156133a65760009150506133ee565b60026203f4806133b69190614d19565b8110156133c75760019150506133ee565b60036203f4806133d79190614d19565b8110156133e85760029150506133ee565b60039150505b90565b6801158e460913d0000081565b670de0b6b3a764000081565b61341381611880565b61341c3361262b565b50565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff16600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415613517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161350e90614f37565b60405180910390fd5b60006010541161355c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613553906152e9565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154116135e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135d890615551565b60405180910390fd5b60006135ec33610d26565b9050662386f26fc10000811015613638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161362f906155bd565b60405180910390fd5b613640610c88565b81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015461368e9190614cc3565b11156136cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136c690615629565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555080600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008282546137b09190614cc3565b925050819055506003816137c49190614d19565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546138159190614cc3565b9250508190555061382533612553565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055506000600b5461012c61019061012c6138839190614cc3565b61388d9190614cc3565b613895610c29565b61389f9190614cc3565b836138aa9190614d19565b6138b49190614e4e565b90508047106138d1576138c682613972565b6138d03383613eed565b5b7fbd654390d0d973e8c8376ed6053be8658870df892687852cc5c914d700291b87338360405161390292919061502f565b60405180910390a15050565b613916614537565b600460068060200260405190810160405280929190826006801561394f576020028201915b81548152602001906001019080831161393b575b5050505050905090565b6000818310613968578161396a565b825b905092915050565b6000600b5461012c836139859190614d19565b61398f9190614e4e565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516139d99061567a565b60006040518083038185875af1925050503d8060008114613a16576040519150601f19603f3d011682016040523d82523d6000602084013e613a1b565b606091505b5050905080613a5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a56906156db565b60405180910390fd5b6000600b5461019085613a729190614d19565b613a7c9190614e4e565b90506000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051613ac69061567a565b60006040518083038185875af1925050503d8060008114613b03576040519150601f19603f3d011682016040523d82523d6000602084013e613b08565b606091505b5050905080613b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b4390615747565b60405180910390fd5b6000600b5461012c87613b5f9190614d19565b613b699190614e4e565b90506000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050905080613c06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bfd906157d9565b60405180910390fd5b50505050505050565b601260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613c6657613eea565b600c60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005016000815480929190613cb990614da2565b91905055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801819055507f2e7da569650ff873bdc27804d093dd4f019058746b012d06b0f411ae57009c5281600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154604051613e9992919061502f565b60405180910390a16000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055505b50565b6000613ef7611f05565b90506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060005b825181101561439d576000600b54848381518110613f8457613f83614d73565b5b602002602001015186613f979190614d19565b613fa19190614e4e565b905081600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154111561427c5760008373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050905080156141d15781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600f01846006811061408157614080614d73565b5b0160008282546140919190614cc3565b925050819055506140e482600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040154613959565b600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160008282546141359190614deb565b925050819055506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206004015414156141915761419084613c0f565b5b7fe33f884cf2d2a4661aef41b48edddc3a8f19aa33bde11fa6554b81a55f0146248785846040516141c4939291906157f9565b60405180910390a1614276565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f19350505050158015614239573d6000803e3d6000fd5b507fbec9e11c00ecccfcf4d2eccfb872560256c650f162ab1e04ff04cb4710137e7f87858460405161426d939291906157f9565b60405180910390a15b50614324565b80600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090183600681106142d1576142d0614d73565b5b0160008282546142e19190614cc3565b925050819055507ffc01aa0bed8b76340f973ef45d56a7a6fa55b04ff6f9e24b5d097b929c54801f86848360405161431b939291906157f9565b60405180910390a15b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050808061439590614da2565b915050613f63565b5050505050565b60008183116143b357816143b5565b825b905092915050565b6000600b546127106201518061271085600088600481106143e1576143e0614d73565b5b0154896143ee9190614d19565b6143f89190614d19565b6144029190614d19565b61440c9190614e4e565b6144169190614e4e565b6144209190614e4e565b90509392505050565b828054828255906000526020600020908101928215614465579160200282015b82811115614464578251825591602001919060010190614449565b5b5090506144729190614559565b5090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016144f5614537565b8152602001614502614537565b815260200161450f614537565b81525090565b6040518060800160405280600490602082028036833780820191505090505090565b6040518060c00160405280600690602082028036833780820191505090505090565b5b8082111561457257600081600090555060010161455a565b5090565b6000819050919050565b61458981614576565b82525050565b60006020820190506145a46000830184614580565b92915050565b600080fd5b6145b881614576565b81146145c357600080fd5b50565b6000813590506145d5816145af565b92915050565b6000602082840312156145f1576145f06145aa565b5b60006145ff848285016145c6565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061463382614608565b9050919050565b61464381614628565b811461464e57600080fd5b50565b6000813590506146608161463a565b92915050565b60006020828403121561467c5761467b6145aa565b5b600061468a84828501614651565b91505092915050565b61469c81614628565b82525050565b60006020820190506146b76000830184614693565b92915050565b600080604083850312156146d4576146d36145aa565b5b60006146e2858286016145c6565b92505060206146f3858286016145c6565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61473281614576565b82525050565b60006147448383614729565b60208301905092915050565b6000602082019050919050565b6000614768826146fd565b6147728185614708565b935061477d83614719565b8060005b838110156147ae5781516147958882614738565b97506147a083614750565b925050600181019050614781565b5085935050505092915050565b600060208201905081810360008301526147d5818461475d565b905092915050565b6147e681614628565b82525050565b600060069050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b614822816147ec565b61482c81846147f7565b925061483782614802565b8060005b8381101561486857815161484f8782614738565b965061485a8361480c565b92505060018101905061483b565b505050505050565b6103608201600082015161488760008501826147dd565b50602082015161489a60208501826147dd565b5060408201516148ad6040850182614729565b5060608201516148c06060850182614729565b5060808201516148d36080850182614729565b5060a08201516148e660a0850182614729565b5060c08201516148f960c0850182614729565b5060e082015161490c60e0850182614729565b50610100820151614921610100850182614729565b50610120820151614936610120850182614819565b5061014082015161494b6101e0850182614819565b506101608201516149606102a0850182614819565b50505050565b60006103608201905061497c6000830184614870565b92915050565b60008060408385031215614999576149986145aa565b5b60006149a785828601614651565b92505060206149b8858286016145c6565b9150509250929050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b6149f8816149c2565b614a0281846149cd565b9250614a0d826149d8565b8060005b83811015614a3e578151614a258782614738565b9650614a30836149e2565b925050600181019050614a11565b505050505050565b6000608082019050614a5b60008301846149ef565b92915050565b6000819050919050565b6000614a86614a81614a7c84614608565b614a61565b614608565b9050919050565b6000614a9882614a6b565b9050919050565b6000614aaa82614a8d565b9050919050565b614aba81614a9f565b82525050565b6000602082019050614ad56000830184614ab1565b92915050565b600080600060608486031215614af457614af36145aa565b5b6000614b02868287016145c6565b9350506020614b13868287016145c6565b9250506040614b24868287016145c6565b9150509250925092565b600081905092915050565b614b42816147ec565b614b4c8184614b2e565b9250614b5782614802565b8060005b83811015614b88578151614b6f8782614738565b9650614b7a8361480c565b925050600181019050614b5b565b505050505050565b600060c082019050614ba56000830184614b39565b92915050565b600082825260208201905092915050565b7f4f6e6c792061646d696e00000000000000000000000000000000000000000000600082015250565b6000614bf2600a83614bab565b9150614bfd82614bbc565b602082019050919050565b60006020820190508181036000830152614c2181614be5565b9050919050565b7f4c61756e63682063616e2062652075736564206f6e6c79206f6e636500000000600082015250565b6000614c5e601c83614bab565b9150614c6982614c28565b602082019050919050565b60006020820190508181036000830152614c8d81614c51565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000614cce82614576565b9150614cd983614576565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614d0e57614d0d614c94565b5b828201905092915050565b6000614d2482614576565b9150614d2f83614576565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614d6857614d67614c94565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614dad82614576565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614de057614ddf614c94565b5b600182019050919050565b6000614df682614576565b9150614e0183614576565b925082821015614e1457614e13614c94565b5b828203905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000614e5982614576565b9150614e6483614576565b925082614e7457614e73614e1f565b5b828204905092915050565b7f43616e2062652075736564206f6e6c79206265666f7265206c61756e63680000600082015250565b6000614eb5601e83614bab565b9150614ec082614e7f565b602082019050919050565b60006020820190508181036000830152614ee481614ea8565b9050919050565b7f55736572206973206e6f74207265676973746572656400000000000000000000600082015250565b6000614f21601683614bab565b9150614f2c82614eeb565b602082019050919050565b60006020820190508181036000830152614f5081614f14565b9050919050565b7f4e6f206465706f73697473000000000000000000000000000000000000000000600082015250565b6000614f8d600b83614bab565b9150614f9882614f57565b602082019050919050565b60006020820190508181036000830152614fbc81614f80565b9050919050565b7f4e6f2070726f66697420617661696c61626c6500000000000000000000000000600082015250565b6000614ff9601383614bab565b915061500482614fc3565b602082019050919050565b6000602082019050818103600083015261502881614fec565b9050919050565b60006040820190506150446000830185614693565b6150516020830184614580565b9392505050565b7f5769746864726177616c206661696c6564000000000000000000000000000000600082015250565b600061508e601183614bab565b915061509982615058565b602082019050919050565b600060208201905081810360008301526150bd81615081565b9050919050565b7f5573657220697320616c72656164792072656769737465726564000000000000600082015250565b60006150fa601a83614bab565b9150615105826150c4565b602082019050919050565b60006020820190508181036000830152615129816150ed565b9050919050565b7f55706c696e65206973206e6f7420726567697374657265640000000000000000600082015250565b6000615166601883614bab565b915061517182615130565b602082019050919050565b6000602082019050818103600083015261519581615159565b9050919050565b60006040820190506151b16000830185614693565b6151be6020830184614693565b9392505050565b7f4f6e6c79206c696e654d616e6167657200000000000000000000000000000000600082015250565b60006151fb601083614bab565b9150615206826151c5565b602082019050919050565b6000602082019050818103600083015261522a816151ee565b9050919050565b7f496e76616c6964206c696e657320636f756e7400000000000000000000000000600082015250565b6000615267601383614bab565b915061527282615231565b602082019050919050565b600060208201905081810360008301526152968161525a565b9050919050565b7f42756c6c4661726d3a206e6f74206c61756e6368656400000000000000000000600082015250565b60006152d3601683614bab565b91506152de8261529d565b602082019050919050565b60006020820190508181036000830152615302816152c6565b9050919050565b7f4465706f7369742076616c756520697320746f6f20736d616c6c000000000000600082015250565b600061533f601a83614bab565b915061534a82615309565b602082019050919050565b6000602082019050818103600083015261536e81615332565b9050919050565b7f4465706f736974206c696d697420657863656564656400000000000000000000600082015250565b60006153ab601683614bab565b91506153b682615375565b602082019050919050565b600060208201905081810360008301526153da8161539e565b9050919050565b7f4d6967726174696f6e207265717569726564206265666f7265206465706f736960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b600061543d602183614bab565b9150615448826153e1565b604082019050919050565b6000602082019050818103600083015261546c81615430565b9050919050565b7f4163636f756e74206e6f742077616974696e6720666f72206d6967726174696f60008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006154cf602183614bab565b91506154da82615473565b604082019050919050565b600060208201905081810360008301526154fe816154c2565b9050919050565b7f4e6f7468696e6720746f207265696e7665737400000000000000000000000000600082015250565b600061553b601383614bab565b915061554682615505565b602082019050919050565b6000602082019050818103600083015261556a8161552e565b9050919050565b7f5265696e766573742076616c756520697320746f6f20736d616c6c0000000000600082015250565b60006155a7601b83614bab565b91506155b282615571565b602082019050919050565b600060208201905081810360008301526155d68161559a565b9050919050565b7f5265696e766573742076616c756520697320746f6f2062696700000000000000600082015250565b6000615613601983614bab565b915061561e826155dd565b602082019050919050565b6000602082019050818103600083015261564281615606565b9050919050565b600081905092915050565b50565b6000615664600083615649565b915061566f82615654565b600082019050919050565b600061568582615657565b9150819050919050565b7f4661696c656420746f2073656e64206465762066656500000000000000000000600082015250565b60006156c5601683614bab565b91506156d08261568f565b602082019050919050565b600060208201905081810360008301526156f4816156b8565b9050919050565b7f4661696c656420746f2073656e6420486f6e65792046756e6420666565000000600082015250565b6000615731601d83614bab565b915061573c826156fb565b602082019050919050565b6000602082019050818103600083015261576081615724565b9050919050565b7f4661696c656420746f2073656e6420496e737572616e63652046756e6420666560008201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b60006157c3602183614bab565b91506157ce82615767565b604082019050919050565b600060208201905081810360008301526157f2816157b6565b9050919050565b600060608201905061580e6000830186614693565b61581b6020830185614693565b6158286040830184614580565b94935050505056fea26469706673582212205414b7137b7d55879715518a9a43d61a05643b3b9382152c388270584935613f64736f6c63430008090033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000008c0cf0a4ea0b7eb42246e91ee48595f54893153c00000000000000000000000087968f1db67bf9cf07ec6a25b134394458be325600000000000000000000000069304855697e2805f2e5a93f3e64dfaa83117d6b

-----Decoded View---------------
Arg [0] : _devAddress (address): 0x8C0Cf0A4Ea0b7Eb42246e91eE48595F54893153C
Arg [1] : _honeyFundAddress (address): 0x87968f1DB67bF9CF07EC6A25b134394458bE3256
Arg [2] : _insuranceFund (address): 0x69304855697E2805f2e5A93f3E64Dfaa83117D6B

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000008c0cf0a4ea0b7eb42246e91ee48595f54893153c
Arg [1] : 00000000000000000000000087968f1db67bf9cf07ec6a25b134394458be3256
Arg [2] : 00000000000000000000000069304855697e2805f2e5a93f3e64dfaa83117d6b


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.