ETH Price: $2,711.70 (+3.32%)
 

Overview

ETH Balance

0.000000000002343124 ETH

Eth Value

Less Than $0.01 (@ $2,711.70/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw192991022024-02-24 18:02:23345 days ago1708797743IN
0x2727Fc56...4a9Ce4005
0 ETH0.0016368237.36273033
Withdraw128245212021-07-14 10:11:331300 days ago1626257493IN
0x2727Fc56...4a9Ce4005
0 ETH0.0025959350.6
Withdraw125732262021-06-05 7:48:551339 days ago1622879335IN
0x2727Fc56...4a9Ce4005
0 ETH0.0006690313.00000145
Transfer121393462021-03-30 7:42:231406 days ago1617090143IN
0x2727Fc56...4a9Ce4005
0.04 ETH0.002646126
Transfer121392832021-03-30 7:26:551407 days ago1617089215IN
0x2727Fc56...4a9Ce4005
0.04 ETH0.002289109
Withdraw121198262021-03-27 7:33:081410 days ago1616830388IN
0x2727Fc56...4a9Ce4005
0 ETH0.0045838483
Transfer119427662021-02-28 1:03:581437 days ago1614474238IN
0x2727Fc56...4a9Ce4005
1.82231713 ETH0.00149171
Withdraw118330632021-02-11 4:15:001454 days ago1613016900IN
0x2727Fc56...4a9Ce4005
0 ETH0.0053112996
Transfer118285992021-02-10 11:55:041454 days ago1612958104IN
0x2727Fc56...4a9Ce4005
0.03976434 ETH0.003633173
Transfer117921122021-02-04 20:59:031460 days ago1612472343IN
0x2727Fc56...4a9Ce4005
0.07831001 ETH0.006342302
Withdraw117697532021-02-01 10:22:501463 days ago1612174970IN
0x2727Fc56...4a9Ce4005
0 ETH0.00608586110
Transfer117517892021-01-29 16:14:331466 days ago1611936873IN
0x2727Fc56...4a9Ce4005
0.00950777 ETH0.002247107
Transfer117470782021-01-28 22:35:081467 days ago1611873308IN
0x2727Fc56...4a9Ce4005
0.3122466 ETH0.00207999
Invest117469102021-01-28 21:58:001467 days ago1611871080IN
0x2727Fc56...4a9Ce4005
0 ETH0.0023357876
Recieve117272282021-01-25 21:02:421470 days ago1611608562IN
0x2727Fc56...4a9Ce4005
1.8 ETH0.0057939550.6
Recieve117272282021-01-25 21:02:421470 days ago1611608562IN
0x2727Fc56...4a9Ce4005
1.9 ETH0.0056107449
Recieve117272282021-01-25 21:02:421470 days ago1611608562IN
0x2727Fc56...4a9Ce4005
2 ETH0.021319749
Withdraw117260722021-01-25 16:52:481470 days ago1611593568IN
0x2727Fc56...4a9Ce4005
0 ETH0.0028109461.00000145
Invest117206872021-01-24 21:12:301471 days ago1611522750IN
0x2727Fc56...4a9Ce4005
0 ETH0.0023674477
Invest117206632021-01-24 21:07:081471 days ago1611522428IN
0x2727Fc56...4a9Ce4005
0 ETH0.0021117268.65150896
Withdraw117206632021-01-24 21:07:081471 days ago1611522428IN
0x2727Fc56...4a9Ce4005
0 ETH0.0059231868.65150896
Withdraw117203042021-01-24 19:49:301471 days ago1611517770IN
0x2727Fc56...4a9Ce4005
0 ETH0.00965785104
Withdraw117196472021-01-24 17:18:151471 days ago1611508695IN
0x2727Fc56...4a9Ce4005
0 ETH0.0077159283
Withdraw117173072021-01-24 8:42:451471 days ago1611477765IN
0x2727Fc56...4a9Ce4005
0 ETH0.0021958146.00000145
Withdraw117166092021-01-24 6:00:101472 days ago1611468010IN
0x2727Fc56...4a9Ce4005
0 ETH0.00376850
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
117469102021-01-28 21:58:001467 days ago1611871080
0x2727Fc56...4a9Ce4005
5.415 ETH
117272282021-01-25 21:02:421470 days ago1611608562
0x2727Fc56...4a9Ce4005
0.09 ETH
117272282021-01-25 21:02:421470 days ago1611608562
0x2727Fc56...4a9Ce4005
0.095 ETH
117272282021-01-25 21:02:421470 days ago1611608562
0x2727Fc56...4a9Ce4005
0.1 ETH
117206872021-01-24 21:12:301471 days ago1611522750
0x2727Fc56...4a9Ce4005
22.30983878 ETH
117206632021-01-24 21:07:081471 days ago1611522428
0x2727Fc56...4a9Ce4005
0.010765 ETH
117206632021-01-24 21:07:081471 days ago1611522428
0x2727Fc56...4a9Ce4005
0.204535 ETH
117203042021-01-24 19:49:301471 days ago1611517770
0x2727Fc56...4a9Ce4005
0.015 ETH
117203042021-01-24 19:49:301471 days ago1611517770
0x2727Fc56...4a9Ce4005
0.285 ETH
117196472021-01-24 17:18:151471 days ago1611508695
0x2727Fc56...4a9Ce4005
0.017 ETH
117196472021-01-24 17:18:151471 days ago1611508695
0x2727Fc56...4a9Ce4005
0.323 ETH
117173072021-01-24 8:42:451471 days ago1611477765
0x2727Fc56...4a9Ce4005
0.08255 ETH
117173072021-01-24 8:42:451471 days ago1611477765
0x2727Fc56...4a9Ce4005
1.56845 ETH
117166092021-01-24 6:00:101472 days ago1611468010
0x2727Fc56...4a9Ce4005
0.0006665 ETH
117166092021-01-24 6:00:101472 days ago1611468010
0x2727Fc56...4a9Ce4005
0.0126635 ETH
117165022021-01-24 5:35:441472 days ago1611466544
0x2727Fc56...4a9Ce4005
0.00717 ETH
117165022021-01-24 5:35:441472 days ago1611466544
0x2727Fc56...4a9Ce4005
0.13623 ETH
117151802021-01-24 0:46:171472 days ago1611449177
0x2727Fc56...4a9Ce4005
0.05 ETH
117147902021-01-23 23:19:041472 days ago1611443944
0x2727Fc56...4a9Ce4005
0.002629 ETH
117147902021-01-23 23:19:041472 days ago1611443944
0x2727Fc56...4a9Ce4005
0.049951 ETH
117147762021-01-23 23:15:391472 days ago1611443739
0x2727Fc56...4a9Ce4005
0.002337 ETH
117147762021-01-23 23:15:391472 days ago1611443739
0x2727Fc56...4a9Ce4005
0.044403 ETH
117147192021-01-23 23:05:001472 days ago1611443100
0x2727Fc56...4a9Ce4005
0.1055 ETH
117146912021-01-23 22:58:021472 days ago1611442682
0x2727Fc56...4a9Ce4005
0.05 ETH
117146052021-01-23 22:39:291472 days ago1611441569
0x2727Fc56...4a9Ce4005
0.035 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PrestigeClub

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-18
*/

pragma solidity 0.6.8;


// SPDX-License-Identifier: MIT


library SafeMath128{

    //Custom addition
    function safemul(uint128 a, uint128 b) internal pure returns (uint128) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint128 c = a * b;
        if(!(c / a == b)){
            c = (2**128)-1;
        }

        return c;
    }
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath104 {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint112 a, uint112 b) internal pure returns (uint112) {
        uint112 c = a + b;
        if(!(c >= a)){
            c = (2**112)-1;
        }
        require(c >= a, "addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint112 a, uint112 b) internal pure returns (uint112) {
        if(!(b <= a)){
            return 0;
        }
        uint112 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint112 a, uint112 b) internal pure returns (uint112) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint112 c = a * b;
        if(!(c / a == b)){
            c = (2**112)-1;
        }

        return c;
    }


    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint112 a, uint112 b) internal pure returns (uint112) {
        require(b > 0, "div by zero");
        uint112 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "New owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

//Restrictions:
//only 2^32 Users
//Maximum of 2^104 / 10^18 Ether investment. Theoretically 20 Trl Ether, practically 100000000000 Ether compiles
//Maximum of (2^104 / 10^18 Ether) investment. Theoretically 20 Trl Ether, practically 100000000000 Ether compiles
contract PrestigeClub is Ownable() {

    using SafeMath104 for uint112;
    using SafeMath128 for uint128;

    struct User {
        uint112 deposit; //265 bits together
        uint112 payout;
        uint32 position;
        uint8 qualifiedPools;
        uint8 downlineBonus;
        address referer;
        address[] referrals;

        uint112 directSum;
        uint40 lastPayout;

        uint112[5] downlineVolumes;
    }
    
    event NewDeposit(address indexed addr, uint112 amount);
    event PoolReached(address indexed addr, uint8 pool);
    event DownlineBonusStageReached(address indexed adr, uint8 stage);
    // event Referral(address indexed addr, address indexed referral);
    
    event Payout(address indexed addr, uint112 interest, uint112 direct, uint112 pool, uint112 downline, uint40 dayz); 
    
    event Withdraw(address indexed addr, uint112 amount);
    
    mapping (address => User) public users;
    address[] public userList;

    uint32 public lastPosition;
    
    uint128 public depositSum;
    
    Pool[8] public pools;
    
    struct Pool {
        uint112 minOwnInvestment;
        uint8 minDirects;
        uint112 minSumDirects;
        uint8 payoutQuote; //ppm
        uint32 numUsers;
    }

    PoolState[] public states;

    struct PoolState {
        uint128 totalDeposits;
        uint32 totalUsers;
        uint32[8] numUsers;
    }
    
    DownlineBonusStage[4] downlineBonuses;
    
    struct DownlineBonusStage {
        uint32 minPool;
        uint64 payoutQuote; //ppm
    }
    
    uint40 public pool_last_draw;
    
    constructor() public {
 
        uint40 timestamp = uint40(block.timestamp);
        pool_last_draw = timestamp - (timestamp % payout_interval) - (2 * payout_interval);


        pools[0] = Pool(3 ether, 1, 3 ether, 130, 0);
        pools[1] = Pool(15 ether, 3, 5 ether, 130, 0);
        pools[2] = Pool(15 ether, 4, 44 ether, 130, 0);
        pools[3] = Pool(30 ether, 10, 105 ether, 130, 0);
        pools[4] = Pool(45 ether, 15, 280 ether, 130, 0);
        pools[5] = Pool(60 ether, 20, 530 ether, 130, 0);
        pools[6] = Pool(150 ether, 20, 1470 ether, 80, 0);
        pools[7] = Pool(300 ether, 20, 2950 ether, 80, 0);

        downlineBonuses[0] = DownlineBonusStage(3, 50);
        downlineBonuses[1] = DownlineBonusStage(4, 100);
        downlineBonuses[2] = DownlineBonusStage(5, 160);
        downlineBonuses[3] = DownlineBonusStage(6, 210);

        userList.push(address(0));
        
    }
    
    uint112 internal minDeposit = 1 ether;
    uint112 internal minWithdraw = 1000 wei; 
    
    uint40 constant internal payout_interval = 1 days;
    
    function recieve() public payable {
        require((users[msg.sender].deposit * 20 / 19) >= minDeposit || msg.value >= minDeposit, "Mininum deposit value not reached");
        
        address sender = msg.sender;

        uint112 value = uint112(msg.value).mul(19) / 20;

        bool userExists = users[sender].position != 0;
        
        triggerCalculation();

        // Create a position for new accounts
        if(!userExists){
            lastPosition++;
            users[sender].position = lastPosition;
            users[sender].lastPayout = (pool_last_draw + 1);
            userList.push(sender);
        }

        address referer = users[sender].referer; //can put outside because referer is always set since setReferral() gets called before recieve() in recieve(address)

        if(referer != address(0)){
            updateUpline(sender, referer, value);
        }

        //Update Payouts
        if(userExists){
            updatePayout(sender);
        }

        users[sender].deposit = users[sender].deposit.add(value);
        
        //Transfer fee
        payable(owner()).transfer(msg.value - value);
        
        emit NewDeposit(sender, value);
        
        updateUserPool(sender);
        updateDownlineBonusStage(sender);
        if(referer != address(0)){
            users[referer].directSum = users[referer].directSum.add(value);

            updateUserPool(referer);
            updateDownlineBonusStage(referer);
        }
        
        depositSum = depositSum + value; //Won´t do an overflow since value is uint112 and depositSum 128

    }
    
    
    function recieve(address referer) public payable {
        
        _setReferral(referer);
        recieve();
        
    }

    uint8 public downlineLimit = 31;

    function updateUpline(address reciever, address adr, uint112 addition) private {
        
        address current = adr;
        uint8 bonusStage = users[reciever].downlineBonus;
        
        uint8 downlineLimitCounter = downlineLimit - 1;
        
        while(current != address(0) && downlineLimitCounter > 0){

            updatePayout(current);

            users[current].downlineVolumes[bonusStage] = users[current].downlineVolumes[bonusStage].add(addition);
            uint8 currentBonus = users[current].downlineBonus;
            if(currentBonus > bonusStage){
                bonusStage = currentBonus;
            }

            current = users[current].referer;
            downlineLimitCounter--;
        }
        
    }
    
    function updatePayout(address adr) private {
        
        uint40 dayz = (uint40(block.timestamp) - users[adr].lastPayout) / (payout_interval);
        if(dayz >= 1){
            
            uint112 interestPayout = getInterestPayout(adr);
            uint112 poolpayout = getPoolPayout(adr, dayz);
            uint112 directsPayout = getDirectsPayout(adr);
            uint112 downlineBonusAmount = getDownlinePayout(adr);
            
            
            uint112 sum = interestPayout.add(directsPayout).add(downlineBonusAmount); 
            sum = (sum.mul(dayz)).add(poolpayout);
            
            users[adr].payout = users[adr].payout.add(sum);
            users[adr].lastPayout += (payout_interval * dayz);
            
            emit Payout(adr, interestPayout, directsPayout, poolpayout, downlineBonusAmount, dayz);
            
        }
    }
    
    function getInterestPayout(address adr) public view returns (uint112){
        //Calculate Base Payouts
        uint8 quote;
        uint112 deposit = users[adr].deposit;
        if(deposit >= 30 ether){
            quote = 15;
        }else{
            quote = 10;
        }
        
        return deposit.mul(quote) / 10000;
    }
    
    function getPoolPayout(address adr, uint40 dayz) public view returns (uint112){

        uint40 length = (uint40)(states.length);

        uint112 poolpayout = 0;

        if(users[adr].qualifiedPools > 0){
            for(uint40 day = length - dayz ; day < length ; day++){


                uint32 numUsers = states[day].totalUsers;
                uint112 streamline = uint112(states[day].totalDeposits.safemul(numUsers - users[adr].position)).div(numUsers);


                uint112 payout_day = 0; 
                uint32 stateNumUsers = 0;
                for(uint8 j = 0 ; j < users[adr].qualifiedPools ; j++){
                    uint112 pool_base = streamline.mul(pools[j].payoutQuote) / 1000000;

                    stateNumUsers = states[day].numUsers[j];

                    if(stateNumUsers != 0){
                        payout_day += pool_base.div(stateNumUsers);
                    }
                }

                poolpayout = poolpayout.add(payout_day);

            }
        }
        
        return poolpayout;
    }

    function getDownlinePayout(address adr) public view returns (uint112){

        //Calculate Downline Bonus
        uint112 downlinePayout = 0;
        
        uint8 downlineBonus = users[adr].downlineBonus;
        
        if(downlineBonus > 0){
            
            uint64 ownPercentage = downlineBonuses[downlineBonus - 1].payoutQuote;

            for(uint8 i = 0 ; i < downlineBonus; i++){

                uint64 quote = 0;
                if(i > 0){
                    quote = downlineBonuses[i - 1].payoutQuote;
                }else{
                    quote = 0;
                }

                uint64 percentage = ownPercentage - quote;
                if(percentage > 0){ //Requiring positivity and saving gas for 0, since that returns 0

                    downlinePayout = downlinePayout.add(users[adr].downlineVolumes[i].mul(percentage) / 1000000); 

                }

            }

            if(downlineBonus == 4){
                downlinePayout = downlinePayout.add(users[adr].downlineVolumes[downlineBonus].mul(50) / 1000000);
            }

        }

        return downlinePayout;
        
    }

    function getDirectsPayout(address adr) public view returns (uint112) {
        
        //Calculate Directs Payouts
        uint112 directsDepositSum = users[adr].directSum;

        uint112 directsPayout = directsDepositSum.mul(5) / 10000;

        return (directsPayout);
        
    }

    function pushPoolState() private {
        uint32[8] memory temp;
        for(uint8 i = 0 ; i < 8 ; i++){
            temp[i] = pools[i].numUsers;
        }
        states.push(PoolState(depositSum, lastPosition, temp));
        pool_last_draw += payout_interval;
    }
    
    function updateUserPool(address adr) private {
        
        if(users[adr].qualifiedPools < pools.length){
            
            uint8 poolnum = users[adr].qualifiedPools;
            
            uint112 sumDirects = users[adr].directSum;
            
            //Check if requirements for next pool are met
            if(users[adr].deposit >= pools[poolnum].minOwnInvestment && users[adr].referrals.length >= pools[poolnum].minDirects && sumDirects >= pools[poolnum].minSumDirects){
                users[adr].qualifiedPools = poolnum + 1;
                pools[poolnum].numUsers++;
                
                emit PoolReached(adr, poolnum + 1);
                
                updateUserPool(adr);
            }
            
        }
        
    }
    
    function updateDownlineBonusStage(address adr) private {

        uint8 bonusstage = users[adr].downlineBonus;

        if(bonusstage < downlineBonuses.length){

            //Check if requirements for next stage are met
            if(users[adr].qualifiedPools >= downlineBonuses[bonusstage].minPool){
                users[adr].downlineBonus += 1;
                
                //Update data in upline
                uint112 value = users[adr].deposit;  //Value without current stage, since that must not be subtracted

                for(uint8 i = 0 ; i <= bonusstage ; i++){
                    value = value.add(users[adr].downlineVolumes[i]);
                }

                // uint8 previousBonusStage = bonusstage;
                uint8 currentBonusStage = bonusstage + 1;
                uint8 lastBonusStage = bonusstage;

                address current = users[adr].referer;
                while(current != address(0)){

                    
                    users[current].downlineVolumes[lastBonusStage] = users[current].downlineVolumes[lastBonusStage].sub(value);
                    users[current].downlineVolumes[currentBonusStage] = users[current].downlineVolumes[currentBonusStage].add(value);

                    uint8 currentDB = users[current].downlineBonus;
                    if(currentDB > currentBonusStage){
                        currentBonusStage = currentDB;
                    }
                    if(currentDB > lastBonusStage){
                        lastBonusStage = currentDB;
                    }

                    if(lastBonusStage == currentBonusStage){
                        break;
                    }

                    current = users[current].referer;
                }

                emit DownlineBonusStageReached(adr, users[adr].downlineBonus);
                
                updateDownlineBonusStage(adr);
            }
        }
        
    }
    
    function calculateDirects(address adr) external view returns (uint112, uint32) {
        
        address[] memory referrals = users[adr].referrals;
        
        uint112 sum = 0;
        for(uint32 i = 0 ; i < referrals.length ; i++){
            sum = sum.add(users[referrals[i]].deposit);
        }
        
        return (sum, (uint32)(referrals.length));
        
    }
    
    //Endpoint to withdraw payouts
    function withdraw(uint112 amount) public {
        
        updatePayout(msg.sender);

        require(amount > minWithdraw, "Minimum Withdrawal amount not met");
        require(users[msg.sender].payout >= amount, "Not enough payout available");
        
        uint112 transfer = amount * 19 / 20;
        
        users[msg.sender].payout -= amount;
        
        payable(msg.sender).transfer(transfer);
        
        payable(owner()).transfer(amount - transfer);
        
        emit Withdraw(msg.sender, amount);
        
    }

    function _setReferral(address referer) private {
        
        if(users[msg.sender].referer == referer){
            return;
        }
        
        if(users[msg.sender].position != 0 && users[msg.sender].position < users[referer].position) {
            return;
        }
        
        require(users[msg.sender].referer == address(0), "Referer can only be set once");
        require(users[referer].position > 0, "Referer does not exist");
        require(msg.sender != referer, "Cant set oneself as referer");
        
        users[referer].referrals.push(msg.sender);
        users[msg.sender].referer = referer;

        if(users[msg.sender].deposit > 0){
            users[referer].directSum = users[referer].directSum.add(users[msg.sender].deposit);
        }
        
    }
    
    
    function invest(uint amount) public onlyOwner {
        
        payable(owner()).transfer(amount);
    }
    
    function reinvest() public payable onlyOwner {
    }
    
    function setLimits(uint112 _minDeposit, uint112 _minWithdrawal) public onlyOwner {
        minDeposit = _minDeposit;
        minWithdraw = _minWithdrawal;
    }

    function setDownlineLimit(uint8 limit) public onlyOwner {
        downlineLimit = limit;
    }
    
    function forceSetReferral(address adr, address referer) public onlyOwner {
        users[referer].referrals.push(adr);
        users[adr].referer = referer;
    }

    //Only for BO
    function getDownline() external view returns (uint112, uint){
        uint112 sum;
        for(uint8 i = 0 ; i < users[msg.sender].downlineVolumes.length ; i++){
            sum += users[msg.sender].downlineVolumes[i];
        }

        uint numUsers = getDownlineUsers(msg.sender);

        return (sum, numUsers);
    }

    function getDownlineUsers(address adr) public view returns (uint128){

        uint128 sum = 0;
        uint32 length = uint32(users[adr].referrals.length);
        sum += length;
        for(uint32 i = 0; i < length ; i++){
            sum += getDownlineUsers(users[adr].referrals[i]);
        }
        return sum;
    }
    
    function reCalculateImported(uint64 from, uint64 to) public onlyOwner {
        uint40 time = pool_last_draw - payout_interval;
        for(uint64 i = from ; i < to + 1 ; i++){
            address adr = userList[i];
            users[adr].payout = 0;
            users[adr].lastPayout = time;
            updatePayout(adr);
        }
    }
    
    function _import(address[] memory sender, uint112[] memory deposit, address[] memory referer) public onlyOwner {
        for(uint64 i = 0 ; i < sender.length ; i++){
            importUser(sender[i], deposit[i], referer[i]);
        }
    }
    
    function importUser(address sender, uint112 deposit, address referer) internal onlyOwner {
        
        if(referer != address(0)){
            users[referer].referrals.push(sender);
            users[sender].referer = referer;
        }

        uint112 value = deposit;

        // Create a position for new accounts
        lastPosition++;
        users[sender].position = lastPosition;
        users[sender].lastPayout = pool_last_draw;
        userList.push(sender);

        if(referer != address(0)){
            updateUpline(sender, referer, value);
        }

        users[sender].deposit += value;
        
        emit NewDeposit(sender, value);
        
        updateUserPool(sender);
        updateDownlineBonusStage(sender);
        
        if(referer != address(0)){
            users[referer].directSum += value;
    
            updateUserPool(referer);
            updateDownlineBonusStage(referer);
        }
        
        depositSum += value;
        
    }

    function getUserReferrals(address adr) public view returns (address[] memory referrals){
        return users[adr].referrals;
    }
    
    function getUserList() public view returns (address[] memory){  //TODO Probably not needed
        return userList;
    }
    
    function triggerCalculation() public {
        if(block.timestamp > pool_last_draw + payout_interval){
            pushPoolState();
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"adr","type":"address"},{"indexed":false,"internalType":"uint8","name":"stage","type":"uint8"}],"name":"DownlineBonusStageReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint112","name":"amount","type":"uint112"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint112","name":"interest","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"direct","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"pool","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"downline","type":"uint112"},{"indexed":false,"internalType":"uint40","name":"dayz","type":"uint40"}],"name":"Payout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint8","name":"pool","type":"uint8"}],"name":"PoolReached","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint112","name":"amount","type":"uint112"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address[]","name":"sender","type":"address[]"},{"internalType":"uint112[]","name":"deposit","type":"uint112[]"},{"internalType":"address[]","name":"referer","type":"address[]"}],"name":"_import","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"calculateDirects","outputs":[{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositSum","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"downlineLimit","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"address","name":"referer","type":"address"}],"name":"forceSetReferral","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDirectsPayout","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDownline","outputs":[{"internalType":"uint112","name":"","type":"uint112"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDownlinePayout","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getDownlineUsers","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getInterestPayout","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"},{"internalType":"uint40","name":"dayz","type":"uint40"}],"name":"getPoolPayout","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserList","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"getUserReferrals","outputs":[{"internalType":"address[]","name":"referrals","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"invest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastPosition","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool_last_draw","outputs":[{"internalType":"uint40","name":"","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pools","outputs":[{"internalType":"uint112","name":"minOwnInvestment","type":"uint112"},{"internalType":"uint8","name":"minDirects","type":"uint8"},{"internalType":"uint112","name":"minSumDirects","type":"uint112"},{"internalType":"uint8","name":"payoutQuote","type":"uint8"},{"internalType":"uint32","name":"numUsers","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"from","type":"uint64"},{"internalType":"uint64","name":"to","type":"uint64"}],"name":"reCalculateImported","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"referer","type":"address"}],"name":"recieve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"recieve","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"reinvest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint8","name":"limit","type":"uint8"}],"name":"setDownlineLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint112","name":"_minDeposit","type":"uint112"},{"internalType":"uint112","name":"_minWithdrawal","type":"uint112"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"states","outputs":[{"internalType":"uint128","name":"totalDeposits","type":"uint128"},{"internalType":"uint32","name":"totalUsers","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"triggerCalculation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint112","name":"deposit","type":"uint112"},{"internalType":"uint112","name":"payout","type":"uint112"},{"internalType":"uint32","name":"position","type":"uint32"},{"internalType":"uint8","name":"qualifiedPools","type":"uint8"},{"internalType":"uint8","name":"downlineBonus","type":"uint8"},{"internalType":"address","name":"referer","type":"address"},{"internalType":"uint112","name":"directSum","type":"uint112"},{"internalType":"uint40","name":"lastPayout","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint112","name":"amount","type":"uint112"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260198054600160281b600160981b0319166c0de0b6b3a76400000000000000179055601a80546103e86001600160701b03199091161760ff60701b1916601f60701b17905534801561005557600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350426202a3006201518064ffffffffff83166019805464ffffffffff19169290910684039290920364ffffffffff161790556040805160a0810182526729a2241af62c000080825260016020830152918101919091526082606082015260006080820181905260049082516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001938401805463ffffffff191663ffffffff909216919091179055815160a08101835267d02ab486cedc00008152600391810191909152674563918244f400009181019190915260829281019290925260009282019290925290600490825160029182029290920180546020808601516040808801516060808a01516001600160701b03199096166001600160701b03998a161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b99909216989098021760ff60e81b1916600160e81b92909416919091029290921783556080958601516001909301805463ffffffff191663ffffffff90941693909317909255805160a08101825267d02ab486cedc0000815260049281018390526802629f66e0c53000009181019190915260829381019390935260009383019390935290919082516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001909301805463ffffffff191663ffffffff90941693909317909255805160a0810182526801a055690d9db800008152600a928101929092526805b12aefafa8040000908201526082918101919091526000918101919091526004600382516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001909301805463ffffffff191663ffffffff90941693909317909255805160a081018252680270801d946c9400008152600f92810192909252680f2dc7d47f156000009082015260829181019190915260009181019190915260048082516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001909301805463ffffffff191663ffffffff90941693909317909255805160a081018252680340aad21b3b7000008152601492810192909252681cbb3a3ff08d080000908201526082918101919091526000918101919091526004600582516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001909301805463ffffffff191663ffffffff90941693909317909255805160a081018252680821ab0d44149800008152601492810192909252684fb0591b9b30380000908201526050918101919091526000918101919091526004600682516002919091029190910180546020808501516040808701516060808901516001600160701b03199096166001600160701b039889161760ff60701b1916600160701b60ff9586160217600160781b600160e81b031916600160781b98909216979097021760ff60e81b1916600160e81b92909416919091029290921783556080948501516001909301805463ffffffff191663ffffffff90941693909317909255805160a081018252681043561a88293000008152601492810192909252689feb795a3aea5800009082015260509181019190915260009181019190915260046007825160029190910291909101805460208085015160408087015160608801516001600160701b03199095166001600160701b039788161760ff60701b1916600160701b60ff9485160217600160781b600160e81b031916600160781b97909116969096029590951760ff60e81b1916600160e81b91909316029190911782556080909301516001909101805463ffffffff191663ffffffff909216919091179055805180820190915260038152603291810191909152601560008251910180546020938401516001600160401b031664010000000002600160201b600160601b031963ffffffff90941663ffffffff1990921691909117929092169190911790556040805180820190915260048152606491810191909152601560018251910180546020938401516001600160401b031664010000000002600160201b600160601b031963ffffffff90941663ffffffff199092169190911792909216919091179055604080518082019091526005815260a091810191909152601560028251910180546020938401516001600160401b031664010000000002600160201b600160601b031963ffffffff90941663ffffffff199092169190911792909216919091179055604080518082019091526006815260d291810191909152601560038251910180546020909301516001600160401b031664010000000002600160201b600160601b031963ffffffff90931663ffffffff19909416939093179190911691909117905550600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b031916905561313f806109b06000396000f3fe6080604052600436106101cd5760003560e01c80639f4216e8116100f7578063b1c2bec111610095578063bebb1f7211610064578063bebb1f721461097e578063ece7738414610993578063f2fde38b146109c6578063fdb5a03e146109f9576101cd565b8063b1c2bec1146108ba578063b8522043146108fa578063b9aa04291461090f578063bb6f2ca51461094b576101cd565b8063a60b73f2116100d1578063a60b73f214610784578063a87430ba146107aa578063a9e10bf214610845578063ac4afa381461084d576101cd565b80639f4216e8146106f0578063a041913d1461071a578063a198341614610755576101cd565b80634818a49c1161016f578063575cea6b1161013e578063575cea6b146105e45780637c59f6cb146106675780638da5cb5b14610692578063936248bf146106c3576101cd565b80634818a49c146104ed5780634bcbc3e6146105205780634bd62586146105585780634e53385a146105b3576101cd565b806325fced97116101ab57806325fced97146104275780632afcf480146104555780633bc0e4b81461047f5780634134650b146104b2576101cd565b8063017a9105146101d2578063131c1789146102245780631737536a14610273575b600080fd5b3480156101de57600080fd5b506101fc600480360360208110156101f557600080fd5b5035610a01565b604080516001600160801b03909316835263ffffffff90911660208301528051918290030190f35b34801561023057600080fd5b506102576004803603602081101561024757600080fd5b50356001600160a01b0316610a3b565b604080516001600160701b039092168252519081900360200190f35b34801561027f57600080fd5b506104256004803603606081101561029657600080fd5b810190602081018135600160201b8111156102b057600080fd5b8201836020820111156102c257600080fd5b803590602001918460208302840111600160201b831117156102e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561033257600080fd5b82018360208201111561034457600080fd5b803590602001918460208302840111600160201b8311171561036557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460208302840111600160201b831117156103e757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610c08945050505050565b005b34801561043357600080fd5b5061043c610cdb565b6040805163ffffffff9092168252519081900360200190f35b34801561046157600080fd5b506104256004803603602081101561047857600080fd5b5035610ce7565b34801561048b57600080fd5b50610425600480360360208110156104a257600080fd5b50356001600160701b0316610d78565b3480156104be57600080fd5b50610425600480360360408110156104d557600080fd5b506001600160a01b0381358116916020013516610f4c565b3480156104f957600080fd5b506102576004803603602081101561051057600080fd5b50356001600160a01b0316611005565b34801561052c57600080fd5b50610535611058565b604080516001600160701b03909316835260208301919091528051918290030190f35b34801561056457600080fd5b5061058b6004803603602081101561057b57600080fd5b50356001600160a01b03166110dd565b604080516001600160701b03909316835263ffffffff90911660208301528051918290030190f35b3480156105bf57600080fd5b506105c86111d6565b604080516001600160801b039092168252519081900360200190f35b3480156105f057600080fd5b506106176004803603602081101561060757600080fd5b50356001600160a01b03166111ec565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561065357818101518382015260200161063b565b505050509050019250505060405180910390f35b34801561067357600080fd5b5061067c611265565b6040805160ff9092168252519081900360200190f35b34801561069e57600080fd5b506106a7611275565b604080516001600160a01b039092168252519081900360200190f35b3480156106cf57600080fd5b50610425600480360360208110156106e657600080fd5b503560ff16611285565b3480156106fc57600080fd5b506106a76004803603602081101561071357600080fd5b50356112f2565b34801561072657600080fd5b506104256004803603604081101561073d57600080fd5b506001600160701b0381358116916020013516611319565b34801561076157600080fd5b5061076a6113ad565b6040805164ffffffffff9092168252519081900360200190f35b6104256004803603602081101561079a57600080fd5b50356001600160a01b03166113ba565b3480156107b657600080fd5b506107dd600480360360208110156107cd57600080fd5b50356001600160a01b03166113ce565b604080516001600160701b03998a168152978916602089015263ffffffff9096168787015260ff94851660608801529290931660808601526001600160a01b031660a0850152931660c083015264ffffffffff90921660e08201529051908190036101000190f35b61042561143f565b34801561085957600080fd5b506108776004803603602081101561087057600080fd5b503561182c565b604080516001600160701b03968716815260ff958616602082015293909516838601529216606082015263ffffffff909116608082015290519081900360a00190f35b3480156108c657600080fd5b50610257600480360360408110156108dd57600080fd5b5080356001600160a01b0316906020013564ffffffffff1661187c565b34801561090657600080fd5b50610617611ab3565b34801561091b57600080fd5b506104256004803603604081101561093257600080fd5b5067ffffffffffffffff81358116916020013516611b15565b34801561095757600080fd5b506102576004803603602081101561096e57600080fd5b50356001600160a01b0316611c17565b34801561098a57600080fd5b50610425611c78565b34801561099f57600080fd5b506105c8600480360360208110156109b657600080fd5b50356001600160a01b0316611c9b565b3480156109d257600080fd5b50610425600480360360208110156109e957600080fd5b50356001600160a01b0316611d2d565b610425611e30565b60148181548110610a0e57fe5b60009182526020909120600290910201546001600160801b0381169150600160801b900463ffffffff1682565b6001600160a01b0381166000908152600160208190526040822001548190610100900460ff168015610c0157600060156001830360ff1660048110610a7c57fe5b0154600160201b900467ffffffffffffffff16905060005b8260ff168160ff161015610b8e57600060ff821615610ada5760156001830360ff1660048110610ac057fe5b0154600160201b900467ffffffffffffffff169050610ade565b5060005b80830367ffffffffffffffff811615610b84576001600160a01b0388166000908152600160205260409020610b8190620f424090610b599067ffffffffffffffff85169060040160ff881660058110610b3357fe5b6002810491909101546001909116600e026101000a90046001600160701b031690611e7d565b6001600160701b031681610b6957fe5b6001600160701b03891691900463ffffffff611ed116565b95505b5050600101610a94565b508160ff1660041415610bff576001600160a01b0385166000908152600160205260409020610bfc90620f424090610bd49060329060040160ff871660058110610b3357fe5b6001600160701b031681610be457fe5b6001600160701b03861691900463ffffffff611ed116565b92505b505b5092915050565b6000546001600160a01b03163314610c55576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60005b83518167ffffffffffffffff161015610cd557610ccd848267ffffffffffffffff1681518110610c8457fe5b6020026020010151848367ffffffffffffffff1681518110610ca257fe5b6020026020010151848467ffffffffffffffff1681518110610cc057fe5b6020026020010151611f4f565b600101610c58565b50505050565b60035463ffffffff1681565b6000546001600160a01b03163314610d34576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b610d3c611275565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610d74573d6000803e3d6000fd5b5050565b610d8133612205565b601a546001600160701b0390811690821611610dce5760405162461bcd60e51b81526004018080602001828103825260218152602001806130e96021913960400191505060405180910390fd5b336000908152600160205260409020546001600160701b03808316600160701b909204161015610e45576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f756768207061796f757420617661696c61626c650000000000604482015290519081900360640190fd5b3360008181526001602052604080822080546001600160701b03600160701b8083048216889003821602600160701b600160e01b0319909216919091179091559051601460138602831604939291841680156108fc0292909190818181858888f19350505050158015610ebc573d6000803e3d6000fd5b50610ec5611275565b6001600160a01b03166108fc8284036001600160701b03169081150290604051600060405180830381858888f19350505050158015610f08573d6000803e3d6000fd5b50604080516001600160701b0384168152905133917f8e744e2dd83c4621a543ae247f4270575c80f8a1f47342770b3c74b539fe5a25919081900360200190a25050565b6000546001600160a01b03163314610f99576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b0390811660008181526001602081815260408084206002018054808501825590855291842090910180546001600160a01b0319169690951695861790945593815291909120909101805462010000600160b01b03191662010000909202919091179055565b6001600160a01b0381166000908152600160205260408120600301546001600160701b03168161271061103f83600563ffffffff611e7d16565b6001600160701b03168161104f57fe5b04949350505050565b60008080805b336000526001602052600560ff821610156110be5733600090815260016020526040902060040160ff82166005811061109357fe5b60028104909101546001600160701b03600e6001938416026101000a9091041692909201910161105e565b5060006110ca33611c9b565b919350506001600160801b031690509091565b6001600160a01b03811660009081526001602090815260408083206002018054825181850281018501909352808352849360609392919083018282801561114d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161112f575b509394506000935083925050505b82518163ffffffff1610156111c9576111bf60016000858463ffffffff168151811061118357fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020546001600160701b03848116911663ffffffff611ed116565b915060010161115b565b5090519092509050915091565b600354600160201b90046001600160801b031681565b6001600160a01b03811660009081526001602090815260409182902060020180548351818402810184019094528084526060939283018282801561125957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161123b575b50505050509050919050565b601a54600160701b900460ff1681565b6000546001600160a01b03165b90565b6000546001600160a01b031633146112d2576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b601a805460ff909216600160701b0260ff60701b19909216919091179055565b600281815481106112ff57fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314611366576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6019805472ffffffffffffffffffffffffffff00000000001916650100000000006001600160701b0394851602179055601a80546001600160701b03191691909216179055565b60195464ffffffffff1681565b6113c3816123e3565b6113cb61143f565b50565b60016020819052600091825260409091208054918101546003909101546001600160701b0380841693600160701b808204831694600160e01b90920463ffffffff169360ff808416946101008504909116936201000090046001600160a01b031692908216910464ffffffffff1688565b601954336000908152600160205260409020546001600160701b036501000000000090920482169160139160149082160216046001600160701b031610158061149c57506019546501000000000090046001600160701b03163410155b6114d75760405162461bcd60e51b81526004018080602001828103825260218152602001806130c86021913960400191505060405180910390fd5b33600060146114f66001600160701b033416601363ffffffff611e7d16565b6001600160701b03168161150657fe5b6001600160a01b0384166000908152600160205260409020549190049150600160e01b900463ffffffff16151561153b611c78565b80611606576003805463ffffffff198116600163ffffffff92831681018316919091178084556001600160a01b038716600081815260208490526040812080546001600160e01b031693909516600160e01b0292909217845560195493909401805464ffffffffff60701b1916600160701b64ffffffffff958616850190951694909402939093179092556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6001600160a01b038084166000908152600160208190526040909120015462010000900416801561163c5761163c8482856126b0565b811561164b5761164b84612205565b6001600160a01b03841660009081526001602052604090205461167d906001600160701b03168463ffffffff611ed116565b6001600160a01b038516600090815260016020526040902080546001600160701b0319166001600160701b03929092169190911790556116bb611275565b6001600160a01b03166108fc846001600160701b031634039081150290604051600060405180830381858888f193505050501580156116fe573d6000803e3d6000fd5b50604080516001600160701b038516815290516001600160a01b038616917fee1235397c520187c5822e3695d541121e1b177be366da9f84e0e52686fe7404919081900360200190a26117508461282d565b611759846129fe565b6001600160a01b038116156117e8576001600160a01b03811660009081526001602052604090206003015461179d906001600160701b03168463ffffffff611ed116565b6001600160a01b038216600090815260016020526040902060030180546001600160701b0319166001600160701b03929092169190911790556117df8161282d565b6117e8816129fe565b5050600380546001600160801b03600160201b80830482166001600160701b039095169490940116909202640100000000600160a01b031990921691909117905550565b6004816008811061183957fe5b6002020180546001909101546001600160701b03808316935060ff600160701b8404811693600160781b810490921692600160e81b909204169063ffffffff1685565b6014546001600160a01b038316600090815260016020819052604082200154909190829060ff1615611aa9578382035b8264ffffffffff168164ffffffffff161015611aa757600060148264ffffffffff16815481106118d857fe5b600091825260208083206002909202909101546001600160a01b038a168352600190915260408220546014805463ffffffff600160801b9094048416955061197c93869361196793600160e01b909104821685039091169164ffffffffff891690811061194157fe5b60009182526020909120600290910201546001600160801b03169063ffffffff612d8516565b6001600160701b03169063ffffffff612dd816565b9050600080805b6001600160a01b038b166000908152600160208190526040909120015460ff9081169082161015611a7b576000620f42406119e660048460ff16600881106119c757fe5b60020201546001600160701b03881690600160e81b900460ff16611e7d565b6001600160701b0316816119f657fe5b04905060148764ffffffffff1681548110611a0d57fe5b90600052602060002090600202016001018260ff1660088110611a2c57fe5b60088104919091015460079091166004026101000a900463ffffffff1692508215611a7257611a6d6001600160701b03821663ffffffff80861690612dd816565b840193505b50600101611983565b50611a956001600160701b0387168363ffffffff611ed116565b955050600190930192506118ac915050565b505b9150505b92915050565b60606002805480602002602001604051908101604052809291908181526020018280548015611b0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aed575b5050505050905090565b6000546001600160a01b03163314611b62576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60195464ffffffffff166201517f1901825b8260010167ffffffffffffffff168167ffffffffffffffff161015610cd557600060028267ffffffffffffffff1681548110611bac57fe5b6000918252602080832091909101546001600160a01b0316808352600190915260409091208054600160701b600160e01b0319168155600301805464ffffffffff60701b1916600160701b64ffffffffff8716021790559050611c0e81612205565b50600101611b74565b6001600160a01b03811660009081526001602052604081205481906001600160701b03166801a055690d9db800008110611c5457600f9150611c59565b600a91505b61271061103f6001600160701b03831660ff851663ffffffff611e7d16565b60195464ffffffffff908116620151800116421115611c9957611c99612e42565b565b6001600160a01b03811660009081526001602052604081206002015463ffffffff811690825b8163ffffffff168163ffffffff161015610bff576001600160a01b03851660009081526001602052604090206002018054611d21919063ffffffff8416908110611d0757fe5b6000918252602090912001546001600160a01b0316611c9b565b90920191600101611cc1565b6000546001600160a01b03163314611d7a576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b038116611dd5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c99576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60006001600160701b038316611e9557506000611aad565b8282026001600160701b038084169080861690831681611eb157fe5b046001600160701b031614611eca57506001600160701b035b9392505050565b60008282016001600160701b038085169082161015611ef457506001600160701b035b836001600160701b0316816001600160701b03161015611eca576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b6000546001600160a01b03163314611f9c576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b03811615612013576001600160a01b0381811660008181526001602081815260408084206002018054808501825590855291842090910180546001600160a01b0319169589169586179055938252929020909101805462010000600160b01b031916620100009092029190911790555b6003805463ffffffff198116600163ffffffff92831681018316919091178084556001600160a01b03878116600081815260208590526040812080546001600160e01b031694909616600160e01b0293909317855560195494909501805464ffffffffff60701b191664ffffffffff909516600160701b029490941790935560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690921790915582908216156120e5576120e58483836126b0565b6001600160a01b03841660008181526001602090815260409182902080546001600160701b031981166001600160701b0391821687018216179091558251908516815291517fee1235397c520187c5822e3695d541121e1b177be366da9f84e0e52686fe74049281900390910190a261215d8461282d565b612166846129fe565b6001600160a01b038216156121c1576001600160a01b038216600090815260016020526040902060030180546001600160701b038082168401166001600160701b03199091161790556121b88261282d565b6121c1826129fe565b600380546001600160801b03600160201b80830482166001600160701b039095169490940116909202640100000000600160a01b0319909216919091179055505050565b6001600160a01b0381166000908152600160205260408120600301546201518090600160701b900464ffffffffff90811642031604905060018164ffffffffff1610610d7457600061225683611c17565b90506000612264848461187c565b9050600061227185611005565b9050600061227e86610a3b565b905060006122b48261229f6001600160701b0388168663ffffffff611ed116565b6001600160701b03169063ffffffff611ed116565b90506122da8461229f6001600160701b03841664ffffffffff8a1663ffffffff611e7d16565b6001600160a01b03881660009081526001602052604090205490915061231090600160701b90046001600160701b031682611ed1565b6001600160a01b03881660008181526001602090815260409182902080546001600160701b03958616600160701b908102600160701b600160e01b03199092169190911782556003909101805464ffffffffff8382048116620151808f0201811690930264ffffffffff60701b1990911617905582518a861681528886169281019290925288851682840152938616606082015292891660808401525190917fad6cad811e3d40811ce42a12d4ede4f664396c38b44dce2d9b5b1e8ef7ebf360919081900360a00190a250505050505050565b33600090815260016020819052604090912001546001600160a01b0382811662010000909204161415612415576113cb565b33600090815260016020526040902054600160e01b900463ffffffff161580159061247257506001600160a01b0381166000908152600160205260408082205433835291205463ffffffff600160e01b9283900481169290910416105b1561247c576113cb565b33600090815260016020819052604090912001546201000090046001600160a01b0316156124f1576040805162461bcd60e51b815260206004820152601c60248201527f526566657265722063616e206f6e6c7920626520736574206f6e636500000000604482015290519081900360640190fd5b6001600160a01b038116600090815260016020526040902054600160e01b900463ffffffff16612561576040805162461bcd60e51b8152602060048201526016602482015275149959995c995c88191bd95cc81b9bdd08195e1a5cdd60521b604482015290519081900360640190fd5b336001600160a01b03821614156125bf576040805162461bcd60e51b815260206004820152601b60248201527f43616e7420736574206f6e6573656c6620617320726566657265720000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208181526040808420600201805480850182559085529184209091018054336001600160a01b031990911681179091558352909120908101805462010000600160b01b0319166201000090930292909217909155546001600160701b0316156113cb5733600090815260016020526040808220546001600160a01b0384168352912060030154612673916001600160701b03918216911663ffffffff611ed116565b6001600160a01b0391909116600090815260016020526040902060030180546001600160701b0319166001600160701b0392909216919091179055565b6001600160a01b03831660009081526001602081905260409091200154601a548391610100900460ff90811691600160701b900416600019015b6001600160a01b03831615801590612705575060008160ff16115b156128255761271383612205565b6001600160a01b038316600090815260016020526040902061276890859060040160ff85166005811061274257fe5b6002810491909101546001909116600e026101000a90046001600160701b031690611ed1565b6001600160a01b038416600090815260016020526040902060040160ff84166005811061279157fe5b6002810490910180546001600160701b03938416600e60019485160261010090810a91820295909102199091169390931790556001600160a01b0385166000908152602082905260409020015460ff91900481169083168111156127f3578092505b506001600160a01b039283166000908152600160208190526040909120015462010000900490921691600019016126ea565b505050505050565b6001600160a01b03811660009081526001602081905260409091200154600860ff90911610156113cb576001600160a01b03811660009081526001602081905260409091209081015460039091015460ff909116906001600160701b03166004826008811061289857fe5b60020201546001600160a01b0384166000908152600160205260409020546001600160701b03918216911610801590612910575060048260ff16600881106128dc57fe5b600290810291909101546001600160a01b038516600090815260016020526040902090910154600160701b90910460ff1611155b8015612944575060048260ff166008811061292757fe5b60020201546001600160701b03600160781b909104811690821610155b156129f9576001600160a01b03831660009081526001602081905260409091208101805460ff928501831660ff1990911617905560049083166008811061298757fe5b600202016001908101805463ffffffff19811663ffffffff91821684019091161790556040805191840160ff168252516001600160a01b038516917f60e1bbc5f71b269e8eea4974b783c669d335c399505e362c930a83010670a7bc916020918190039190910190a26129f98361282d565b505050565b6001600160a01b03811660009081526001602081905260409091200154610100900460ff166004811015610d745760158160ff1660048110612a3c57fe5b01546001600160a01b0383166000908152600160208190526040909120015463ffffffff90911660ff90911610610d74576001600160a01b03821660009081526001602081905260408220808201805460ff61010080830482169095011690930261ff001990931692909217909155546001600160701b0316905b8260ff168160ff1611612b23576001600160a01b0384166000908152600160205260409020612b199060040160ff831660058110612af157fe5b6002810491909101546001600160701b0385811692600116600e026101000a90910416611ed1565b9150600101612ab7565b506001600160a01b038084166000908152600160208190526040909120810154908401918491620100009004165b6001600160a01b03811615612d23576001600160a01b0381166000908152600160205260409020612bb590859060040160ff851660058110612b8f57fe5b6002810491909101546001909116600e026101000a90046001600160701b031690612fa1565b6001600160a01b038216600090815260016020526040902060040160ff841660058110612bde57fe5b60029182820401919006600e026101000a8154816001600160701b0302191690836001600160701b03160217905550612c478460016000846001600160a01b03166001600160a01b031681526020019081526020016000206004018560ff166005811061274257fe5b6001600160a01b038216600090815260016020526040902060040160ff851660058110612c7057fe5b6002810490910180546001600160701b03938416600e60019485160261010090810a91820295909102199091169390931790556001600160a01b0383166000908152602082905260409020015460ff9190048116908416811115612cd2578093505b8260ff168160ff161115612ce4578092505b8360ff168360ff161415612cf85750612d23565b506001600160a01b039081166000908152600160208190526040909120015462010000900416612b51565b6001600160a01b03861660008181526001602081815260409283902090910154825161010090910460ff16815291517fcf2e211ce866f42c8c8dce1304596b0b929b1e58f9315782584468eac4a4eb139281900390910190a2612825866129fe565b60006001600160801b038316612d9d57506000611aad565b8282026001600160801b038084169080861690831681612db957fe5b046001600160801b031614611eca57506001600160801b039392505050565b600080826001600160701b031611612e25576040805162461bcd60e51b815260206004820152600b60248201526a646976206279207a65726f60a81b604482015290519081900360640190fd5b6000826001600160701b0316846001600160701b03168161104f57fe5b612e4a612fcb565b60005b60088160ff161015612e9e5760048160ff1660088110612e6957fe5b600202016001015463ffffffff168260ff831660088110612e8657fe5b63ffffffff9092166020929092020152600101612e4d565b50604080516060810182526003546001600160801b03600160201b82048116835263ffffffff9182166020840190815293830185815260148054600181018255600091909152845160029091027fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec810180549751909516600160801b0263ffffffff60801b19929094166fffffffffffffffffffffffffffffffff1990971696909617169190911782555191929091612f7b917fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed01906008612fea565b50506019805464ffffffffff80821662015180011664ffffffffff199091161790555050565b6000826001600160701b0316826001600160701b03161115612fc557506000611aad565b50900390565b6040518061010001604052806008906020820280368337509192915050565b6001830191839082156130765791602002820160005b8382111561304457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302613000565b80156130745782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613044565b505b50613082929150613086565b5090565b61128291905b8082111561308257805463ffffffff1916815560010161308c56fe43616c6c6572206973206e6f7420746865206f776e65720000000000000000004d696e696e756d206465706f7369742076616c7565206e6f7420726561636865644d696e696d756d205769746864726177616c20616d6f756e74206e6f74206d6574a26469706673582212203308b1e7b8de86828bb4364b984ebc2998672bab6b7e8078dc8281d9de3bf97964736f6c63430006080033

Deployed Bytecode

0x6080604052600436106101cd5760003560e01c80639f4216e8116100f7578063b1c2bec111610095578063bebb1f7211610064578063bebb1f721461097e578063ece7738414610993578063f2fde38b146109c6578063fdb5a03e146109f9576101cd565b8063b1c2bec1146108ba578063b8522043146108fa578063b9aa04291461090f578063bb6f2ca51461094b576101cd565b8063a60b73f2116100d1578063a60b73f214610784578063a87430ba146107aa578063a9e10bf214610845578063ac4afa381461084d576101cd565b80639f4216e8146106f0578063a041913d1461071a578063a198341614610755576101cd565b80634818a49c1161016f578063575cea6b1161013e578063575cea6b146105e45780637c59f6cb146106675780638da5cb5b14610692578063936248bf146106c3576101cd565b80634818a49c146104ed5780634bcbc3e6146105205780634bd62586146105585780634e53385a146105b3576101cd565b806325fced97116101ab57806325fced97146104275780632afcf480146104555780633bc0e4b81461047f5780634134650b146104b2576101cd565b8063017a9105146101d2578063131c1789146102245780631737536a14610273575b600080fd5b3480156101de57600080fd5b506101fc600480360360208110156101f557600080fd5b5035610a01565b604080516001600160801b03909316835263ffffffff90911660208301528051918290030190f35b34801561023057600080fd5b506102576004803603602081101561024757600080fd5b50356001600160a01b0316610a3b565b604080516001600160701b039092168252519081900360200190f35b34801561027f57600080fd5b506104256004803603606081101561029657600080fd5b810190602081018135600160201b8111156102b057600080fd5b8201836020820111156102c257600080fd5b803590602001918460208302840111600160201b831117156102e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561033257600080fd5b82018360208201111561034457600080fd5b803590602001918460208302840111600160201b8311171561036557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460208302840111600160201b831117156103e757600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610c08945050505050565b005b34801561043357600080fd5b5061043c610cdb565b6040805163ffffffff9092168252519081900360200190f35b34801561046157600080fd5b506104256004803603602081101561047857600080fd5b5035610ce7565b34801561048b57600080fd5b50610425600480360360208110156104a257600080fd5b50356001600160701b0316610d78565b3480156104be57600080fd5b50610425600480360360408110156104d557600080fd5b506001600160a01b0381358116916020013516610f4c565b3480156104f957600080fd5b506102576004803603602081101561051057600080fd5b50356001600160a01b0316611005565b34801561052c57600080fd5b50610535611058565b604080516001600160701b03909316835260208301919091528051918290030190f35b34801561056457600080fd5b5061058b6004803603602081101561057b57600080fd5b50356001600160a01b03166110dd565b604080516001600160701b03909316835263ffffffff90911660208301528051918290030190f35b3480156105bf57600080fd5b506105c86111d6565b604080516001600160801b039092168252519081900360200190f35b3480156105f057600080fd5b506106176004803603602081101561060757600080fd5b50356001600160a01b03166111ec565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561065357818101518382015260200161063b565b505050509050019250505060405180910390f35b34801561067357600080fd5b5061067c611265565b6040805160ff9092168252519081900360200190f35b34801561069e57600080fd5b506106a7611275565b604080516001600160a01b039092168252519081900360200190f35b3480156106cf57600080fd5b50610425600480360360208110156106e657600080fd5b503560ff16611285565b3480156106fc57600080fd5b506106a76004803603602081101561071357600080fd5b50356112f2565b34801561072657600080fd5b506104256004803603604081101561073d57600080fd5b506001600160701b0381358116916020013516611319565b34801561076157600080fd5b5061076a6113ad565b6040805164ffffffffff9092168252519081900360200190f35b6104256004803603602081101561079a57600080fd5b50356001600160a01b03166113ba565b3480156107b657600080fd5b506107dd600480360360208110156107cd57600080fd5b50356001600160a01b03166113ce565b604080516001600160701b03998a168152978916602089015263ffffffff9096168787015260ff94851660608801529290931660808601526001600160a01b031660a0850152931660c083015264ffffffffff90921660e08201529051908190036101000190f35b61042561143f565b34801561085957600080fd5b506108776004803603602081101561087057600080fd5b503561182c565b604080516001600160701b03968716815260ff958616602082015293909516838601529216606082015263ffffffff909116608082015290519081900360a00190f35b3480156108c657600080fd5b50610257600480360360408110156108dd57600080fd5b5080356001600160a01b0316906020013564ffffffffff1661187c565b34801561090657600080fd5b50610617611ab3565b34801561091b57600080fd5b506104256004803603604081101561093257600080fd5b5067ffffffffffffffff81358116916020013516611b15565b34801561095757600080fd5b506102576004803603602081101561096e57600080fd5b50356001600160a01b0316611c17565b34801561098a57600080fd5b50610425611c78565b34801561099f57600080fd5b506105c8600480360360208110156109b657600080fd5b50356001600160a01b0316611c9b565b3480156109d257600080fd5b50610425600480360360208110156109e957600080fd5b50356001600160a01b0316611d2d565b610425611e30565b60148181548110610a0e57fe5b60009182526020909120600290910201546001600160801b0381169150600160801b900463ffffffff1682565b6001600160a01b0381166000908152600160208190526040822001548190610100900460ff168015610c0157600060156001830360ff1660048110610a7c57fe5b0154600160201b900467ffffffffffffffff16905060005b8260ff168160ff161015610b8e57600060ff821615610ada5760156001830360ff1660048110610ac057fe5b0154600160201b900467ffffffffffffffff169050610ade565b5060005b80830367ffffffffffffffff811615610b84576001600160a01b0388166000908152600160205260409020610b8190620f424090610b599067ffffffffffffffff85169060040160ff881660058110610b3357fe5b6002810491909101546001909116600e026101000a90046001600160701b031690611e7d565b6001600160701b031681610b6957fe5b6001600160701b03891691900463ffffffff611ed116565b95505b5050600101610a94565b508160ff1660041415610bff576001600160a01b0385166000908152600160205260409020610bfc90620f424090610bd49060329060040160ff871660058110610b3357fe5b6001600160701b031681610be457fe5b6001600160701b03861691900463ffffffff611ed116565b92505b505b5092915050565b6000546001600160a01b03163314610c55576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60005b83518167ffffffffffffffff161015610cd557610ccd848267ffffffffffffffff1681518110610c8457fe5b6020026020010151848367ffffffffffffffff1681518110610ca257fe5b6020026020010151848467ffffffffffffffff1681518110610cc057fe5b6020026020010151611f4f565b600101610c58565b50505050565b60035463ffffffff1681565b6000546001600160a01b03163314610d34576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b610d3c611275565b6001600160a01b03166108fc829081150290604051600060405180830381858888f19350505050158015610d74573d6000803e3d6000fd5b5050565b610d8133612205565b601a546001600160701b0390811690821611610dce5760405162461bcd60e51b81526004018080602001828103825260218152602001806130e96021913960400191505060405180910390fd5b336000908152600160205260409020546001600160701b03808316600160701b909204161015610e45576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f756768207061796f757420617661696c61626c650000000000604482015290519081900360640190fd5b3360008181526001602052604080822080546001600160701b03600160701b8083048216889003821602600160701b600160e01b0319909216919091179091559051601460138602831604939291841680156108fc0292909190818181858888f19350505050158015610ebc573d6000803e3d6000fd5b50610ec5611275565b6001600160a01b03166108fc8284036001600160701b03169081150290604051600060405180830381858888f19350505050158015610f08573d6000803e3d6000fd5b50604080516001600160701b0384168152905133917f8e744e2dd83c4621a543ae247f4270575c80f8a1f47342770b3c74b539fe5a25919081900360200190a25050565b6000546001600160a01b03163314610f99576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b0390811660008181526001602081815260408084206002018054808501825590855291842090910180546001600160a01b0319169690951695861790945593815291909120909101805462010000600160b01b03191662010000909202919091179055565b6001600160a01b0381166000908152600160205260408120600301546001600160701b03168161271061103f83600563ffffffff611e7d16565b6001600160701b03168161104f57fe5b04949350505050565b60008080805b336000526001602052600560ff821610156110be5733600090815260016020526040902060040160ff82166005811061109357fe5b60028104909101546001600160701b03600e6001938416026101000a9091041692909201910161105e565b5060006110ca33611c9b565b919350506001600160801b031690509091565b6001600160a01b03811660009081526001602090815260408083206002018054825181850281018501909352808352849360609392919083018282801561114d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161112f575b509394506000935083925050505b82518163ffffffff1610156111c9576111bf60016000858463ffffffff168151811061118357fe5b6020908102919091018101516001600160a01b03168252810191909152604001600020546001600160701b03848116911663ffffffff611ed116565b915060010161115b565b5090519092509050915091565b600354600160201b90046001600160801b031681565b6001600160a01b03811660009081526001602090815260409182902060020180548351818402810184019094528084526060939283018282801561125957602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161123b575b50505050509050919050565b601a54600160701b900460ff1681565b6000546001600160a01b03165b90565b6000546001600160a01b031633146112d2576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b601a805460ff909216600160701b0260ff60701b19909216919091179055565b600281815481106112ff57fe5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314611366576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6019805472ffffffffffffffffffffffffffff00000000001916650100000000006001600160701b0394851602179055601a80546001600160701b03191691909216179055565b60195464ffffffffff1681565b6113c3816123e3565b6113cb61143f565b50565b60016020819052600091825260409091208054918101546003909101546001600160701b0380841693600160701b808204831694600160e01b90920463ffffffff169360ff808416946101008504909116936201000090046001600160a01b031692908216910464ffffffffff1688565b601954336000908152600160205260409020546001600160701b036501000000000090920482169160139160149082160216046001600160701b031610158061149c57506019546501000000000090046001600160701b03163410155b6114d75760405162461bcd60e51b81526004018080602001828103825260218152602001806130c86021913960400191505060405180910390fd5b33600060146114f66001600160701b033416601363ffffffff611e7d16565b6001600160701b03168161150657fe5b6001600160a01b0384166000908152600160205260409020549190049150600160e01b900463ffffffff16151561153b611c78565b80611606576003805463ffffffff198116600163ffffffff92831681018316919091178084556001600160a01b038716600081815260208490526040812080546001600160e01b031693909516600160e01b0292909217845560195493909401805464ffffffffff60701b1916600160701b64ffffffffff958616850190951694909402939093179092556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690911790555b6001600160a01b038084166000908152600160208190526040909120015462010000900416801561163c5761163c8482856126b0565b811561164b5761164b84612205565b6001600160a01b03841660009081526001602052604090205461167d906001600160701b03168463ffffffff611ed116565b6001600160a01b038516600090815260016020526040902080546001600160701b0319166001600160701b03929092169190911790556116bb611275565b6001600160a01b03166108fc846001600160701b031634039081150290604051600060405180830381858888f193505050501580156116fe573d6000803e3d6000fd5b50604080516001600160701b038516815290516001600160a01b038616917fee1235397c520187c5822e3695d541121e1b177be366da9f84e0e52686fe7404919081900360200190a26117508461282d565b611759846129fe565b6001600160a01b038116156117e8576001600160a01b03811660009081526001602052604090206003015461179d906001600160701b03168463ffffffff611ed116565b6001600160a01b038216600090815260016020526040902060030180546001600160701b0319166001600160701b03929092169190911790556117df8161282d565b6117e8816129fe565b5050600380546001600160801b03600160201b80830482166001600160701b039095169490940116909202640100000000600160a01b031990921691909117905550565b6004816008811061183957fe5b6002020180546001909101546001600160701b03808316935060ff600160701b8404811693600160781b810490921692600160e81b909204169063ffffffff1685565b6014546001600160a01b038316600090815260016020819052604082200154909190829060ff1615611aa9578382035b8264ffffffffff168164ffffffffff161015611aa757600060148264ffffffffff16815481106118d857fe5b600091825260208083206002909202909101546001600160a01b038a168352600190915260408220546014805463ffffffff600160801b9094048416955061197c93869361196793600160e01b909104821685039091169164ffffffffff891690811061194157fe5b60009182526020909120600290910201546001600160801b03169063ffffffff612d8516565b6001600160701b03169063ffffffff612dd816565b9050600080805b6001600160a01b038b166000908152600160208190526040909120015460ff9081169082161015611a7b576000620f42406119e660048460ff16600881106119c757fe5b60020201546001600160701b03881690600160e81b900460ff16611e7d565b6001600160701b0316816119f657fe5b04905060148764ffffffffff1681548110611a0d57fe5b90600052602060002090600202016001018260ff1660088110611a2c57fe5b60088104919091015460079091166004026101000a900463ffffffff1692508215611a7257611a6d6001600160701b03821663ffffffff80861690612dd816565b840193505b50600101611983565b50611a956001600160701b0387168363ffffffff611ed116565b955050600190930192506118ac915050565b505b9150505b92915050565b60606002805480602002602001604051908101604052809291908181526020018280548015611b0b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611aed575b5050505050905090565b6000546001600160a01b03163314611b62576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60195464ffffffffff166201517f1901825b8260010167ffffffffffffffff168167ffffffffffffffff161015610cd557600060028267ffffffffffffffff1681548110611bac57fe5b6000918252602080832091909101546001600160a01b0316808352600190915260409091208054600160701b600160e01b0319168155600301805464ffffffffff60701b1916600160701b64ffffffffff8716021790559050611c0e81612205565b50600101611b74565b6001600160a01b03811660009081526001602052604081205481906001600160701b03166801a055690d9db800008110611c5457600f9150611c59565b600a91505b61271061103f6001600160701b03831660ff851663ffffffff611e7d16565b60195464ffffffffff908116620151800116421115611c9957611c99612e42565b565b6001600160a01b03811660009081526001602052604081206002015463ffffffff811690825b8163ffffffff168163ffffffff161015610bff576001600160a01b03851660009081526001602052604090206002018054611d21919063ffffffff8416908110611d0757fe5b6000918252602090912001546001600160a01b0316611c9b565b90920191600101611cc1565b6000546001600160a01b03163314611d7a576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b038116611dd5576040805162461bcd60e51b815260206004820152601d60248201527f4e6577206f776e657220697320746865207a65726f2061646472657373000000604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611c99576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b60006001600160701b038316611e9557506000611aad565b8282026001600160701b038084169080861690831681611eb157fe5b046001600160701b031614611eca57506001600160701b035b9392505050565b60008282016001600160701b038085169082161015611ef457506001600160701b035b836001600160701b0316816001600160701b03161015611eca576040805162461bcd60e51b81526020600482015260116024820152706164646974696f6e206f766572666c6f7760781b604482015290519081900360640190fd5b6000546001600160a01b03163314611f9c576040805162461bcd60e51b815260206004820152601760248201526000805160206130a8833981519152604482015290519081900360640190fd5b6001600160a01b03811615612013576001600160a01b0381811660008181526001602081815260408084206002018054808501825590855291842090910180546001600160a01b0319169589169586179055938252929020909101805462010000600160b01b031916620100009092029190911790555b6003805463ffffffff198116600163ffffffff92831681018316919091178084556001600160a01b03878116600081815260208590526040812080546001600160e01b031694909616600160e01b0293909317855560195494909501805464ffffffffff60701b191664ffffffffff909516600160701b029490941790935560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b03191690921790915582908216156120e5576120e58483836126b0565b6001600160a01b03841660008181526001602090815260409182902080546001600160701b031981166001600160701b0391821687018216179091558251908516815291517fee1235397c520187c5822e3695d541121e1b177be366da9f84e0e52686fe74049281900390910190a261215d8461282d565b612166846129fe565b6001600160a01b038216156121c1576001600160a01b038216600090815260016020526040902060030180546001600160701b038082168401166001600160701b03199091161790556121b88261282d565b6121c1826129fe565b600380546001600160801b03600160201b80830482166001600160701b039095169490940116909202640100000000600160a01b0319909216919091179055505050565b6001600160a01b0381166000908152600160205260408120600301546201518090600160701b900464ffffffffff90811642031604905060018164ffffffffff1610610d7457600061225683611c17565b90506000612264848461187c565b9050600061227185611005565b9050600061227e86610a3b565b905060006122b48261229f6001600160701b0388168663ffffffff611ed116565b6001600160701b03169063ffffffff611ed116565b90506122da8461229f6001600160701b03841664ffffffffff8a1663ffffffff611e7d16565b6001600160a01b03881660009081526001602052604090205490915061231090600160701b90046001600160701b031682611ed1565b6001600160a01b03881660008181526001602090815260409182902080546001600160701b03958616600160701b908102600160701b600160e01b03199092169190911782556003909101805464ffffffffff8382048116620151808f0201811690930264ffffffffff60701b1990911617905582518a861681528886169281019290925288851682840152938616606082015292891660808401525190917fad6cad811e3d40811ce42a12d4ede4f664396c38b44dce2d9b5b1e8ef7ebf360919081900360a00190a250505050505050565b33600090815260016020819052604090912001546001600160a01b0382811662010000909204161415612415576113cb565b33600090815260016020526040902054600160e01b900463ffffffff161580159061247257506001600160a01b0381166000908152600160205260408082205433835291205463ffffffff600160e01b9283900481169290910416105b1561247c576113cb565b33600090815260016020819052604090912001546201000090046001600160a01b0316156124f1576040805162461bcd60e51b815260206004820152601c60248201527f526566657265722063616e206f6e6c7920626520736574206f6e636500000000604482015290519081900360640190fd5b6001600160a01b038116600090815260016020526040902054600160e01b900463ffffffff16612561576040805162461bcd60e51b8152602060048201526016602482015275149959995c995c88191bd95cc81b9bdd08195e1a5cdd60521b604482015290519081900360640190fd5b336001600160a01b03821614156125bf576040805162461bcd60e51b815260206004820152601b60248201527f43616e7420736574206f6e6573656c6620617320726566657265720000000000604482015290519081900360640190fd5b6001600160a01b0381166000818152600160208181526040808420600201805480850182559085529184209091018054336001600160a01b031990911681179091558352909120908101805462010000600160b01b0319166201000090930292909217909155546001600160701b0316156113cb5733600090815260016020526040808220546001600160a01b0384168352912060030154612673916001600160701b03918216911663ffffffff611ed116565b6001600160a01b0391909116600090815260016020526040902060030180546001600160701b0319166001600160701b0392909216919091179055565b6001600160a01b03831660009081526001602081905260409091200154601a548391610100900460ff90811691600160701b900416600019015b6001600160a01b03831615801590612705575060008160ff16115b156128255761271383612205565b6001600160a01b038316600090815260016020526040902061276890859060040160ff85166005811061274257fe5b6002810491909101546001909116600e026101000a90046001600160701b031690611ed1565b6001600160a01b038416600090815260016020526040902060040160ff84166005811061279157fe5b6002810490910180546001600160701b03938416600e60019485160261010090810a91820295909102199091169390931790556001600160a01b0385166000908152602082905260409020015460ff91900481169083168111156127f3578092505b506001600160a01b039283166000908152600160208190526040909120015462010000900490921691600019016126ea565b505050505050565b6001600160a01b03811660009081526001602081905260409091200154600860ff90911610156113cb576001600160a01b03811660009081526001602081905260409091209081015460039091015460ff909116906001600160701b03166004826008811061289857fe5b60020201546001600160a01b0384166000908152600160205260409020546001600160701b03918216911610801590612910575060048260ff16600881106128dc57fe5b600290810291909101546001600160a01b038516600090815260016020526040902090910154600160701b90910460ff1611155b8015612944575060048260ff166008811061292757fe5b60020201546001600160701b03600160781b909104811690821610155b156129f9576001600160a01b03831660009081526001602081905260409091208101805460ff928501831660ff1990911617905560049083166008811061298757fe5b600202016001908101805463ffffffff19811663ffffffff91821684019091161790556040805191840160ff168252516001600160a01b038516917f60e1bbc5f71b269e8eea4974b783c669d335c399505e362c930a83010670a7bc916020918190039190910190a26129f98361282d565b505050565b6001600160a01b03811660009081526001602081905260409091200154610100900460ff166004811015610d745760158160ff1660048110612a3c57fe5b01546001600160a01b0383166000908152600160208190526040909120015463ffffffff90911660ff90911610610d74576001600160a01b03821660009081526001602081905260408220808201805460ff61010080830482169095011690930261ff001990931692909217909155546001600160701b0316905b8260ff168160ff1611612b23576001600160a01b0384166000908152600160205260409020612b199060040160ff831660058110612af157fe5b6002810491909101546001600160701b0385811692600116600e026101000a90910416611ed1565b9150600101612ab7565b506001600160a01b038084166000908152600160208190526040909120810154908401918491620100009004165b6001600160a01b03811615612d23576001600160a01b0381166000908152600160205260409020612bb590859060040160ff851660058110612b8f57fe5b6002810491909101546001909116600e026101000a90046001600160701b031690612fa1565b6001600160a01b038216600090815260016020526040902060040160ff841660058110612bde57fe5b60029182820401919006600e026101000a8154816001600160701b0302191690836001600160701b03160217905550612c478460016000846001600160a01b03166001600160a01b031681526020019081526020016000206004018560ff166005811061274257fe5b6001600160a01b038216600090815260016020526040902060040160ff851660058110612c7057fe5b6002810490910180546001600160701b03938416600e60019485160261010090810a91820295909102199091169390931790556001600160a01b0383166000908152602082905260409020015460ff9190048116908416811115612cd2578093505b8260ff168160ff161115612ce4578092505b8360ff168360ff161415612cf85750612d23565b506001600160a01b039081166000908152600160208190526040909120015462010000900416612b51565b6001600160a01b03861660008181526001602081815260409283902090910154825161010090910460ff16815291517fcf2e211ce866f42c8c8dce1304596b0b929b1e58f9315782584468eac4a4eb139281900390910190a2612825866129fe565b60006001600160801b038316612d9d57506000611aad565b8282026001600160801b038084169080861690831681612db957fe5b046001600160801b031614611eca57506001600160801b039392505050565b600080826001600160701b031611612e25576040805162461bcd60e51b815260206004820152600b60248201526a646976206279207a65726f60a81b604482015290519081900360640190fd5b6000826001600160701b0316846001600160701b03168161104f57fe5b612e4a612fcb565b60005b60088160ff161015612e9e5760048160ff1660088110612e6957fe5b600202016001015463ffffffff168260ff831660088110612e8657fe5b63ffffffff9092166020929092020152600101612e4d565b50604080516060810182526003546001600160801b03600160201b82048116835263ffffffff9182166020840190815293830185815260148054600181018255600091909152845160029091027fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec810180549751909516600160801b0263ffffffff60801b19929094166fffffffffffffffffffffffffffffffff1990971696909617169190911782555191929091612f7b917fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ed01906008612fea565b50506019805464ffffffffff80821662015180011664ffffffffff199091161790555050565b6000826001600160701b0316826001600160701b03161115612fc557506000611aad565b50900390565b6040518061010001604052806008906020820280368337509192915050565b6001830191839082156130765791602002820160005b8382111561304457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302613000565b80156130745782816101000a81549063ffffffff0219169055600401602081600301049283019260010302613044565b505b50613082929150613086565b5090565b61128291905b8082111561308257805463ffffffff1916815560010161308c56fe43616c6c6572206973206e6f7420746865206f776e65720000000000000000004d696e696e756d206465706f7369742076616c7565206e6f7420726561636865644d696e696d756d205769746864726177616c20616d6f756e74206e6f74206d6574a26469706673582212203308b1e7b8de86828bb4364b984ebc2998672bab6b7e8078dc8281d9de3bf97964736f6c63430006080033

Deployed Bytecode Sourcemap

5581:17506:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;6874:25:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6874:25:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6874:25:0;;:::i;:::-;;;;-1:-1:-1;;;;;6874:25:0;;;;;;;;;;;;;;;;;;;;;;13287:1169;;5:9:-1;2:2;;;27:1;24;17:12;2:2;13287:1169:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;13287:1169:0;-1:-1:-1;;;;;13287:1169:0;;:::i;:::-;;;;-1:-1:-1;;;;;13287:1169:0;;;;;;;;;;;;;;21368:244;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21368:244:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;21368:244:0;;;;;;;;-1:-1:-1;;;11:28;;8:2;;;52:1;49;42:12;8:2;21368:244:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;21368:244:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21368:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21368:244:0;;;;;;;;-1:-1:-1;21368:244:0;;-1:-1:-1;;;;;11:28;;8:2;;;52:1;49;42:12;8:2;21368:244:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;21368:244:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21368:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21368:244:0;;;;;;;;-1:-1:-1;21368:244:0;;-1:-1:-1;;;;;11:28;;8:2;;;52:1;49;42:12;8:2;21368:244:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;21368:244:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;21368:244:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;21368:244:0;;-1:-1:-1;21368:244:0;;-1:-1:-1;;;;;21368:244:0:i;:::-;;6582:26;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6582:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19671:108;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19671:108:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;19671:108:0;;:::i;18277:557::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18277:557:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;18277:557:0;-1:-1:-1;;;;;18277:557:0;;:::i;20135:165::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20135:165:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;20135:165:0;;;;;;;;;;:::i;14464:297::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14464:297:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;14464:297:0;-1:-1:-1;;;;;14464:297:0;;:::i;20327:331::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20327:331:0;;;:::i;:::-;;;;-1:-1:-1;;;;;20327:331:0;;;;;;;;;;;;;;;;;;;;;17840:389;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17840:389:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17840:389:0;-1:-1:-1;;;;;17840:389:0;;:::i;:::-;;;;-1:-1:-1;;;;;17840:389:0;;;;;;;;;;;;;;;;;;;;;;6621:25;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6621:25:0;;;:::i;:::-;;;;-1:-1:-1;;;;;6621:25:0;;;;;;;;;;;;;;22653:133;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22653:133:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;22653:133:0;-1:-1:-1;;;;;22653:133:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22653:133:0;;;;;;;;;;;;;;;;;10129:31;;5:9:-1;2:2;;;27:1;24;17:12;2:2;10129:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4644:79;;5:9:-1;2:2;;;27:1;24;17:12;2:2;4644:79:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4644:79:0;;;;;;;;;;;;;;20027:96;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20027:96:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20027:96:0;;;;:::i;6548:25::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6548:25:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6548:25:0;;:::i;19856:163::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;19856:163:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;;;;;19856:163:0;;;;;;;;;;:::i;7190:28::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;7190:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9992:129;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;9992:129:0;-1:-1:-1;;;;;9992:129:0;;:::i;6503:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6503:38:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6503:38:0;-1:-1:-1;;;;;6503:38:0;;:::i;:::-;;;;-1:-1:-1;;;;;6503:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6503:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8330:1644;;;:::i;6659:20::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;6659:20:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;6659:20:0;;:::i;:::-;;;;-1:-1:-1;;;;;6659:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12201:1078;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12201:1078:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12201:1078:0;;-1:-1:-1;;;;;12201:1078:0;;;;;;;;:::i;22798:123::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22798:123:0;;;:::i;21009:347::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21009:347:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;21009:347:0;;;;;;;;;;;:::i;11844:345::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;11844:345:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;11844:345:0;-1:-1:-1;;;;;11844:345:0;;:::i;22933:151::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22933:151:0;;;:::i;20666:331::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20666:331:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;20666:331:0;-1:-1:-1;;;;;20666:331:0;;:::i;5079:227::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;5079:227:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;5079:227:0;-1:-1:-1;;;;;5079:227:0;;:::i;19791:53::-;;;:::i;6874:25::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6874:25:0;;;-1:-1:-1;;;;6874:25:0;;;;;:::o;13287:1169::-;-1:-1:-1;;;;;13474:10:0;;13348:7;13474:10;;;:5;:10;;;;;;;:24;;13348:7;;13474:24;;;;;13522:17;;13519:886;;13569:20;13592:15;13624:1;13608:13;:17;13592:34;;;;;;;;;;:46;-1:-1:-1;;;13592:46:0;;;;;-1:-1:-1;13592:46:0;13655:568;13677:13;13673:17;;:1;:17;;;13655:568;;;13717:12;13755:5;;;;13752:150;;13792:15;13812:1;13808;:5;13792:22;;;;;;;;;;:34;-1:-1:-1;;;13792:34:0;;;;;-1:-1:-1;13752:150:0;;;-1:-1:-1;13881:1:0;13752:150;13942:21;;;13985:14;;;;13982:224;;-1:-1:-1;;;;;14127:10:0;;;;;;:5;:10;;;;;14108:75;;14175:7;;14127:45;;;;;;:26;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14127:29:0;;:33;:45::i;:::-;-1:-1:-1;;;;;14127:55:0;;;;;;-1:-1:-1;;;;;14108:18:0;;;14127:55;;14108:75;:18;:75;:::i;:::-;14091:92;;13982:224;-1:-1:-1;;13692:3:0;;13655:568;;;;14242:13;:18;;14259:1;14242:18;14239:153;;;-1:-1:-1;;;;;14316:10:0;;;;;;:5;:10;;;;;14297:79;;14368:7;;14316:49;;14362:2;;14316:26;;:41;;;;;;;;;:49;-1:-1:-1;;;;;14316:59:0;;;;;;-1:-1:-1;;;;;14297:18:0;;;14316:59;;14297:79;:18;:79;:::i;:::-;14280:96;;14239:153;13519:886;;-1:-1:-1;14424:14:0;13287:1169;-1:-1:-1;;13287:1169:0:o;21368:244::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;21494:8:::1;21490:115;21513:6;:13;21509:1;:17;;;21490:115;;;21548:45;21559:6;21566:1;21559:9;;;;;;;;;;;;;;;;21570:7;21578:1;21570:10;;;;;;;;;;;;;;;;21582:7;21590:1;21582:10;;;;;;;;;;;;;;;;21548;:45::i;:::-;21529:3;;21490:115;;;;21368:244:::0;;;:::o;6582:26::-;;;;;;:::o;19671:108::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;19746:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;19738:25:0::1;:33;19764:6;19738:33;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19738:33:0;19671:108:::0;:::o;18277:557::-;18339:24;18352:10;18339:12;:24::i;:::-;18393:11;;-1:-1:-1;;;;;18393:11:0;;;18384:20;;;;18376:66;;;;-1:-1:-1;;;18376:66:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18467:10;18461:17;;;;:5;:17;;;;;:24;-1:-1:-1;;;;;18461:34:0;;;-1:-1:-1;;;18461:24:0;;;;:34;;18453:74;;;;;-1:-1:-1;;;18453:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18610:10;18548:16;18604:17;;;:5;:17;;;;;;:34;;-1:-1:-1;;;;;;;;18604:34:0;;;;;;;;;;;-1:-1:-1;;;;;;;;18604:34:0;;;;;;;;;;18659:38;;18581:2;18576;18567:11;;:16;;;;18610:10;18659:38;;;;;;;;;;;;18548:16;18659:38;;18610:10;18659:38;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18659:38:0;18726:7;:5;:7::i;:::-;-1:-1:-1;;;;;18718:25:0;:44;18753:8;18744:6;:17;-1:-1:-1;;;;;18718:44:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;18788:28:0;;;-1:-1:-1;;;;;18788:28:0;;;;;;18797:10;;18788:28;;;;;;;;;;18277:557;;:::o;20135:165::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;20219:14:0;;::::1;;::::0;;;:5:::1;:14;::::0;;;;;;;:24:::1;;27:10:-1::0;;23:18;;::::1;45:23:::0;;20219:34:0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;20219:34:0::1;::::0;;;::::1;::::0;;::::1;::::0;;;20264:10;;;;;;;:18;;::::1;:28:::0;;-1:-1:-1;;;;;;20264:28:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;20135:165::o;14464:297::-;-1:-1:-1;;;;;14619:10:0;;14524:7;14619:10;;;:5;:10;;;;;:20;;;-1:-1:-1;;;;;14619:20:0;14524:7;14703:5;14676:24;14619:20;14698:1;14676:24;:21;:24;:::i;:::-;-1:-1:-1;;;;;14676:32:0;;;;;;;;14464:297;-1:-1:-1;;;;14464:297:0:o;20327:331::-;20373:7;;;;20420:139;20448:10;20442:17;;:5;:17;;:40;20438:44;;;;20420:139;;;20517:10;20511:17;;;;:5;:17;;;;;:33;;:36;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20511:36:0;;;;;;;;;;;;20504:43;;;;;20485:3;20420:139;;;;20571:13;20587:28;20604:10;20587:16;:28::i;:::-;20636:3;;-1:-1:-1;;;;;;;20571:44:0;;-1:-1:-1;20327:331:0;;:::o;17840:389::-;-1:-1:-1;;;;;17969:10:0;;17902:7;17969:10;;;:5;:10;;;;;;;;:20;;17940:49;;;;;;;;;;;;;;;;;17902:7;;17940:26;;:49;17969:20;17940:49;;;17969:20;17940:49;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17940:49:0;;;;;;;;;;;;;;;;-1:-1:-1;17940:49:0;;-1:-1:-1;18010:11:0;;-1:-1:-1;18010:11:0;;-1:-1:-1;;;18036:115:0;18059:9;:16;18055:1;:20;;;18036:115;;;18103:36;18111:5;:19;18117:9;18127:1;18117:12;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18111:19:0;;;;;;;;;;;-1:-1:-1;18111:19:0;:27;-1:-1:-1;;;;;18103:7:0;;;;18111:27;18103:36;:7;:36;:::i;:::-;18097:42;-1:-1:-1;18078:3:0;;18036:115;;;-1:-1:-1;18193:16:0;;18179:3;;-1:-1:-1;18193:16:0;-1:-1:-1;17840:389:0;;;:::o;6621:25::-;;;-1:-1:-1;;;6621:25:0;;-1:-1:-1;;;;;6621:25:0;;:::o;22653:133::-;-1:-1:-1;;;;;22758:10:0;;;;;;:5;:10;;;;;;;;;:20;;22751:27;;;;;;;;;;;;;;;;;22713:26;;22751:27;;;22758:20;22751:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22751:27:0;;;;;;;;;;;;;;;;;;;;;;;22653:133;;;:::o;10129:31::-;;;-1:-1:-1;;;10129:31:0;;;;;:::o;4644:79::-;4682:7;4709:6;-1:-1:-1;;;;;4709:6:0;4644:79;;:::o;20027:96::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;20094:13:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;20094:21:0::1;-1:-1:-1::0;;;;20094:21:0;;::::1;::::0;;;::::1;::::0;;20027:96::o;6548:25::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6548:25:0;;-1:-1:-1;6548:25:0;:::o;19856:163::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;19948:10:::1;:24:::0;;-1:-1:-1;;19948:24:0::1;::::0;-1:-1:-1;;;;;19948:24:0;;::::1;;;::::0;;19983:11:::1;:28:::0;;-1:-1:-1;;;;;;19983:28:0::1;::::0;;;::::1;;::::0;;19856:163::o;7190:28::-;;;;;;:::o;9992:129::-;10062:21;10075:7;10062:12;:21::i;:::-;10094:9;:7;:9::i;:::-;9992:129;:::o;6503:38::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6503:38:0;;;;-1:-1:-1;;;6503:38:0;;;;;;-1:-1:-1;;;6503:38:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6503:38:0;;;;;;;;;;:::o;8330:1644::-;8424:10;;8390;8384:17;;;;:5;:17;;;;;:25;-1:-1:-1;;;;;8424:10:0;;;;;;;8417:2;;8412;8384:25;;;:30;:35;;-1:-1:-1;;;;;8383:51:0;;;:78;;;-1:-1:-1;8451:10:0;;;;;-1:-1:-1;;;;;8451:10:0;8438:9;:23;;8383:78;8375:124;;;;-1:-1:-1;;;8375:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8537:10;8520:14;8605:2;8576:26;-1:-1:-1;;;;;8584:9:0;8576:22;8599:2;8576:26;:22;:26;:::i;:::-;-1:-1:-1;;;;;8576:31:0;;;;;;-1:-1:-1;;;;;8638:13:0;;8620:15;8638:13;;;:5;:13;;;;;:22;8576:31;;;;-1:-1:-1;;;;8638:22:0;;;;:27;;8686:20;:18;:20::i;:::-;8770:10;8766:206;;8796:12;:14;;-1:-1:-1;;8796:14:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8825:13:0;;-1:-1:-1;8825:13:0;;;;;;;;;;:37;;-1:-1:-1;;;;;8825:37:0;8850:12;;;;-1:-1:-1;;;8825:37:0;;;;;;;8905:14;;8877:24;;;;:47;;-1:-1:-1;;;;8877:47:0;-1:-1:-1;;;8905:14:0;;;;:18;;8877:47;;;;;;;;;;;;;;8939:8;27:10:-1;;23:18;;;45:23;;8939:21:0;;;;;;;-1:-1:-1;;;;;;8939:21:0;;;;;;8766:206;-1:-1:-1;;;;;9002:13:0;;;8984:15;9002:13;;;:5;:13;;;;;;;;:21;;;;;;9156;;9153:88;;9193:36;9206:6;9214:7;9223:5;9193:12;:36::i;:::-;9282:10;9279:61;;;9308:20;9321:6;9308:12;:20::i;:::-;-1:-1:-1;;;;;9376:13:0;;;;;;:5;:13;;;;;:21;:32;;-1:-1:-1;;;;;9376:21:0;9402:5;9376:32;:25;:32;:::i;:::-;-1:-1:-1;;;;;9352:13:0;;;;;;:5;:13;;;;;:56;;-1:-1:-1;;;;;;9352:56:0;-1:-1:-1;;;;;9352:56:0;;;;;;;;;;9461:7;:5;:7::i;:::-;-1:-1:-1;;;;;9453:25:0;:44;9491:5;-1:-1:-1;;;;;9479:17:0;:9;:17;9453:44;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9523:25:0;;;-1:-1:-1;;;;;9523:25:0;;;;;;-1:-1:-1;;;;;9523:25:0;;;;;;;;;;;;;9569:22;9584:6;9569:14;:22::i;:::-;9602:32;9627:6;9602:24;:32::i;:::-;-1:-1:-1;;;;;9648:21:0;;;9645:202;;-1:-1:-1;;;;;9712:14:0;;;;;;:5;:14;;;;;:24;;;:35;;-1:-1:-1;;;;;9712:24:0;9741:5;9712:35;:28;:35;:::i;:::-;-1:-1:-1;;;;;9685:14:0;;;;;;:5;:14;;;;;:24;;:62;;-1:-1:-1;;;;;;9685:62:0;-1:-1:-1;;;;;9685:62:0;;;;;;;;;;9764:23;9685:14;9764;:23::i;:::-;9802:33;9827:7;9802:24;:33::i;:::-;-1:-1:-1;;9880:10:0;;;-1:-1:-1;;;;;;;;9880:10:0;;;;;-1:-1:-1;;;;;9880:18:0;;;;;;;9867:31;;;;-1:-1:-1;;;;;;9867:31:0;;;;;;;;;-1:-1:-1;8330:1644:0:o;6659:20::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6659:20:0;;;;-1:-1:-1;6659:20:0;-1:-1:-1;;;6659:20:0;;;;;-1:-1:-1;;;6659:20:0;;;;;;-1:-1:-1;;;6659:20:0;;;;;;;;:::o;12201:1078::-;12317:6;:13;-1:-1:-1;;;;;12382:10:0;;12271:7;12382:10;;;:5;:10;;;;;;;:25;;12271:7;;12317:13;12271:7;;12382:25;;:29;12379:855;;12444:13;;;12427:796;12466:6;12460:12;;:3;:12;;;12427:796;;;12504:15;12522:6;12529:3;12522:11;;;;;;;;;;;;;;;;;;;;;;;;;:22;-1:-1:-1;;;;;12637:10:0;;;;:5;:10;;;;;;:19;12592:6;:11;;12522:22;-1:-1:-1;;;12522:22:0;;;;;;-1:-1:-1;12584:88:0;;12522:22;;12592:65;;-1:-1:-1;;;12637:19:0;;;;;12626:30;;12592:65;;;;:11;;;;;;;;;;;;;;;;;;;;;;;:25;-1:-1:-1;;;;;12592:25:0;;:65;:33;:65;:::i;:::-;-1:-1:-1;;;;;12584:78:0;;:88;:78;:88;:::i;:::-;12563:109;-1:-1:-1;12695:18:0;;;12780:366;-1:-1:-1;;;;;12802:10:0;;;;;;:5;:10;;;;;;;;:25;;;;;;12798:29;;;;12780:366;;;12857:17;12916:7;12877:36;12892:5;12898:1;12892:8;;;;;;;;;;;;:20;-1:-1:-1;;;;;12877:14:0;;;-1:-1:-1;;;12892:20:0;;;;12877:14;:36::i;:::-;-1:-1:-1;;;;;12877:46:0;;;;;;;12857:66;;12964:6;12971:3;12964:11;;;;;;;;;;;;;;;;;;;;:20;;12985:1;12964:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13015:18:0;;13012:115;;13075:28;-1:-1:-1;;;;;13075:13:0;;:28;;;;;:13;:28;:::i;:::-;13061:42;;;;13012:115;-1:-1:-1;12830:3:0;;12780:366;;;-1:-1:-1;13179:26:0;-1:-1:-1;;;;;13179:14:0;;13194:10;13179:26;:14;:26;:::i;:::-;13166:39;-1:-1:-1;;12475:5:0;;;;;-1:-1:-1;12427:796:0;;-1:-1:-1;;12427:796:0;;;12379:855;13261:10;-1:-1:-1;;12201:1078:0;;;;;:::o;22798:123::-;22842:16;22905:8;22898:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22898:15:0;;;;;;;;;;;;;;;;;;;;;;;22798:123;:::o;21009:347::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;21104:14:::1;::::0;::::1;;-1:-1:-1::0;;21104:32:0;21162:4;21147:202:::1;21173:2;21178:1;21173:6;21169:10;;:1;:10;;;21147:202;;;21201:11;21215:8;21224:1;21215:11;;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;;;;;21215:11:0::1;21241:10:::0;;;21215:11;21241:10;;;;;;;:21;;-1:-1:-1;;;;;;;;21241:21:0::1;::::0;;21277::::1;;:28:::0;;-1:-1:-1;;;;21277:28:0::1;-1:-1:-1::0;;;21277:28:0::1;::::0;::::1;;;::::0;;21215:11;-1:-1:-1;21320:17:0::1;21215:11:::0;21320:12:::1;:17::i;:::-;-1:-1:-1::0;21182:3:0::1;;21147:202;;11844:345:::0;-1:-1:-1;;;;;11998:10:0;;11905:7;11998:10;;;:5;:10;;;;;:18;11905:7;;-1:-1:-1;;;;;11998:18:0;12041:8;12030:19;;12027:101;;12073:2;12065:10;;12027:101;;;12114:2;12106:10;;12027:101;12176:5;12155:18;-1:-1:-1;;;;;12155:11:0;;:18;;;;:11;:18;:::i;22933:151::-;23002:14;;;;;;8311:6;23002:32;22984:50;:15;:50;22981:96;;;23050:15;:13;:15::i;:::-;22933:151::o;20666:331::-;-1:-1:-1;;;;;20796:10:0;;20726:7;20796:10;;;:5;:10;;;;;:20;;:27;20835:13;;;;20726:7;20859:110;20881:6;20877:10;;:1;:10;;;20859:110;;;-1:-1:-1;;;;;20933:10:0;;;;;;:5;:10;;;;;:20;;:23;;20916:41;;20933:20;:23;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20933:23:0;20916:16;:41::i;:::-;20909:48;;;;20890:3;;20859:110;;5079:227;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5160:22:0;::::1;5152:64;;;::::0;;-1:-1:-1;;;5152:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;5253:6;::::0;;5232:38:::1;::::0;-1:-1:-1;;;;;5232:38:0;;::::1;::::0;5253:6;::::1;::::0;5232:38:::1;::::0;::::1;5281:6;:17:::0;;-1:-1:-1;;;;;;5281:17:0::1;-1:-1:-1::0;;;;;5281:17:0;;;::::1;::::0;;;::::1;::::0;;5079:227::o;19791:53::-;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;2421:472;2479:7;-1:-1:-1;;;;;2724:6:0;;2720:47;;-1:-1:-1;2754:1:0;2747:8;;2720:47;2791:5;;;-1:-1:-1;;;;;2812:10:0;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;2812:10:0;;2807:58;;-1:-1:-1;;;;;;2807:58:0;2884:1;2421:472;-1:-1:-1;;;2421:472:0:o;1442:235::-;1500:7;1532:5;;;-1:-1:-1;;;;;1553:6:0;;;;;;;;1548:54;;-1:-1:-1;;;;;;1548:54:0;1625:1;-1:-1:-1;;;;;1620:6:0;:1;-1:-1:-1;;;;;1620:6:0;;;1612:36;;;;;-1:-1:-1;;;1612:36:0;;;;;;;;;;;;-1:-1:-1;;;1612:36:0;;;;;;;;;;;;;;21624:1021;4856:6;;-1:-1:-1;;;;;4856:6:0;4866:10;4856:20;4848:56;;;;;-1:-1:-1;;;4848:56:0;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4848:56:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21737:21:0;::::1;::::0;21734:135:::1;;-1:-1:-1::0;;;;;21774:14:0;;::::1;;::::0;;;:5:::1;:14;::::0;;;;;;;:24:::1;;27:10:-1::0;;23:18;;::::1;45:23:::0;;21774:37:0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;21774:37:0::1;::::0;;::::1;::::0;;::::1;::::0;;21826:13;;;;;;:21;;::::1;:31:::0;;-1:-1:-1;;;;;;21826:31:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;21734:135:::1;21964:12;:14:::0;;-1:-1:-1;;21964:14:0;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;21989:13:0;;::::1;-1:-1:-1::0;21989:13:0;;;::::1;::::0;;;;;;:37;;-1:-1:-1;;;;;21989:37:0::1;22014:12:::0;;;::::1;-1:-1:-1::0;;;21989:37:0::1;::::0;;;::::1;::::0;;22064:14:::1;::::0;22037:24;;;::::1;:41:::0;;-1:-1:-1;;;;22037:41:0::1;22064:14;::::0;;::::1;-1:-1:-1::0;;;22037:41:0::1;::::0;;;::::1;::::0;;;22089:8:::1;27:10:-1::0;;23:18;;::::1;45:23:::0;;22089:21:0;;;::::1;::::0;;-1:-1:-1;;;;;;22089:21:0::1;::::0;;::::1;::::0;;;21897:7;;22126:21;::::1;::::0;22123:88:::1;;22163:36;22176:6;22184:7;22193:5;22163:12;:36::i;:::-;-1:-1:-1::0;;;;;22223:13:0;::::1;;::::0;;;:5:::1;:13;::::0;;;;;;;;:30;;-1:-1:-1;;;;;;22223:30:0;::::1;-1:-1:-1::0;;;;;22223:30:0;;::::1;::::0;::::1;::::0;::::1;;::::0;;;22279:25;;;;::::1;::::0;;;;::::1;::::0;;;;;;;;::::1;22325:22;22340:6;22325:14;:22::i;:::-;22358:32;22383:6;22358:24;:32::i;:::-;-1:-1:-1::0;;;;;22414:21:0;::::1;::::0;22411:177:::1;;-1:-1:-1::0;;;;;22451:14:0;::::1;;::::0;;;:5:::1;:14;::::0;;;;:24:::1;;:33:::0;;-1:-1:-1;;;;;22451:33:0;;::::1;::::0;::::1;;-1:-1:-1::0;;;;;;22451:33:0;;::::1;;::::0;;22505:23:::1;22457:7:::0;22505:14:::1;:23::i;:::-;22543:33;22568:7;22543:24;:33::i;:::-;22608:10;:19:::0;;-1:-1:-1;;;;;;;;22608:19:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;22608:19:0;;::::1;::::0;;;::::1;;::::0;;::::1;-1:-1:-1::0;;;;;;22608:19:0;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;21624:1021:0:o;10943:889::-;-1:-1:-1;;;;;11048:10:0;;11007:11;11048:10;;;:5;:10;;;;;:21;;;8311:6;;-1:-1:-1;;;11048:21:0;;11021:69;11048:21;;;11029:15;11022:47;11021:69;;11007:83;;11112:1;11104:4;:9;;;11101:724;;11143:22;11168;11186:3;11168:17;:22::i;:::-;11143:47;;11205:18;11226:24;11240:3;11245:4;11226:13;:24::i;:::-;11205:45;;11265:21;11289;11306:3;11289:16;:21::i;:::-;11265:45;;11325:27;11355:22;11373:3;11355:17;:22::i;:::-;11325:52;-1:-1:-1;11420:11:0;11434:58;11325:52;11434:33;-1:-1:-1;;;;;11434:18:0;;11453:13;11434:33;:18;:33;:::i;:::-;-1:-1:-1;;;;;11434:37:0;;:58;:37;:58;:::i;:::-;11420:72;-1:-1:-1;11514:31:0;11534:10;11515:13;-1:-1:-1;;;;;11515:7:0;;:13;;;;:7;:13;:::i;11514:31::-;-1:-1:-1;;;;;11594:10:0;;;;;;:5;:10;;;;;:17;11508:37;;-1:-1:-1;11594:26:0;;-1:-1:-1;;;11594:17:0;;-1:-1:-1;;;;;11594:17:0;11508:37;11594:21;:26::i;:::-;-1:-1:-1;;;;;11574:10:0;;;;;;:5;:10;;;;;;;;;:46;;-1:-1:-1;;;;;11574:46:0;;;-1:-1:-1;;;11574:46:0;;;-1:-1:-1;;;;;;;;11574:46:0;;;;;;;;;11635:21;;;;:49;;;;;;;;8311:6;11661:22;;11635:49;;;;;;-1:-1:-1;;;;11635:49:0;;;;;;11718:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11574:10;;11718:81;;;;;;;;;;11101:724;;;;;10943:889;;:::o;18842:811::-;18919:10;18913:17;;;;:5;:17;;;;;;;;:25;;-1:-1:-1;;;;;18913:36:0;;;:25;;;;;:36;18910:73;;;18965:7;;18910:73;19012:10;19006:17;;;;:5;:17;;;;;:26;-1:-1:-1;;;19006:26:0;;;;:31;;;;:87;;-1:-1:-1;;;;;;19070:14:0;;;;;;:5;:14;;;;;;:23;19047:10;19041:17;;;;:26;19070:23;-1:-1:-1;;;19070:23:0;;;;;;19041:26;;;;;:52;19006:87;19003:125;;;19110:7;;19003:125;19162:10;19193:1;19156:17;;;:5;:17;;;;;;;;:25;;;;;-1:-1:-1;;;;;19156:25:0;:39;19148:80;;;;;-1:-1:-1;;;19148:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19247:14:0;;19273:1;19247:14;;;:5;:14;;;;;:23;-1:-1:-1;;;19247:23:0;;;;19239:62;;;;;-1:-1:-1;;;19239:62:0;;;;;;;;;;;;-1:-1:-1;;;19239:62:0;;;;;;;;;;;;;;;19320:10;-1:-1:-1;;;;;19320:21:0;;;;19312:61;;;;;-1:-1:-1;;;19312:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19394:14:0;;;;;;:5;:14;;;;;;;;:24;;27:10:-1;;23:18;;;45:23;;19394:41:0;;;;;;;;;;;19424:10;-1:-1:-1;;;;;;19394:41:0;;;;;;;;19446:17;;;;;:25;;;:35;;-1:-1:-1;;;;;;19446:35:0;;;;;;;;;;;;19497:25;-1:-1:-1;;;;;19497:25:0;:29;19494:142;;19604:10;19598:17;;;;:5;:17;;;;;;:25;-1:-1:-1;;;;;19569:14:0;;;;;;:24;;;:55;;-1:-1:-1;;;;;19569:24:0;;;;19598:25;19569:55;:28;:55;:::i;:::-;-1:-1:-1;;;;;19542:14:0;;;;;;;;:5;:14;;;;;:24;;:82;;-1:-1:-1;;;;;;19542:82:0;-1:-1:-1;;;;;19542:82:0;;;;;;;;;;18842:811::o;10169:762::-;-1:-1:-1;;;;;10320:15:0;;10269;10320;;;:5;:15;;;;;;;;:29;;10399:13;;10287:3;;10320:29;;;;;;;;-1:-1:-1;;;10399:13:0;;;-1:-1:-1;;10399:17:0;10437:477;-1:-1:-1;;;;;10443:21:0;;;;;;:49;;;10491:1;10468:20;:24;;;10443:49;10437:477;;;10510:21;10523:7;10510:12;:21::i;:::-;-1:-1:-1;;;;;10593:14:0;;;;;;:5;:14;;;;;:56;;10640:8;;10593:30;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10593:42:0;;:46;:56::i;:::-;-1:-1:-1;;;;;10548:14:0;;;;;;:5;:14;;;;;:30;;:42;;;;;;;;;;;;;;;;:101;;-1:-1:-1;;;;;10548:101:0;;;:42;;;;;;:101;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10685:14:0;;-1:-1:-1;10685:14:0;;;;;;;;;;:28;;;;;;;;;10731:25;;;;10728:89;;;10789:12;10776:25;;10728:89;-1:-1:-1;;;;;;10843:14:0;;;;;;;:5;:14;;;;;;;;:22;;;;;;;;;-1:-1:-1;;10880:22:0;10437:477;;;10169:762;;;;;;:::o;15057:788::-;-1:-1:-1;;;;;15126:10:0;;;;;;:5;:10;;;;;;;;:25;;15154:12;15126:25;;;;:40;15123:705;;;-1:-1:-1;;;;;15212:10:0;;15196:13;15212:10;;;:5;:10;;;;;;;;:25;;;;15287:20;;;;;15212:25;;;;;-1:-1:-1;;;;;15287:20:0;15420:5;15212:25;15420:14;;;;;;;;;;:31;-1:-1:-1;;;;;15398:10:0;;15420:31;15398:10;;;15420:31;15398:10;;;;;:18;-1:-1:-1;;;;;15420:31:0;;;15398:18;;:53;;;;:113;;;15486:5;15492:7;15486:14;;;;;;;;;;;;;;;;;:25;-1:-1:-1;;;;;15455:10:0;;15486:25;15455:10;;;:5;:10;;;;;:20;;;:27;-1:-1:-1;;;15486:25:0;;;;;-1:-1:-1;15455:56:0;15398:113;:159;;;;;15529:5;15535:7;15529:14;;;;;;;;;;;;:28;-1:-1:-1;;;;;;;;15529:28:0;;;;;15515:42;;;;;15398:159;15395:408;;;-1:-1:-1;;;;;15577:10:0;;;;;;15615:1;15577:10;;;;;;;;:25;;:39;;;15605:11;;;15577:39;;-1:-1:-1;;15577:39:0;;;;;;15635:5;;:14;;;;;;;;;;;;:23;;;;:25;;-1:-1:-1;;15635:25:0;;;;;;;;;;;;;;15702:29;;;15719:11;;;15702:29;;;;;-1:-1:-1;;;;;15702:29:0;;;;;;;;;;;;;;;;15768:19;15783:3;15768:14;:19::i;:::-;15123:705;;15057:788;:::o;15857:1971::-;-1:-1:-1;;;;;15944:10:0;;15925:16;15944:10;;;:5;:10;;;;;;;;:24;;;;;;;15997:22;15984:35;;15981:1830;;;16129:15;16145:10;16129:27;;;;;;;;;;:35;-1:-1:-1;;;;;16100:10:0;;16129:35;16100:10;;;16129:35;16100:10;;;;;;;;:25;;16129:35;;;;16100:25;;;;:64;16097:1703;;-1:-1:-1;;;;;16184:10:0;;;;;;16212:1;16184:10;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;-1:-1:-1;;16184:29:0;;;;;;;;;;16307:18;-1:-1:-1;;;;;16307:18:0;;16412:131;16435:10;16430:15;;:1;:15;;;16412:131;;-1:-1:-1;;;;;16493:10:0;;;;;;:5;:10;;;;;16483:40;;16493:26;;:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16483:9:0;;;;16493:29;;;;;;;;;;16483:9;:40::i;:::-;16475:48;-1:-1:-1;16448:3:0;;16412:131;;;-1:-1:-1;;;;;;16753:10:0;;;16622:23;16753:10;;;16661:1;16753:10;;;;;;;;:18;;;16648:14;;;;:10;;16753:18;;;;16790:847;-1:-1:-1;;;;;16796:21:0;;;16790:847;;-1:-1:-1;;;;;16914:14:0;;;;;;:5;:14;;;;;:57;;16965:5;;16914:30;;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16914:46:0;;:50;:57::i;:::-;-1:-1:-1;;;;;16865:14:0;;;;;;:5;:14;;;;;:30;;:46;;;;;;;;;;;;;;;;;;;;;:106;;;;;-1:-1:-1;;;;;16865:106:0;;;;;-1:-1:-1;;;;;16865:106:0;;;;;;17046:60;17100:5;17046;:14;17052:7;-1:-1:-1;;;;;17046:14:0;-1:-1:-1;;;;;17046:14:0;;;;;;;;;;;;:30;;17077:17;17046:49;;;;;;;;:60;-1:-1:-1;;;;;16994:14:0;;;;;;:5;:14;;;;;:30;;:49;;;;;;;;;;;;;;;;:112;;-1:-1:-1;;;;;16994:112:0;;;:49;;;;;;:112;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17149:14:0;;-1:-1:-1;17149:14:0;;;;;;;;;;:28;;;;;;;;;17203:29;;;;17200:113;;;17280:9;17260:29;;17200:113;17350:14;17338:26;;:9;:26;;;17335:107;;;17409:9;17392:26;;17335:107;17487:17;17469:35;;:14;:35;;;17466:95;;;17532:5;;;17466:95;-1:-1:-1;;;;;;17595:14:0;;;;;;;:5;:14;;;;;;;;:22;;;;;;16790:847;;;-1:-1:-1;;;;;17662:56:0;;17693:10;;;;:5;:10;;;;;;;;;:24;;;;17662:56;;17693:24;;;;;;17662:56;;;;;;;;;;;;;;17755:29;17780:3;17755:24;:29::i;116:476::-;178:7;-1:-1:-1;;;;;423:6:0;;419:47;;-1:-1:-1;453:1:0;446:8;;419:47;490:5;;;-1:-1:-1;;;;;511:10:0;;;;:5;;;;;;;;;;;;-1:-1:-1;;;;;511:10:0;;506:58;;-1:-1:-1;;;;;;542:10:0;116:476;-1:-1:-1;;;116:476:0:o;3391:251::-;3449:7;3481:1;3477;-1:-1:-1;;;;;3477:5:0;;3469:29;;;;;-1:-1:-1;;;3469:29:0;;;;;;;;;;;;-1:-1:-1;;;3469:29:0;;;;;;;;;;;;;;;3509:9;3525:1;-1:-1:-1;;;;;3521:5:0;:1;-1:-1:-1;;;;;3521:5:0;;;;;14769:276;14813:21;;:::i;:::-;14849:7;14845:84;14867:1;14863;:5;;;14845:84;;;14900:5;14906:1;14900:8;;;;;;;;;;;;:17;;;;;14890:4;:7;;;;;;;;;;:27;;;;:7;;;;;;:27;14871:3;;14845:84;;;-1:-1:-1;14951:41:0;;;;;;;;14961:10;;-1:-1:-1;;;;;;;;14961:10:0;;;;14951:41;;14973:12;;;;14951:41;;;;;;;;;;;;14939:6;27:10:-1;;14973:12:0;23:18:-1;;45:23;;-1:-1;14939:54:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14939:54:0;-1:-1:-1;;;;14939:54:0;;;;-1:-1:-1;;14939:54:0;;;;;;;;;;;;;;;14951:41;;14939:54;;;;;;;;;:::i;:::-;-1:-1:-1;;15004:14:0;:33;;;;;;8311:6;15004:33;;-1:-1:-1;;15004:33:0;;;;;;-1:-1:-1;;14769:276:0:o;1980:182::-;2038:7;2068:1;-1:-1:-1;;;;;2063:6:0;:1;-1:-1:-1;;;;;2063:6:0;;;2058:48;;-1:-1:-1;2093:1:0;2086:8;;2058:48;-1:-1:-1;2128:5:0;;;1980:182::o;-1:-1:-1:-;;;;;;;;;;;29:2;21:6;17:15;125:4;109:14;101:6;88:42;-1:-1;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://3308b1e7b8de86828bb4364b984ebc2998672bab6b7e8078dc8281d9de3bf979

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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