Contract 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x9bcb402c523ee9be220a866e6563c7fbcd6aee908e0fc5ef8c66bb9f8a4b3cdbRelease_diary_se...153991912022-05-21 0:08:1638 secs ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x5daa1aff3cf6e3794efc9d21625abf3ca8ef970d39dc53b1387aa9f8381cb887Release_diary_se...153991772022-05-21 0:07:341 min ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xb4842b8eb55563f15e47f8617888eb0e3afafb031f1cb6bcade9793ed971b380Release_diary_se...153991662022-05-21 0:07:011 min ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x39fef86ae6c5153c9f1fec6a93d79b237d7aba96c178120f3aba0f7f698b5a1cRelease_diary_se...153991542022-05-21 0:06:252 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x50329bcd53f35a8bcd471ef3bfa555d978ae3681f650542cbc0ca3e7ce60b762Release_diary_se...153990842022-05-21 0:02:555 mins ago0x7b057014c84b4ff794ded7e718b1140a5c2c50e6 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x1899b3fa6c91e1aeb8e924c39125f34809b90028cf5762cad457ddec8071bcc4Release_diary_se...153990772022-05-21 0:02:346 mins ago0x7b057014c84b4ff794ded7e718b1140a5c2c50e6 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xe844f9c8cebcde34354f8257786f1429f8a6607b8fbeeb22059f916c08063e20Release_diary_se...153986072022-05-20 23:39:0429 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x6e2dbac234798f8daf3c99368735b535b9399b5abec6420d009523de21749f2eRelease_diary_se...153985952022-05-20 23:38:2830 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xafadf94f26b1a3c5aba32256feb30f5a78faf791b29436e3c36da559b66d83acRelease_diary_se...153985822022-05-20 23:37:4931 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x26baab0cba3c5cdb5eaf863286c41a39744e042478df9ae7e6dffe292f14c04cRelease_diary_se...153985722022-05-20 23:37:1931 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xfc30876382bf09569406e002864add1c15ef0a709f6dd1f56299ff8c51c97847Release_diary_se...153985542022-05-20 23:36:2532 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xf18d7f10121bc2261ede3db8c653561c0b5afe84c772bbab971b08ee37d7ab96Release_diary_se...153985422022-05-20 23:35:4933 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x64b58f03592a4de01994630c4fe8ef3f2a66fecde721cf948ac9bf3a498bb5c4Release_diary_se...153985302022-05-20 23:35:1333 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xa14767aca6ef8495b113b13abe300df2a8fbd537dc671fd773d1bd262228efb4Release_diary_se...153985212022-05-20 23:34:4634 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x9190d32604707fd2ba24123ebeec0360d5a4029f5274f29c10f36cdbb04abcc8Release_diary_se...153985042022-05-20 23:33:5534 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x7e1c244a60ef8dd9ef463877284f82971f533a2ff9ac6650186aafc771861ddaRelease_diary_se...153985002022-05-20 23:33:4335 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x1e6dc3c92a301b90b60cc47e2593421cd258c72de298fa242d64d4fc49d515baRelease_diary_se...153984852022-05-20 23:32:5835 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x24400f5ed7bc3941a983adf8b1a37494b5bcbe4711b7782033b63f196bc502d8Release_diary_se...153984652022-05-20 23:31:5836 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x263e5bc39b1ff84f2a4ac29155b8b96f652d085d89ecb46f54a7ddc401104ab6Release_diary_se...153984522022-05-20 23:31:1937 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x99975b160ee73a19d48dda19d7be9d82546f7663d3f062e0dc3e0df050678b7bRelease_diary_se...153984302022-05-20 23:30:1338 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xfadbc5cb7d2cdc539c6603fd680e6d30cb68e752c987e28f6c931429c94416aaRelease_diary_se...153983522022-05-20 23:26:1942 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xd139ba604318c3a009d86d6bf16be5da20ab0a612b46c73d4c7561dba0bc1885Release_diary_se...153983412022-05-20 23:25:4643 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x3ee3f390ea993ce23c2930cd0d420edd509dd40b8daa17876fbaf254b447e442Release_diary_se...153983272022-05-20 23:25:0443 mins ago0xc58433c36996e2f84d3c4e1e5cf69f54d1e2c4b4 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0xea6f941bff8112f1079e89937032c612d26c91313aad0e9a2a4514ef18922039Release_diary_se...153978442022-05-20 23:00:551 hr 7 mins ago0x0075825c7224619b34d55b5d84453bab49ae66ab IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
0x46092197bd3f11ad0055a3dfdab59e3d797e2b221482d0d45a2267ee6cd93de9Release_diary_se...153978312022-05-20 23:00:161 hr 8 mins ago0xe227e1176c6807fafb634bf150c51899b6b1c400 IN 0xf9bcaa365751500c6abef5fe6935f6b8b63f22cb0 HT0.0002031852.5
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Klein

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-11-14
*/

// SPDX-License-Identifier: SimPL-2.0
pragma solidity >=0.4.22 <0.7.0;
/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {

    function totalSupply() external view returns (uint256);


    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);


    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Klein {
    struct Player{
        address addr;
        address recommender_addr;
        uint256 amount;//total deposit
        uint256 prepare_balance;
        uint256 released_amount;
        uint256 static_in_released_amount;
        uint256 total_released;
        uint last_ts;
        uint last_days;
        uint is_cvip;
        uint256 burn_amount;
        uint cvip_num;
        uint recommend_num;
        uint256 wait_award;
    }
    
    struct PlayerInfo{
        address addr;
        uint256 last_deposit_amount;
        uint withdraw_last_ts;
    }
    uint firstDepositTS;
    address[] public addressIndices;
    //all players
    mapping(address => Player) public players;
    mapping(address => PlayerInfo) public playersInfo;
    //seven admin
    address payable admin1_20=0xd7Ce35Fa36Dbe09328286cE575489368bDD0B414;
    address payable admin2_20=0x68a795fEe0ca81039464E2BB1447FF82c2c1ECee;
    address payable admin3_20=0xda91903724A55Df1a90A3c740DA54A76EF7C6180;
    address payable admin4_10=0xc61e47147aE37d4e14e73505c327f8046b0EcCF3;
    address payable admin5_10=0x3883364303D76246f3204cAa28553d170FAE465b;
    address payable admin6_10=0x0f44507a8797bb9B268D65D04722864e97CdB626;
    address payable admin7_10=0x552cf0E062E6C963454c47B53c122A5b10Cb3BA7;
    address payable insure_address=0xf98314006583dD9186571eB88C7A0588bD1a2Dc9;
    
    address contract_owner;
    
    uint256 history_top_balance;
    uint256 total_balance;
    uint256 insure_balance;
    uint256 top_award_balance_1;
    uint256 top_award_balance_7;

    uint constructor_ts;
    uint day_in_low_release;
    uint s;
    
    //IERC20 public KBB =IERC20(0x3Be5f3Fc6079f90060097F4a503D1c4B914A84bA);
    IERC20 public KBB;
    constructor() payable public{
        if(contract_owner!=address(0)){
            return;
        }
        contract_owner=msg.sender;
      
        history_top_balance=0;
        total_balance=0;
        s=1000000000;
        insure_balance=0;
        top_award_balance_1=0;
        top_award_balance_7=0;
        constructor_ts=now;
        day_in_low_release=0;
        KBB =IERC20(0x3Be5f3Fc6079f90060097F4a503D1c4B914A84bA);
        
    }
    
    function globalinfo() public view returns(uint256 _history_top_balance,uint256 _total_balance,uint256 _insure_balance,uint256 _top_award_balance_1,uint256 _top_award_balance_7,uint _total_address){
        _history_top_balance = history_top_balance;
        _total_balance = total_balance;
        _insure_balance = insure_balance;
        _top_award_balance_1 = top_award_balance_1;
        _top_award_balance_7 = top_award_balance_7;
        _total_address=addressIndices.length;
    }
    function myinfo() public view returns (address addr,uint amount,uint prepare_balance,
    uint released_amount,uint total_released,uint last_ts,uint last_days,uint is_cvip,uint burn_amount,uint cvip_num,uint recommend_num,uint wait_award){
        addr = players[msg.sender].recommender_addr;
        amount = players[msg.sender].amount;
        prepare_balance = players[msg.sender].prepare_balance;
        released_amount=players[msg.sender].released_amount;
        total_released=players[msg.sender].total_released;
        last_ts=players[msg.sender].last_ts;
        last_days=players[msg.sender].last_days;
        is_cvip=players[msg.sender].is_cvip;
        burn_amount=players[msg.sender].burn_amount;
        cvip_num=players[msg.sender].cvip_num;
        recommend_num=players[msg.sender].recommend_num;
        wait_award=players[msg.sender].wait_award;
        //team_num=teams[msg.sender].num;
        //team_amount=teams[msg.sender].amount;
    }
    
    function transferOut(address toAddr, uint amount) private {
        if(amount<=0){
            return;
        }
        KBB.transfer(toAddr,amount);
    }
    //coin => contract
    event Deposit(address indexed recommender_addr, uint _value);
    function deposit(address recommender_addr) public returns (uint256){
        /*require(
            players[msg.sender].amount==0,
            "Already Deposited."
        );*/
        require(
            msg.sender!=recommender_addr,
            "Can not recommend self."
        );
        uint256 allowanceValue =  KBB.allowance(msg.sender,address(this));
        require(
            allowanceValue >= 1000 * s,
            "Deposit amount at least 1000 KBB."
        ); 
        bool _Success = KBB.transferFrom(msg.sender,address(this),allowanceValue);
        
        require(
            _Success,
            "Not enough balance."
        );
        
        //updateTeam(recommender_addr,msg.value,players[msg.sender].addr==address(0));
        if(players[msg.sender].addr==address(0)){
            addressIndices.push(msg.sender);
        }
        
        //91% => contract balance
        //total_balance+=allowanceValue*91/100;
        
        //2% => insure balance
        insure_balance+=allowanceValue*2/100;
        //insure_address.transfer(msg.value*2/100);
        transferOut(insure_address,allowanceValue*2/100);
        //1% => award for day
        top_award_balance_1+=allowanceValue*1/100;
        //1% => award for week
        top_award_balance_7+=allowanceValue*1/100;
        
        uint256 admin_amount=allowanceValue*5/100;

        
        transferOut(admin1_20,admin_amount*20/100);
        transferOut(admin2_20,admin_amount*20/100);
        transferOut(admin3_20,admin_amount*20/100);
        transferOut(admin4_10,admin_amount*10/100);
        transferOut(admin5_10,admin_amount*10/100);
        transferOut(admin6_10,admin_amount*10/100);
        transferOut(admin7_10,admin_amount*10/100);
        total_balance = KBB.balanceOf(address(this));
        if(history_top_balance<total_balance){
            history_top_balance=total_balance;
        }
        players[msg.sender].addr=msg.sender;
        //players[msg.sender].amount=msg.value*91/100;
        players[msg.sender].amount+=allowanceValue;
        //players[msg.sender].prepare_balance+=msg.value*91/100*getMulit2()/2;
        players[msg.sender].prepare_balance+=allowanceValue*getMulit2()/10;
        players[msg.sender].last_ts=now;
        players[msg.sender].last_days=0;
        
        playersInfo[msg.sender].addr=msg.sender;
        //playersInfo[msg.sender].last_deposit_amount=allowanceValue;
        if(players[recommender_addr].amount<=0||players[recommender_addr].recommender_addr==msg.sender){
            recommender_addr=0x0000000000000000000000000000000000000000;
        }
        
        //send award when first time deposited.
        if(recommender_addr!=address(0) && players[msg.sender].amount==allowanceValue){
            sendDepositAward(allowanceValue*9/100,recommender_addr);
            players[msg.sender].recommender_addr=recommender_addr;
            players[recommender_addr].recommend_num++;
            emit Deposit(recommender_addr, allowanceValue);
        }
        if(players[msg.sender].wait_award>0){
            if(players[msg.sender].prepare_balance>=players[msg.sender].wait_award){
                players[msg.sender].prepare_balance-=players[msg.sender].wait_award;
                players[msg.sender].released_amount+=players[msg.sender].wait_award;
                players[msg.sender].wait_award=0;
            }   
            else{
                players[msg.sender].wait_award-=players[msg.sender].prepare_balance;
                players[msg.sender].released_amount+=players[msg.sender].prepare_balance;
                players[msg.sender].prepare_balance=0;
            }
        }
        
        //clean static account
        return release_award(msg.sender);
    }
    function withdraw_without_award(address payable player_address) public returns(uint) {
        require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        require(
            players[player_address].released_amount>0,
            "Not enough balance."
        );
        total_balance = KBB.balanceOf(address(this));
        uint256 draw_amount;
        uint cvip_value=100000*getReleasePrecent10()/10;
        uint normal_value=50000*getReleasePrecent10()/10;
        if(players[player_address].is_cvip==1){
            if(players[player_address].released_amount>cvip_value*s){
                draw_amount=cvip_value*s;
            }
            else{
                draw_amount=players[player_address].released_amount;
            }
        }
        else{
            if(players[player_address].released_amount>normal_value*s){
                draw_amount=normal_value*s;
            }
            else{
                draw_amount=players[player_address].released_amount;
            }
        }
        
        uint256 amount_=draw_amount*90/100;
        //player_address.transfer(amount_);
        transferOut(player_address,amount_);
        players[player_address].released_amount-=draw_amount;
        //total_balance-=draw_amount*93/100;
        insure_balance+=draw_amount*3/100;
        //insure_address.transfer(draw_amount*3/100);
        transferOut(insure_address,draw_amount*3/100);
        total_balance = KBB.balanceOf(address(this));
        //clean static accountv
        return 1;
    }
    function withdraw() public returns(uint) {
        require(
            players[msg.sender].released_amount>0,
            "Not enough balance."
        );
        require(
            dDaysPassed(playersInfo[msg.sender].withdraw_last_ts,1),
            "Only once a day."
        );
        playersInfo[msg.sender].withdraw_last_ts=now;
        total_balance = KBB.balanceOf(address(this));
        uint256 draw_amount;
        uint cvip_value=100000*getReleasePrecent10()/10;
        uint normal_value=50000*getReleasePrecent10()/10;
        if(players[msg.sender].is_cvip==1){
            if(players[msg.sender].released_amount>cvip_value*s){
                draw_amount=cvip_value*s;
            }
            else{
                draw_amount=players[msg.sender].released_amount;
            }
        }
        else{
            if(players[msg.sender].released_amount>normal_value*s){
                draw_amount=normal_value*s;
            }
            else{
                draw_amount=players[msg.sender].released_amount;
            }
        }
        
        uint256 amount_=draw_amount*90/100;
        //msg.sender.transfer(amount_);
        transferOut(msg.sender,amount_);
        players[msg.sender].released_amount-=draw_amount;
        //total_balance-=draw_amount*93/100;
        insure_balance+=draw_amount*3/100;
        
        //insure_address.transfer(draw_amount*3/100);
        transferOut(insure_address,draw_amount*3/100);
        //clean static accountv
        total_balance = KBB.balanceOf(address(this));
        return release_award(msg.sender);
    }
    function release_award(address addr) private returns(uint){
        uint256 amount=players[addr].static_in_released_amount;
        if(amount<=0){
            return 0;
        }
        uint loopnum=0;
        
        //manager award
        Player memory current_user=players[addr];
        address prev_addr=current_user.recommender_addr;
        for(uint i=1;i<=21;i++){
            if(prev_addr==address(0)){
                break;
            }
            current_user=players[prev_addr];
            if(current_user.recommend_num>=getNumRequest(i)){
                sendManagerAward(amount*getManagerAwardPrecent(i)/100,prev_addr);
            }
            prev_addr=current_user.recommender_addr;
            loopnum++;
        }
        release_cvip_award(addr);
    }
    
    function release_cvip_award(address addr) public returns (uint){
        address prev_addr;
        uint loopnum=0;
        uint256 amount=players[addr].static_in_released_amount;
        if(amount==0){
            return 0;
        }
        players[addr].static_in_released_amount=0;
        Player memory current_user=players[addr];
        current_user=players[addr];
        prev_addr=current_user.recommender_addr;
        uint256 award_released=0;
        uint precent;
        uint256 amount_cvip_award;
        uint256 amount_cvip_award_left;
        while(true){
            if(prev_addr==address(0)){
                break;
            }
            current_user=players[prev_addr];
            if(current_user.is_cvip!=1){
                prev_addr=current_user.recommender_addr;
                loopnum++;
                continue;
            }
            precent=getCVIPAwardPrecent(current_user.cvip_num);
            amount_cvip_award=amount*precent/100;
            amount_cvip_award_left=amount_cvip_award-award_released;
            if(amount_cvip_award_left<=0){
                prev_addr=current_user.recommender_addr;
                loopnum++;
                continue;
            }
            sendCVIPAward(amount_cvip_award_left,prev_addr);
            award_released+=amount_cvip_award_left;
            if(award_released>=amount*16/100){
                break;
            }
            prev_addr=current_user.recommender_addr;
            loopnum++;
        }
        return loopnum;
    }
    function release_amount_diary(address addr) private{
        //uint256 amount=players[addr].amount*getReleasePrecent10()/10/100;
        //10-18 update  begin
        total_balance = KBB.balanceOf(address(this));
        uint256 amount=players[addr].prepare_balance*getReleasePrecent10()/10/100*33/100;
        
        if(getReleasePrecent10()>=2 && players[msg.sender].total_released>=players[msg.sender].amount){
            amount=amount*2/10;
        }
        //10-18 update  end
        
        release_amount(amount,addr);
        players[addr].static_in_released_amount+=amount;
    }
    function getCVIPAwardPrecent(uint cvipNum) private pure returns(uint){
        if(cvipNum>=128) return 16;
        if(cvipNum>=64) return 14;
        if(cvipNum>=32) return 12;
        if(cvipNum>=16) return 10;
        if(cvipNum>=8) return 8;
        if(cvipNum>=4) return 6;
        if(cvipNum>=2) return 4;
        return 2;
    }
    function getManagerAwardPrecent(uint i) private pure returns(uint){
        if(i==1) return 30;
        if(i==2) return 8;
        if(i==3) return 8;
        if(i==4) return 8;
        if(i==5) return 8;
        if(i==6) return 4;
        if(i==7) return 4;
        if(i==8) return 4;
        if(i==9) return 4;
        if(i==10) return 4;
        if(i==11) return 3;
        if(i==12) return 3;
        if(i==13) return 3;
        if(i==14) return 3;
        if(i==15) return 3;
        if(i==16) return 2;
        if(i==17) return 2;
        if(i==18) return 2;
        if(i==19) return 2;
        if(i==20) return 2;
        if(i==21) return 2;
    }
    function getNumRequest(uint i) private pure returns(uint){
        if(i==1) return 2;
        if(i==2) return 4;
        if(i==3) return 8;
        if(i==4) return 10;
        if(i==5) return 12;
        if(i==6) return 14;
        if(i==7) return 18;
        if(i==8) return 20;
        if(i==9) return 21;
        if(i==10) return 22;
        if(i==11) return 23;
        if(i==12) return 24;
        if(i==13) return 25;
        if(i==14) return 26;
        if(i==15) return 27;
        if(i==16) return 28;
        if(i==17) return 29;
        if(i==18) return 30;
        if(i==19) return 31;
        if(i==20) return 32;
        if(i==21) return 33;
    }
    function release_amount(uint amount,address addr) private{
        if(players[addr].prepare_balance<amount){
            return;
        }
        if(amount<=0){
            return;
        }
        players[addr].prepare_balance-=amount;
        
        players[addr].released_amount+=amount;
        //total_balance-=amount;
        players[addr].total_released+=amount;
        
        
    }
    function sendDepositAward(uint amount,address recommender_addr) private{
        uint prepare_balance=players[recommender_addr].prepare_balance;
        //burning 50% if balance is not enough
        if(prepare_balance<amount){
            //amount=amount/2;
            players[recommender_addr].burn_amount+=amount;
            amount=0;
        }
        //record to wait award balance if still not enough
        if(players[recommender_addr].prepare_balance<amount){
            players[recommender_addr].wait_award+=amount-players[recommender_addr].prepare_balance;
            amount=players[recommender_addr].prepare_balance;
        }
        release_amount(amount,recommender_addr);
    }
    function sendManagerAward(uint amount,address recommender_addr) private{
        uint prepare_balance=players[recommender_addr].prepare_balance;
        //burning half if balance is not enough
        if(prepare_balance<amount){
            //amount=amount/2;
            players[recommender_addr].burn_amount+=amount;
            amount=0;
        }
        //record to wait award balance if still not enough
        if(players[recommender_addr].prepare_balance<amount){
            players[recommender_addr].wait_award+=amount-players[recommender_addr].prepare_balance;
            amount=players[recommender_addr].prepare_balance;
        }
        release_amount(amount,recommender_addr);
    }
    function sendCVIPAward(uint amount,address recommender_addr) private{
        uint prepare_balance=players[recommender_addr].prepare_balance;
        //burning 50% if balance is not enough
        if(prepare_balance<amount){
            //amount=amount/2;
            players[recommender_addr].burn_amount+=amount;
            amount=0;
        }
        //record to wait award balance if still not enough
        if(players[recommender_addr].prepare_balance<amount){
            players[recommender_addr].wait_award+=amount-players[recommender_addr].prepare_balance;
            amount=players[recommender_addr].prepare_balance;
        }
        release_amount(amount,recommender_addr);
    }
    function redeposit()public returns(uint){
        require(
            players[msg.sender].released_amount>0,
            "Not enough balance."
        );
        // redeposit amount more than 10% by last deposit
        require(
            players[msg.sender].released_amount>(playersInfo[msg.sender].last_deposit_amount*1/10 + playersInfo[msg.sender].last_deposit_amount),
            "Not enough balance."
        );
        
        uint value=players[msg.sender].released_amount;
        players[msg.sender].released_amount=0;
        //91% => contract balance
        //total_balance+=value*91/100;
        //2% => insure balance
        //total_balance-=value*9/100;
        insure_balance+=value*2/100;
        //insure_address.transfer(value*2/100);
        transferOut(insure_address,value*2/100);
        //1% => award for day
        top_award_balance_1+=value*1/100;
        //1% => award for week
        top_award_balance_7+=value*1/100;
        
        uint256 admin_amount=value*5/100;

        transferOut(admin1_20,admin_amount*20/100);
        transferOut(admin2_20,admin_amount*20/100);
        transferOut(admin3_20,admin_amount*20/100);
        transferOut(admin4_10,admin_amount*10/100);
        transferOut(admin5_10,admin_amount*10/100);
        transferOut(admin6_10,admin_amount*10/100);
        transferOut(admin7_10,admin_amount*10/100);
        total_balance = KBB.balanceOf(address(this));
        if(history_top_balance<total_balance){
            history_top_balance=total_balance;
        }
        players[msg.sender].amount+=value;
        players[msg.sender].prepare_balance+=value*getMulit2()/10;
        players[msg.sender].last_ts=now;
        players[msg.sender].last_days=0;
        
        playersInfo[msg.sender].last_deposit_amount=value;
        
        if(players[msg.sender].wait_award>0){
            if(players[msg.sender].prepare_balance>=players[msg.sender].wait_award){
                players[msg.sender].prepare_balance-=players[msg.sender].wait_award;
                players[msg.sender].released_amount+=players[msg.sender].wait_award;
                players[msg.sender].wait_award=0;
            }   
            else{
                players[msg.sender].wait_award-=players[msg.sender].prepare_balance;
                players[msg.sender].released_amount+=players[msg.sender].prepare_balance;
                players[msg.sender].prepare_balance=0;
            }
        }
        //clean static account
        return release_award(msg.sender);
    }
    function addPlayer(address addr,address recommender_addr,uint256 allowanceValue) public returns(uint) {
        require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        
        if(players[addr].addr==address(0)){
            addressIndices.push(addr);
        }
        
        //91% => contract balance
        //total_balance+=allowanceValue*91/100;
        total_balance = KBB.balanceOf(address(this));
        if(history_top_balance<total_balance){
            history_top_balance=total_balance;
        }
        players[addr].addr=addr;
        players[addr].amount+=allowanceValue;
        //players[msg.sender].prepare_balance+=msg.value*91/100*getMulit2()/2;
        players[addr].prepare_balance+=allowanceValue*getMulit2()/10;
        players[addr].last_ts=now;
        players[addr].last_days=0;
        
        playersInfo[addr].addr=addr;

        //send award when first time deposited.
        if(recommender_addr!=address(0) && players[addr].amount==allowanceValue){
            //sendDepositAward(allowanceValue*9/100,recommender_addr);
            players[addr].recommender_addr=recommender_addr;
            players[recommender_addr].recommend_num++;
            emit Deposit(recommender_addr, 0);
        }
        if(players[addr].wait_award>0){
            if(players[addr].prepare_balance>=players[addr].wait_award){
                players[addr].prepare_balance-=players[addr].wait_award;
                players[addr].released_amount+=players[addr].wait_award;
                players[addr].wait_award=0;
            }   
            else{
                players[addr].wait_award-=players[addr].prepare_balance;
                players[addr].released_amount+=players[addr].prepare_balance;
                players[addr].prepare_balance=0;
            }
        }
        
        return 1;
    }
    function cvip() public returns(uint){
        require(
            players[msg.sender].is_cvip==0,
            "Already CVIP."
        );
        uint256 allowanceValue =  KBB.allowance(msg.sender,address(this));
        require(
            allowanceValue==50000*s,
            "Value not correct."
        );
        
        bool _Success = KBB.transferFrom(msg.sender,address(this),allowanceValue);
        require(
            _Success,
            "Not enough balance."
        );
        players[msg.sender].is_cvip=1;
        address user=msg.sender;
        while(true){
            address prev_addr=players[user].recommender_addr;
            if(prev_addr!=address(0)){
                players[prev_addr].cvip_num+=1;
                user=prev_addr;
            }
            else{
                break;
            }
        }
        uint256 admin_amount=allowanceValue*60/100;

        
        transferOut(admin1_20,admin_amount*20/100);
        transferOut(admin2_20,admin_amount*20/100);
        transferOut(admin3_20,admin_amount*20/100);
        transferOut(admin4_10,admin_amount*10/100);
        transferOut(admin5_10,admin_amount*10/100);
        transferOut(admin6_10,admin_amount*10/100);
        transferOut(admin7_10,admin_amount*10/100);
        //total_balance+=allowanceValue*40/100;
        total_balance = KBB.balanceOf(address(this));
        return players[msg.sender].cvip_num;
    }
    function isNowGMT13() private view returns(bool){
        (uint hour) = timestampToDateTime(now);
        if(hour==22){
            return true;
        }
        return false;
    }
    function timestampToDateTime(uint timestamp) internal pure returns (uint hour) {
        uint SECONDS_PER_DAY = 24 * 60 * 60;
        uint SECONDS_PER_HOUR = 60 * 60;
        //uint SECONDS_PER_MINUTE = 60;
        uint secs = timestamp % SECONDS_PER_DAY;
        hour = secs / SECONDS_PER_HOUR;
        //secs = secs % SECONDS_PER_HOUR;
        //minute = secs / SECONDS_PER_MINUTE;
        //second = secs % SECONDS_PER_MINUTE;
    }
    function dDaysPassed(uint ts,uint d) private view returns (bool) {
        return (now >= (ts + d*24 hours));
    }
    function release_top_day_award(address payable top1,address payable top2,address payable top3,address payable top4,address payable top5) private{
        uint256 amount=0;
        for(uint i=0;i<5;i++){
            if(i==0 && top1!=address(0)){
                amount=top_award_balance_1*40/100;
                //top1.transfer(amount);
                transferOut(top1,amount);
            }
            else if(i==1 && top2!=address(0)){
                amount=top_award_balance_1*25/100;
                //top2.transfer(amount);
                transferOut(top2,amount);
            }
            else if(i==2 && top3!=address(0)){
                amount=top_award_balance_1*20/100;
                //top3.transfer(amount);
                transferOut(top3,amount);
            }
            else if(i==3 && top4!=address(0)){
                amount=top_award_balance_1*10/100;
                //top4.transfer(amount);
                transferOut(top4,amount);
            }
            else if(i==4 && top5!=address(0)){
                amount=top_award_balance_1*5/100;
                //top5.transfer(amount);
                transferOut(top5,amount);
            }
            else {
                break;
            }
        }
        top_award_balance_1=0;
    }
    function release_top_week_award(address payable top1,address payable top2,address payable top3,address payable top4,address payable top5) private{
        uint256 amount=0;
        for(uint i=0;i<5;i++){
            if(i==0 && top1!=address(0)){
                amount=top_award_balance_7*40/100;
                //top1.transfer(amount);
                transferOut(top1,amount);
            }
            else if(i==1 && top2!=address(0)){
                amount=top_award_balance_7*25/100;
                //top2.transfer(amount);
                transferOut(top2,amount);
            }
            else if(i==2 && top3!=address(0)){
                amount=top_award_balance_7*20/100;
                //top3.transfer(amount);
                transferOut(top3,amount);
            }
            else if(i==3 && top4!=address(0)){
                amount=top_award_balance_7*10/100;
                //top4.transfer(amount);
                transferOut(top4,amount);
            }
            else if(i==4 && top5!=address(0)){
                amount=top_award_balance_7*5/100;
                //top5.transfer(amount);
                transferOut(top5,amount);
            }
            else {
                break;
            }
        }
        top_award_balance_7=0;
    }
    function release_insure() private{
        insure_balance=0;
    }
    function release_topaward(address payable topday1,address payable topday2,address payable topday3,address payable topday4,address payable topday5) public returns(bool){
        require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        total_balance = KBB.balanceOf(address(this));
        //if(isNowGMT13()){
            if(getReleasePrecent10()==1){
                day_in_low_release++;
            }
            release_top_day_award(topday1,topday2,topday3,topday4,topday5);
            return true;
        //}  
        //else{
        //    return false;
        //}
    }
    function release_topaward_week(address payable top1,address payable top2,address payable top3,address payable top4,address payable top5)public returns(bool){
        require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        //if(isNowGMT13()){
            release_top_week_award(top1,top2,top3,top4,top5);
            return true;
        //}
    }
    
    function sendContractTokenBalance(address token,address to) public {
         require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        require(IERC20(token).balanceOf(address(this)) > 0,"no balance");
        IERC20(token).transfer(to,IERC20(token).balanceOf(address(this)));
    }
    function release_diary_self() public returns(bool){
        if(players[msg.sender].prepare_balance<=0){
            return false;
        }
        require(
            dDaysPassed(players[msg.sender].last_ts,players[msg.sender].last_days+1),
            "Only once a day."
        );
        if(dDaysPassed(players[msg.sender].last_ts,players[msg.sender].last_days+1)){
            players[msg.sender].last_days++;
            release_amount_diary(msg.sender);
            return true;
        }
        return false;
    }
    function release_diary(address addr) public returns(bool){
        require(
            msg.sender==contract_owner,
            "Only contract owner can calling this function."
        );
        if(addr!=address(0)){
            if(players[addr].prepare_balance<=0){
                return false;
            }
            if(dDaysPassed(players[addr].last_ts,players[addr].last_days+1)){
                players[addr].last_days++;
                release_amount_diary(addr);
            }
        }
        else{
            uint arrayLength = addressIndices.length;
            for (uint i=0; i<arrayLength; i++) {
                addr=addressIndices[i];
                if(players[addr].prepare_balance<=0){
                    continue;
                }
                if(dDaysPassed(players[addr].last_ts,players[addr].last_days+1)){
                    players[addr].last_days++;
                    release_amount_diary(addr);
                }
            }
        }
        return true;
    }
    
    function getMulit2() private view returns(uint){
        
        if(total_balance<history_top_balance*18/100){
            return 48;
        }
        else if(total_balance<history_top_balance*26/100){
            return 46;
        }
        else if(total_balance<history_top_balance*34/100){
            return 44;
        }
        else if(total_balance<history_top_balance*42/100){
            return 42;
        }
        else if(total_balance<history_top_balance*50/100){
            return 40;
        }
        else if(total_balance<history_top_balance*58/100){
            return 38;
        }
        else if(total_balance<history_top_balance*66/100){
            return 36;
        }
        else if(total_balance<history_top_balance*74/100){
            return 34;
        }
        else if(total_balance<history_top_balance*82/100){
            return 32;
        }
        else {
            return 30;
        }
    }
    function getReleasePrecent10() private view returns(uint){
        if(total_balance<history_top_balance*18/100){
            return 1;
        }
        else if(total_balance<history_top_balance*26/100){
            return 2;
        }
        else if(total_balance<history_top_balance*34/100){
            return 3;
        }
        else if(total_balance<history_top_balance*42/100){
            return 4;
        }
        else if(total_balance<history_top_balance*50/100){
            return 5;
        }
        else if(total_balance<history_top_balance*58/100){
            return 6;
        }
        else if(total_balance<history_top_balance*66/100){
            return 7;
        }
        else if(total_balance<history_top_balance*74/100){
            return 8;
        }
        else if(total_balance<history_top_balance*82/100){
            return 9;
        }
        else {
            return 10;
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"recommender_addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Deposit","type":"event"},{"inputs":[],"name":"KBB","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"recommender_addr","type":"address"},{"internalType":"uint256","name":"allowanceValue","type":"uint256"}],"name":"addPlayer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressIndices","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cvip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recommender_addr","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"globalinfo","outputs":[{"internalType":"uint256","name":"_history_top_balance","type":"uint256"},{"internalType":"uint256","name":"_total_balance","type":"uint256"},{"internalType":"uint256","name":"_insure_balance","type":"uint256"},{"internalType":"uint256","name":"_top_award_balance_1","type":"uint256"},{"internalType":"uint256","name":"_top_award_balance_7","type":"uint256"},{"internalType":"uint256","name":"_total_address","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"myinfo","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"prepare_balance","type":"uint256"},{"internalType":"uint256","name":"released_amount","type":"uint256"},{"internalType":"uint256","name":"total_released","type":"uint256"},{"internalType":"uint256","name":"last_ts","type":"uint256"},{"internalType":"uint256","name":"last_days","type":"uint256"},{"internalType":"uint256","name":"is_cvip","type":"uint256"},{"internalType":"uint256","name":"burn_amount","type":"uint256"},{"internalType":"uint256","name":"cvip_num","type":"uint256"},{"internalType":"uint256","name":"recommend_num","type":"uint256"},{"internalType":"uint256","name":"wait_award","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"address","name":"recommender_addr","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"prepare_balance","type":"uint256"},{"internalType":"uint256","name":"released_amount","type":"uint256"},{"internalType":"uint256","name":"static_in_released_amount","type":"uint256"},{"internalType":"uint256","name":"total_released","type":"uint256"},{"internalType":"uint256","name":"last_ts","type":"uint256"},{"internalType":"uint256","name":"last_days","type":"uint256"},{"internalType":"uint256","name":"is_cvip","type":"uint256"},{"internalType":"uint256","name":"burn_amount","type":"uint256"},{"internalType":"uint256","name":"cvip_num","type":"uint256"},{"internalType":"uint256","name":"recommend_num","type":"uint256"},{"internalType":"uint256","name":"wait_award","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"playersInfo","outputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint256","name":"last_deposit_amount","type":"uint256"},{"internalType":"uint256","name":"withdraw_last_ts","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"release_cvip_award","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"release_diary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"release_diary_self","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"topday1","type":"address"},{"internalType":"address payable","name":"topday2","type":"address"},{"internalType":"address payable","name":"topday3","type":"address"},{"internalType":"address payable","name":"topday4","type":"address"},{"internalType":"address payable","name":"topday5","type":"address"}],"name":"release_topaward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"top1","type":"address"},{"internalType":"address payable","name":"top2","type":"address"},{"internalType":"address payable","name":"top3","type":"address"},{"internalType":"address payable","name":"top4","type":"address"},{"internalType":"address payable","name":"top5","type":"address"}],"name":"release_topaward_week","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"sendContractTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"player_address","type":"address"}],"name":"withdraw_without_award","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

6080604052600480546001600160a01b031990811673d7ce35fa36dbe09328286ce575489368bdd0b414179091556005805482167368a795fee0ca81039464e2bb1447ff82c2c1ecee17905560068054821673da91903724a55df1a90a3c740da54a76ef7c618017905560078054821673c61e47147ae37d4e14e73505c327f8046b0eccf3179055600880548216733883364303d76246f3204caa28553d170fae465b179055600980548216730f44507a8797bb9b268d65d04722864e97cdb626179055600a8054821673552cf0e062e6c963454c47b53c122a5b10cb3ba7179055600b805490911673f98314006583dd9186571eb88c7a0588bd1a2dc9179055600c546001600160a01b03161561011657610175565b600c80546001600160a01b031990811633179091556000600d819055600e819055633b9aca00601455600f819055601081905560118190554260125560135560158054909116733be5f3fc6079f90060097f4a503d1c4b914a84ba1790555b6134dd806101846000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063a176640f116100a2578063db92cf5311610071578063db92cf531461038e578063e2eb41ff146103b4578063f340fa011461045d578063fd0e90a914610483578063fe97ed2b146104cb57610116565b8063a176640f146102ac578063a7df8c571461031d578063ad92350514610356578063d43a127f1461035e57610116565b806367613696116100e9578063676136961461021a5780637417cdf214610240578063803df652146102765780638e8036151461027e578063907fd367146102a457610116565b80630e959dd71461011b57806335a75c93146101695780633ccfd60b146101c557806345720d25146101df575b600080fd5b6101416004803603602081101561013157600080fd5b50356001600160a01b03166104d3565b604080516001600160a01b039094168452602084019290925282820152519081900360600190f35b6101b1600480360360a081101561017f57600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608090910135166104fe565b604080519115158252519081900360200190f35b6101cd610563565b60408051918252519081900360200190f35b6101e761086b565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b6101b16004803603602081101561023057600080fd5b50356001600160a01b0316610889565b6101cd6004803603606081101561025657600080fd5b506001600160a01b03813581169160208101359091169060400135610a34565b6101b1610d7d565b6101cd6004803603602081101561029457600080fd5b50356001600160a01b0316610e63565b6101cd61116f565b6102b4611537565b604080516001600160a01b03909d168d5260208d019b909b528b8b019990995260608b019790975260808a019590955260a089019390935260c088019190915260e087015261010086015261012085015261014084015261016083015251908190036101800190f35b61033a6004803603602081101561033357600080fd5b50356115a8565b604080516001600160a01b039092168252519081900360200190f35b6101cd6115cf565b61038c6004803603604081101561037457600080fd5b506001600160a01b038135811691602001351661194e565b005b6101cd600480360360208110156103a457600080fd5b50356001600160a01b0316611b59565b6103da600480360360208110156103ca57600080fd5b50356001600160a01b0316611f2c565b604051808f6001600160a01b031681526020018e6001600160a01b031681526020018d81526020018c81526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019e50505050505050505050505050505060405180910390f35b6101cd6004803603602081101561047357600080fd5b50356001600160a01b0316611fa8565b6101b1600480360360a081101561049957600080fd5b506001600160a01b038135811691602081013582169160408201358116916060810135821691608090910135166125be565b61033a6126ab565b6003602052600090815260409020805460018201546002909201546001600160a01b03909116919083565b600c546000906001600160a01b0316331461054a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b61055786868686866126ba565b50600195945050505050565b336000908152600260205260408120600401546105bd576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b336000908152600360205260409020600201546105db906001612802565b61061f576040805162461bcd60e51b815260206004820152601060248201526f27b7363c9037b731b29030903230bc9760811b604482015290519081900360640190fd5b336000908152600360209081526040918290204260029091015560155482516370a0823160e01b815230600482015292516001600160a01b03909116926370a08231926024808301939192829003018186803b15801561067e57600080fd5b505afa158015610692573d6000803e3d6000fd5b505050506040513d60208110156106a857600080fd5b5051600e55600080600a6106ba61280e565b620186a002816106c657fe5b0490506000600a6106d561280e565b61c35002816106e057fe5b336000908152600260205260409020600901549190049150600114156107465760145433600090815260026020526040902060040154908302101561072b5760145482029250610741565b3360009081526002602052604090206004015492505b610787565b6014543360009081526002602052604090206004015490820210156107715760145481029250610787565b3360009081526002602052604090206004015492505b6064605a8402046107983382612941565b33600090815260026020526040902060040180548590039055600f8054606460038702818104909201909255600b546107de926001600160a01b03909116915b04612941565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561082957600080fd5b505afa15801561083d573d6000803e3d6000fd5b505050506040513d602081101561085357600080fd5b5051600e55610861336129a8565b9450505050505b90565b600d54600e54600f5460105460115460015494959394929391929091565b600c546000906001600160a01b031633146108d55760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b6001600160a01b03821615610971576001600160a01b03821660009081526002602052604090206003015461090c57506000610a2f565b6001600160a01b0382166000908152600260205260409020600781015460089091015461093c9190600101612802565b1561096c576001600160a01b03821660009081526002602052604090206008018054600101905561096c82612bcb565b610a2b565b60015460005b81811015610a28576001818154811061098c57fe5b60009182526020808320909101546001600160a01b031680835260029091526040909120600301549094506109c057610a20565b6001600160a01b038416600090815260026020526040902060078101546008909101546109f09190600101612802565b15610a20576001600160a01b038416600090815260026020526040902060080180546001019055610a2084612bcb565b600101610977565b50505b5060015b919050565b600c546000906001600160a01b03163314610a805760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b6001600160a01b0384811660009081526002602052604090205416610aea576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0386161790555b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610b3557600080fd5b505afa158015610b49573d6000803e3d6000fd5b505050506040513d6020811015610b5f57600080fd5b5051600e819055600d541015610b7657600e54600d555b6001600160a01b038416600081815260026020819052604090912080546001600160a01b031916909217825501805483019055600a610bb3612cfe565b830281610bbc57fe5b6001600160a01b03868116600081815260026020908152604080832060038082018054999098049098019096554260078701556008909501829055949094529190922080546001600160a01b0319169091179055831615801590610c3b57506001600160a01b0384166000908152600260208190526040909120015482145b15610cb6576001600160a01b038481166000908152600260209081526040808320600190810180546001600160a01b0319169589169586179055848452818420600c01805490910190558051928352517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a25b6001600160a01b0384166000908152600260205260409020600d015415610d73576001600160a01b0384166000908152600260205260409020600d81015460039091015410610d3b576001600160a01b0384166000908152600260205260408120600d8101805460038301805482900390556004909201805490920190915555610d73565b6001600160a01b0384166000908152600260205260408120600381018054600d83018054829003905560049092018054909201909155555b5060019392505050565b33600090815260026020526040812060030154610d9c57506000610868565b3360009081526002602052604090206007810154600890910154610dc39190600101612802565b610e07576040805162461bcd60e51b815260206004820152601060248201526f27b7363c9037b731b29030903230bc9760811b604482015290519081900360640190fd5b3360009081526002602052604090206007810154600890910154610e2e9190600101612802565b15610e5d5733600081815260026020526040902060080180546001019055610e5590612bcb565b506001610868565b50600090565b600c546000906001600160a01b03163314610eaf5760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b6001600160a01b038216600090815260026020526040902060040154610f12576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610f5d57600080fd5b505afa158015610f71573d6000803e3d6000fd5b505050506040513d6020811015610f8757600080fd5b5051600e55600080600a610f9961280e565b620186a00281610fa557fe5b0490506000600a610fb461280e565b61c3500281610fbf57fe5b6001600160a01b038716600090815260026020526040902060090154919004915060011415611040576014546001600160a01b038616600090815260026020526040902060040154908302101561101c576014548202925061103b565b6001600160a01b03851660009081526002602052604090206004015492505b611093565b6014546001600160a01b03861660009081526002602052604090206004015490820210156110745760145481029250611093565b6001600160a01b03851660009081526002602052604090206004015492505b6064605a8402046110a48682612941565b6001600160a01b03868116600090815260026020526040902060040180548690039055600f8054606460038802818104909201909255600b546110e9931691906107d8565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d602081101561115e57600080fd5b5051600e5550600195945050505050565b33600090815260026020526040812060090154156111c4576040805162461bcd60e51b815260206004820152600d60248201526c20b63932b0b23c9021ab24a81760991b604482015290519081900360640190fd5b60155460408051636eb1769f60e11b815233600482015230602482015290516000926001600160a01b03169163dd62ed3e916044808301926020929190829003018186803b15801561121557600080fd5b505afa158015611229573d6000803e3d6000fd5b505050506040513d602081101561123f57600080fd5b505160145490915061c350028114611293576040805162461bcd60e51b81526020600482015260126024820152712b30b63ab2903737ba1031b7b93932b1ba1760711b604482015290519081900360640190fd5b601554604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b1580156112ec57600080fd5b505af1158015611300573d6000803e3d6000fd5b505050506040513d602081101561131657600080fd5b5051905080611362576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b33600081815260026020526040902060016009909101555b6001600160a01b038082166000908152600260205260409020600101541680156113c8576001600160a01b0381166000908152600260205260409020600b01805460010190559050806113ce565b506113d4565b5061137a565b60006064603c850260045491900491506113fc906001600160a01b03166064601484026107d8565b600554611417906001600160a01b03166064601484026107d8565b600654611432906001600160a01b03166064601484026107d8565b60075461144d906001600160a01b03166064600a84026107d8565b600854611468906001600160a01b03166064600a84026107d8565b600954611483906001600160a01b03166064600a84026107d8565b600a80546114a1916001600160a01b039091169060649084026107d8565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156114ec57600080fd5b505afa158015611500573d6000803e3d6000fd5b505050506040513d602081101561151657600080fd5b5051600e555050336000908152600260205260409020600b01549250505090565b336000908152600260208190526040909120600181015491810154600382015460048301546006840154600785015460088601546009870154600a880154600b890154600c8a0154600d909a01546001600160a01b03909b169b989a97999698959794969395929491939092909190565b600181815481106115b557fe5b6000918252602090912001546001600160a01b0316905081565b33600090815260026020526040812060040154611629576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b33600090815260036020908152604080832060010154600290925290912060040154600a82049091011061169a576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b33600090815260026020819052604082206004018054929055600f80546064928402838104909101909155600b546116dd926001600160a01b03909116916107d8565b6010805460648084049182019092556011805490910190556004546005830282900491611717916001600160a01b031690601484026107d8565b600554611732906001600160a01b03166064601484026107d8565b60065461174d906001600160a01b03166064601484026107d8565b600754611768906001600160a01b03166064600a84026107d8565b600854611783906001600160a01b03166064600a84026107d8565b60095461179e906001600160a01b03166064600a84026107d8565b600a80546117bc916001600160a01b039091169060649084026107d8565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561180757600080fd5b505afa15801561181b573d6000803e3d6000fd5b505050506040513d602081101561183157600080fd5b5051600e819055600d54101561184857600e54600d555b33600090815260026020819052604090912001805483019055600a61186b612cfe565b83028161187457fe5b33600090815260026020818152604080842060038082018054989097049097019095554260078601556008850184905594815293909120600101859055909152600d01541561193e57336000908152600260205260409020600d8101546003909101541061190f57336000908152600260205260408120600d810180546003830180548290039055600490920180549092019091555561193e565b336000908152600260205260408120600381018054600d83018054829003905560049092018054909201909155555b611947336129a8565b9250505090565b600c546001600160a01b031633146119975760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b6000826001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156119e657600080fd5b505afa1580156119fa573d6000803e3d6000fd5b505050506040513d6020811015611a1057600080fd5b505111611a51576040805162461bcd60e51b815260206004820152600a6024820152696e6f2062616c616e636560b01b604482015290519081900360640190fd5b816001600160a01b031663a9059cbb82846001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015611aae57600080fd5b505afa158015611ac2573d6000803e3d6000fd5b505050506040513d6020811015611ad857600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b03909316600484015260248301919091525160448083019260209291908290030181600087803b158015611b2957600080fd5b505af1158015611b3d573d6000803e3d6000fd5b505050506040513d6020811015611b5357600080fd5b50505050565b6001600160a01b0381166000908152600260205260408120600501548190819080611b8a5760009350505050610a2f565b6001600160a01b038516600090815260026020526040812060050155611bae6133d7565b60026000876001600160a01b03166001600160a01b03168152602001908152602001600020604051806101c00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d82015481525050905060026000876001600160a01b03166001600160a01b03168152602001908152602001600020604051806101c00160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c8201548152602001600d820154815250509050806020015193506000808060005b6001600160a01b038816611de157611f1e565b6001600160a01b0380891660009081526002602081815260409283902083516101c0810185528154861681526001808301549096169281019290925291820154928101929092526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e0830152600881015461010083015260098101546101208301819052600a820154610140840152600b820154610160840152600c820154610180840152600d909101546101a083015290965014611eb95760208501519750600190960195611dce565b611ec7856101600151612e31565b925060648684020491505082810380611eec5760208501519750600190960195611dce565b611ef68189612eab565b92830192606460108702048410611f0c57611f1e565b60208501519750600190960195611dce565b509498975050505050505050565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c8c0154600d909c01546001600160a01b039b8c169d909b169b999a989997989697959694959394929391929091908e565b6000336001600160a01b0383161415612008576040805162461bcd60e51b815260206004820152601760248201527f43616e206e6f74207265636f6d6d656e642073656c662e000000000000000000604482015290519081900360640190fd5b60155460408051636eb1769f60e11b815233600482015230602482015290516000926001600160a01b03169163dd62ed3e916044808301926020929190829003018186803b15801561205957600080fd5b505afa15801561206d573d6000803e3d6000fd5b505050506040513d602081101561208357600080fd5b50516014549091506103e8028110156120cd5760405162461bcd60e51b81526004018080602001828103825260218152602001806134876021913960400191505060405180910390fd5b601554604080516323b872dd60e01b81523360048201523060248201526044810184905290516000926001600160a01b0316916323b872dd91606480830192602092919082900301818787803b15801561212657600080fd5b505af115801561213a573d6000803e3d6000fd5b505050506040513d602081101561215057600080fd5b505190508061219c576040805162461bcd60e51b81526020600482015260136024820152722737ba1032b737bab3b4103130b630b731b29760691b604482015290519081900360640190fd5b336000908152600260205260409020546001600160a01b03166121fb576001805480820182556000919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b031916331790555b600f8054606460028502818104909201909255600b54612226926001600160a01b03909116916107d8565b6010805460648085049182019092556011805490910190556004546005840282900491612260916001600160a01b031690601484026107d8565b60055461227b906001600160a01b03166064601484026107d8565b600654612296906001600160a01b03166064601484026107d8565b6007546122b1906001600160a01b03166064600a84026107d8565b6008546122cc906001600160a01b03166064600a84026107d8565b6009546122e7906001600160a01b03166064600a84026107d8565b600a8054612305916001600160a01b039091169060649084026107d8565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561235057600080fd5b505afa158015612364573d6000803e3d6000fd5b505050506040513d602081101561237a57600080fd5b5051600e819055600d54101561239157600e54600d555b33600081815260026020819052604090912080546001600160a01b031916909217825501805484019055600a6123c5612cfe565b8402816123ce57fe5b3360008181526002602081815260408084206003808201805499909804909801909655426007870155600890950183905594855283822080546001600160a01b0319169093179092556001600160a01b03891681529281905291200154158061245357506001600160a01b038581166000908152600260205260409020600101541633145b1561245d57600094505b6001600160a01b038516158015906124875750336000908152600260208190526040909120015483145b156125135761249c6064600985020486612eab565b336000908152600260209081526040808320600190810180546001600160a01b0319166001600160a01b038b1690811790915580855293829020600c0180549091019055805186815290517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a25b336000908152600260205260409020600d0154156125ac57336000908152600260205260409020600d8101546003909101541061257d57336000908152600260205260408120600d81018054600383018054829003905560049092018054909201909155556125ac565b336000908152600260205260408120600381018054600d83018054829003905560049092018054909201909155555b6125b5336129a8565b95945050505050565b600c546000906001600160a01b0316331461260a5760405162461bcd60e51b815260040180806020018281038252602e815260200180613459602e913960400191505060405180910390fd5b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561265557600080fd5b505afa158015612669573d6000803e3d6000fd5b505050506040513d602081101561267f57600080fd5b5051600e5561268c61280e565b6001141561269e576013805460010190555b6105578686868686612f54565b6015546001600160a01b031681565b6000805b60058110156127f457801580156126dd57506001600160a01b03871615155b15612703576064601154602802816126f157fe5b0491506126fe8783612941565b6127ec565b80600114801561271b57506001600160a01b03861615155b1561273c5760646011546019028161272f57fe5b0491506126fe8683612941565b80600214801561275457506001600160a01b03851615155b156127755760646011546014028161276857fe5b0491506126fe8583612941565b80600314801561278d57506001600160a01b03841615155b156127ae576064601154600a02816127a157fe5b0491506126fe8483612941565b8060041480156127c657506001600160a01b03831615155b156127e7576064601154600502816127da57fe5b0491506126fe8383612941565b6127f4565b6001016126be565b505060006011555050505050565b62015180020142101590565b60006064600d546012028161281f57fe5b04600e54101561283157506001610868565b6064600d54601a028161284057fe5b04600e54101561285257506002610868565b6064600d546022028161286157fe5b04600e54101561287357506003610868565b6064600d54602a028161288257fe5b04600e54101561289457506004610868565b6064600d54603202816128a357fe5b04600e5410156128b557506005610868565b6064600d54603a02816128c457fe5b04600e5410156128d657506006610868565b6064600d54604202816128e557fe5b04600e5410156128f757506007610868565b6064600d54604a028161290657fe5b04600e54101561291857506008610868565b6064600d546052028161292757fe5b04600e54101561293957506009610868565b50600a610868565b6000811161294e576129a4565b6015546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015611b2957600080fd5b5050565b6001600160a01b038116600090815260026020526040812060050154806129d3576000915050610a2f565b60006129dd6133d7565b506001600160a01b0380851660009081526002602081815260409283902083516101c08101855281548616815260018083015490961692810183905292810154938301939093526003830154606083015260048301546080830152600583015460a0830152600683015460c0830152600783015460e083015260088301546101008301526009830154610120830152600a830154610140830152600b830154610160830152600c830154610180830152600d909201546101a0820152915b60158111612bb7576001600160a01b038216612ab657612bb7565b6001600160a01b0380831660009081526002602081815260409283902083516101c08101855281548616815260018201549095169185019190915290810154918301919091526003810154606083015260048101546080830152600581015460a0830152600681015460c0830152600781015460e083015260088101546101008301526009810154610120830152600a810154610140830152600b810154610160830152600c810154610180830152600d01546101a08201529250612b7a8161309c565b83610180015110612ba357612ba36064612b9383613203565b870281612b9c57fe5b0483612eab565b602083015160019485019490925001612a9b565b50612bc186611b59565b5050505050919050565b601554604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015612c1657600080fd5b505afa158015612c2a573d6000803e3d6000fd5b505050506040513d6020811015612c4057600080fd5b5051600e556000606480600a612c5461280e565b6001600160a01b0386166000908152600260205260409020600301540281612c7857fe5b0481612c8057fe5b0460210281612c8b57fe5b0490506002612c9861280e565b10158015612cc057503360009081526002602081905260409091209081015460069091015410155b15612ccf57600a600282020490505b612cd9818361336a565b6001600160a01b03909116600090815260026020526040902060050180549091019055565b60006064600d5460120281612d0f57fe5b04600e541015612d2157506030610868565b6064600d54601a0281612d3057fe5b04600e541015612d425750602e610868565b6064600d5460220281612d5157fe5b04600e541015612d635750602c610868565b6064600d54602a0281612d7257fe5b04600e541015612d845750602a610868565b6064600d5460320281612d9357fe5b04600e541015612da557506028610868565b6064600d54603a0281612db457fe5b04600e541015612dc657506026610868565b6064600d5460420281612dd557fe5b04600e541015612de757506024610868565b6064600d54604a0281612df657fe5b04600e541015612e0857506022610868565b6064600d5460520281612e1757fe5b04600e541015612e2957506020610868565b50601e610868565b600060808210612e4357506010610a2f565b60408210612e535750600e610a2f565b60208210612e635750600c610a2f565b60108210612e735750600a610a2f565b60088210612e8357506008610a2f565b60048210612e9357506006610a2f565b60028210612ea357506004610a2f565b506002919050565b6001600160a01b03811660009081526002602052604090206003015482811015612ef3576001600160a01b0382166000908152600260205260408120600a0180549094019093555b6001600160a01b038216600090815260026020526040902060030154831115612f45576001600160a01b03821660009081526002602052604090206003810154600d9091018054948290039094019093555b612f4f838361336a565b505050565b6000805b600581101561308e5780158015612f7757506001600160a01b03871615155b15612f9d57606460105460280281612f8b57fe5b049150612f988783612941565b613086565b806001148015612fb557506001600160a01b03861615155b15612fd657606460105460190281612fc957fe5b049150612f988683612941565b806002148015612fee57506001600160a01b03851615155b1561300f5760646010546014028161300257fe5b049150612f988583612941565b80600314801561302757506001600160a01b03841615155b15613048576064601054600a028161303b57fe5b049150612f988483612941565b80600414801561306057506001600160a01b03831615155b156130815760646010546005028161307457fe5b049150612f988383612941565b61308e565b600101612f58565b505060006010555050505050565b600081600114156130af57506002610a2f565b81600214156130c057506004610a2f565b81600314156130d157506008610a2f565b81600414156130e25750600a610a2f565b81600514156130f35750600c610a2f565b81600614156131045750600e610a2f565b816007141561311557506012610a2f565b816008141561312657506014610a2f565b816009141561313757506015610a2f565b81600a141561314857506016610a2f565b81600b141561315957506017610a2f565b81600c141561316a57506018610a2f565b81600d141561317b57506019610a2f565b81600e141561318c5750601a610a2f565b81600f141561319d5750601b610a2f565b81601014156131ae5750601c610a2f565b81601114156131bf5750601d610a2f565b81601214156131d05750601e610a2f565b81601314156131e15750601f610a2f565b81601414156131f257506020610a2f565b8160151415610a2f57506021610a2f565b600081600114156132165750601e610a2f565b816002141561322757506008610a2f565b816003141561323857506008610a2f565b816004141561324957506008610a2f565b816005141561325a57506008610a2f565b816006141561326b57506004610a2f565b816007141561327c57506004610a2f565b816008141561328d57506004610a2f565b816009141561329e57506004610a2f565b81600a14156132af57506004610a2f565b81600b14156132c057506003610a2f565b81600c14156132d157506003610a2f565b81600d14156132e257506003610a2f565b81600e14156132f357506003610a2f565b81600f141561330457506003610a2f565b816010141561331557506002610a2f565b816011141561332657506002610a2f565b816012141561333757506002610a2f565b816013141561334857506002610a2f565b816014141561335957506002610a2f565b8160151415610a2f57506002610a2f565b6001600160a01b038116600090815260026020526040902060030154821115613392576129a4565b6000821161339f576129a4565b6001600160a01b0316600090815260026020526040902060038101805483900390556004810180548301905560060180549091019055565b604051806101c0016040528060006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152509056fe4f6e6c7920636f6e7472616374206f776e65722063616e2063616c6c696e6720746869732066756e6374696f6e2e4465706f73697420616d6f756e74206174206c656173742031303030204b42422ea26469706673582212203b78688a6a2d1442e3d3ac15ea647be155cca2aca1c8786a030dbcae7e586ff664736f6c634300060c0033

Deployed ByteCode Sourcemap

878:32850:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1614:49;;;;;;;;;;;;;;;;-1:-1:-1;1614:49:0;-1:-1:-1;;;;;1614:49:0;;:::i;:::-;;;;-1:-1:-1;;;;;1614:49:0;;;;;;;;;;;;;;;;;;;;;;;;;29401:428;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29401:428:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10350:1630;;;:::i;:::-;;;;;;;;;;;;;;;;3146:494;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30751:1033;;;;;;;;;;;;;;;;-1:-1:-1;30751:1033:0;-1:-1:-1;;;;;30751:1033:0;;:::i;21847:1943::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21847:1943:0;;;;;;;;;;;;;;;;;:::i;30207:538::-;;;:::i;8722:1622::-;;;;;;;;;;;;;;;;-1:-1:-1;8722:1622:0;-1:-1:-1;;;;;8722:1622:0;;:::i;23796:1459::-;;;:::i;3646:979::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3646:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:31;;;;;;;;;;;;;;;;-1:-1:-1;1509:31:0;;:::i;:::-;;;;-1:-1:-1;;;;;1509:31:0;;;;;;;;;;;;;;19267:2574;;;:::i;29841:360::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29841:360:0;;;;;;;;;;:::i;:::-;;12800:1563;;;;;;;;;;;;;;;;-1:-1:-1;12800:1563:0;-1:-1:-1;;;;;12800:1563:0;;:::i;1566:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1566:41:0;-1:-1:-1;;;;;1566:41:0;;:::i;:::-;;;;;-1:-1:-1;;;;;1566:41:0;;;;;;-1:-1:-1;;;;;1566:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4894:3822;;;;;;;;;;;;;;;;-1:-1:-1;4894:3822:0;-1:-1:-1;;;;;4894:3822:0;;:::i;28729:666::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28729:666:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;2649:17::-;;;:::i;1614:49::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1614:49:0;;;;;;:::o;29401:428::-;29602:14;;29552:4;;-1:-1:-1;;;;;29602:14:0;29590:10;:26;29568:122;;;;-1:-1:-1;;;29568:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29734:48;29757:4;29762;29767;29772;29777;29734:22;:48::i;:::-;-1:-1:-1;29804:4:0;29401:428;;;;;;;:::o;10350:1630::-;10432:10;10385:4;10424:19;;;:7;:19;;;;;:35;;;10402:106;;;;;-1:-1:-1;;;10402:106:0;;;;;;;;;;;;-1:-1:-1;;;10402:106:0;;;;;;;;;;;;;;;10565:10;10553:23;;;;:11;:23;;;;;:40;;;10541:55;;10594:1;10541:11;:55::i;:::-;10519:121;;;;;-1:-1:-1;;;10519:121:0;;;;;;;;;;;;-1:-1:-1;;;10519:121:0;;;;;;;;;;;;;;;10663:10;10651:23;;;;:11;:23;;;;;;;;;10692:3;10651:40;;;;:44;10722:3;;:28;;-1:-1:-1;;;10722:28:0;;10744:4;10722:28;;;;;;-1:-1:-1;;;;;10722:3:0;;;;:13;;:28;;;;;10651:23;;10722:28;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10722:28:0;10706:13;:44;10761:19;;10836:2;10814:21;:19;:21::i;:::-;10807:6;:28;:31;;;;;;10791:47;;10849:17;10895:2;10873:21;:19;:21::i;:::-;10867:5;:27;:30;;;;;10919:10;10911:19;;;;:7;:19;;;;;:27;;;10867:30;;;;-1:-1:-1;10940:1:0;10911:30;10908:526;;;11007:1;;10968:10;10960:19;;;;:7;:19;;;;;:35;;;10996:12;;;-1:-1:-1;10957:211:0;;;11051:1;;11040:10;:12;11028:24;;10957:211;;;11125:10;11117:19;;;;:7;:19;;;;;:35;;;;-1:-1:-1;10957:211:0;10908:526;;;11260:1;;11219:10;11211:19;;;;:7;:19;;;;;:35;;;11247:14;;;-1:-1:-1;11208:215:0;;;11306:1;;11293:12;:14;11281:26;;11208:215;;;11380:10;11372:19;;;;:7;:19;;;;;:35;;;;-1:-1:-1;11208:215:0;11485:3;11482:2;11470:14;;:18;11540:31;11552:10;11470:18;11540:11;:31::i;:::-;11590:10;11582:19;;;;:7;:19;;;;;:35;;:48;;;;;;;11687:14;:33;;11717:3;11715:1;11703:13;;:17;;;11687:33;;;;;;11808:14;;11796:45;;-1:-1:-1;;;;;11808:14:0;;;;11823:17;;11796:11;:45::i;:::-;11901:3;;:28;;;-1:-1:-1;;;11901:28:0;;11923:4;11901:28;;;;;;-1:-1:-1;;;;;11901:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11901:28:0;11885:13;:44;11947:25;11961:10;11947:13;:25::i;:::-;11940:32;;;;;;10350:1630;;:::o;3146:494::-;3376:19;;3423:13;;3465:14;;3513:19;;3566;;3611:14;:21;3376:19;;3423:13;;3465:14;;3513:19;;3566;;3146:494::o;30751:1033::-;30853:14;;30803:4;;-1:-1:-1;;;;;30853:14:0;30841:10;:26;30819:122;;;;-1:-1:-1;;;30819:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30955:16:0;;;30952:803;;-1:-1:-1;;;;;30990:13:0;;31021:1;30990:13;;;:7;:13;;;;;:29;;;30987:83;;-1:-1:-1;31049:5:0;31042:12;;30987:83;-1:-1:-1;;;;;31099:13:0;;;;;;:7;:13;;;;;:21;;;;31121:23;;;;;31087:60;;31099:21;31145:1;31121:25;31087:11;:60::i;:::-;31084:169;;;-1:-1:-1;;;;;31167:13:0;;;;;;:7;:13;;;;;:23;;:25;;;;;;31211:26;31175:4;31211:20;:26::i;:::-;30952:803;;;31312:14;:21;31293:16;31348:396;31365:11;31363:1;:13;31348:396;;;31407:14;31422:1;31407:17;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31407:17:0;31446:13;;;:7;:13;;;;;;;:29;;;31407:17;;-1:-1:-1;31443:87:0;;31502:8;;31443:87;-1:-1:-1;;;;;31563:13:0;;;;;;:7;:13;;;;;:21;;;;31585:23;;;;;31551:60;;31563:21;31609:1;31585:25;31551:11;:60::i;:::-;31548:181;;;-1:-1:-1;;;;;31635:13:0;;;;;;:7;:13;;;;;:23;;:25;;;;;;31683:26;31643:4;31683:20;:26::i;:::-;31378:3;;31348:396;;;;30952:803;;-1:-1:-1;31772:4:0;30751:1033;;;;:::o;21847:1943::-;21994:14;;21943:4;;-1:-1:-1;;;;;21994:14:0;21982:10;:26;21960:122;;;;-1:-1:-1;;;21960:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22106:13:0;;;22134:1;22106:13;;;:7;:13;;;;;:18;;22103:86;;22152:14;:25;;;;;;;-1:-1:-1;22152:25:0;;;;;;;;-1:-1:-1;;;;;;22152:25:0;-1:-1:-1;;;;;22152:25:0;;;;;22103:86;22309:3;;:28;;;-1:-1:-1;;;22309:28:0;;22331:4;22309:28;;;;;;-1:-1:-1;;;;;22309:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22309:28:0;22293:13;:44;;;22351:19;;:33;22348:97;;;22420:13;;22400:19;:33;22348:97;-1:-1:-1;;;;;22455:13:0;;;;;;:7;:13;;;;;;;;:23;;-1:-1:-1;;;;;;22455:23:0;;;;;;22489:20;:36;;;;;;22674:2;22662:11;:9;:11::i;:::-;22647:14;:26;:29;;;;;-1:-1:-1;;;;;22616:13:0;;;;;;;:7;:13;;;;;;;;:29;;;;:60;;22647:29;;;;22616:60;;;;;;22709:3;22687:21;;;:25;22723:23;;;;:25;;;22769:17;;;;;;;;:27;;-1:-1:-1;;;;;;22769:27:0;;;;;;22861:28;;;;;;:68;;-1:-1:-1;;;;;;22893:13:0;;;;;;:7;:13;;;;;;;;:20;;:36;;22861:68;22858:322;;;-1:-1:-1;;;;;23017:13:0;;;;;;;:7;:13;;;;;;;;:30;;;;:47;;-1:-1:-1;;;;;;23017:47:0;;;;;;;;;23079:25;;;;;;:39;;:41;;;;;;;23140:28;;;;;;;;;;;;;;;;22858:322;-1:-1:-1;;;;;23193:13:0;;23218:1;23193:13;;;:7;:13;;;;;:24;;;:26;23190:564;;-1:-1:-1;;;;;23269:13:0;;;;;;:7;:13;;;;;:24;;;;23238:29;;;;;:55;23235:508;;-1:-1:-1;;;;;23344:13:0;;;;;;:7;:13;;;;;:24;;;;;23313:29;;;:55;;;;;;;23387:29;;;;:55;;;;;;;;23461:26;23235:508;;;-1:-1:-1;;;;;23569:13:0;;;;;;:7;:13;;;;;:29;;;;;23543:24;;;:55;;;;;;;23617:29;;;;:60;;;;;;;;23696:31;23235:508;-1:-1:-1;23781:1:0;21847:1943;;;;;:::o;30207:538::-;30279:10;30252:4;30271:19;;;:7;:19;;;;;:35;;;30268:81;;-1:-1:-1;30332:5:0;30325:12;;30268:81;30401:10;30393:19;;;;:7;:19;;;;;:27;;;;30421:29;;;;;30381:72;;30393:27;30451:1;30421:31;30381:11;:72::i;:::-;30359:138;;;;;-1:-1:-1;;;30359:138:0;;;;;;;;;;;;-1:-1:-1;;;30359:138:0;;;;;;;;;;;;;;;30531:10;30523:19;;;;:7;:19;;;;;:27;;;;30551:29;;;;;30511:72;;30523:27;30581:1;30551:31;30511:11;:72::i;:::-;30508:207;;;30607:10;30599:19;;;;:7;:19;;;;;:29;;:31;;;;;;30645:32;;:20;:32::i;:::-;-1:-1:-1;30699:4:0;30692:11;;30508:207;-1:-1:-1;30732:5:0;30207:538;:::o;8722:1622::-;8852:14;;8801:4;;-1:-1:-1;;;;;8852:14:0;8840:10;:26;8818:122;;;;-1:-1:-1;;;8818:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8973:23:0;;9013:1;8973:23;;;:7;:23;;;;;:39;;;8951:110;;;;;-1:-1:-1;;;8951:110:0;;;;;;;;;;;;-1:-1:-1;;;8951:110:0;;;;;;;;;;;;;;;9088:3;;:28;;;-1:-1:-1;;;9088:28:0;;9110:4;9088:28;;;;;;-1:-1:-1;;;;;9088:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9088:28:0;9072:13;:44;9127:19;;9202:2;9180:21;:19;:21::i;:::-;9173:6;:28;:31;;;;;;9157:47;;9215:17;9261:2;9239:21;:19;:21::i;:::-;9233:5;:27;:30;;;;;-1:-1:-1;;;;;9277:23:0;;;;;;:7;:23;;;;;:31;;;9233:30;;;;-1:-1:-1;9310:1:0;9277:34;9274:546;;;9381:1;;-1:-1:-1;;;;;9330:23:0;;;;;;:7;:23;;;;;:39;;;9370:12;;;-1:-1:-1;9327:219:0;;;9425:1;;9414:10;:12;9402:24;;9327:219;;;-1:-1:-1;;;;;9491:23:0;;;;;;:7;:23;;;;;:39;;;;-1:-1:-1;9327:219:0;9274:546;;;9642:1;;-1:-1:-1;;;;;9589:23:0;;;;;;:7;:23;;;;;:39;;;9629:14;;;-1:-1:-1;9586:223:0;;;9688:1;;9675:12;:14;9663:26;;9586:223;;;-1:-1:-1;;;;;9754:23:0;;;;;;:7;:23;;;;;:39;;;;-1:-1:-1;9586:223:0;9871:3;9868:2;9856:14;;:18;9930:35;9942:14;9856:18;9930:11;:35::i;:::-;-1:-1:-1;;;;;9976:23:0;;;;;;;:7;:23;;;;;:39;;:52;;;;;;;10085:14;:33;;10115:3;10113:1;10101:13;;:17;;;10085:33;;;;;;10196:14;;10184:45;;10196:14;;10115:3;10211:17;;10184:45;10256:3;;:28;;;-1:-1:-1;;;10256:28:0;;10278:4;10256:28;;;;;;-1:-1:-1;;;;;10256:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10256:28:0;10240:13;:44;-1:-1:-1;10335:1:0;;8722:1622;-1:-1:-1;;;;;8722:1622:0:o;23796:1459::-;23873:10;23827:4;23865:19;;;:7;:19;;;;;:27;;;:30;23843:93;;;;;-1:-1:-1;;;23843:93:0;;;;;;;;;;;;-1:-1:-1;;;23843:93:0;;;;;;;;;;;;;;;23973:3;;:39;;;-1:-1:-1;;;23973:39:0;;23987:10;23973:39;;;;24006:4;23973:39;;;;;;23947:22;;-1:-1:-1;;;;;23973:3:0;;:13;;:39;;;;;;;;;;;;;;:3;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23973:39:0;24067:1;;23973:39;;-1:-1:-1;24061:5:0;:7;24045:23;;24023:91;;;;;-1:-1:-1;;;24023:91:0;;;;;;;;;;;;-1:-1:-1;;;24023:91:0;;;;;;;;;;;;;;;24151:3;;:57;;;-1:-1:-1;;;24151:57:0;;24168:10;24151:57;;;;24187:4;24151:57;;;;;;;;;;;;24135:13;;-1:-1:-1;;;;;24151:3:0;;:16;;:57;;;;;;;;;;;;;;24135:13;24151:3;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24151:57:0;;-1:-1:-1;24151:57:0;24219:77;;;;;-1:-1:-1;;;24219:77:0;;;;;;;;;;;;-1:-1:-1;;;24219:77:0;;;;;;;;;;;;;;;24315:10;24307:19;;;;:7;:19;;;;;24335:1;24307:27;;;;:29;24381:281;-1:-1:-1;;;;;24425:13:0;;;24407:17;24425:13;;;:7;:13;;;;;:30;;;;24473:21;;24470:181;;-1:-1:-1;;;;;24514:18:0;;;;;;:7;:18;;;;;:27;;:30;;24543:1;24514:30;;;24522:9;-1:-1:-1;24522:9:0;24470:181;;;24630:5;;;24470:181;24381:281;;;;24672:20;24711:3;24708:2;24693:17;;24749:9;;24693:21;;;;-1:-1:-1;24737:42:0;;-1:-1:-1;;;;;24749:9:0;24775:3;24772:2;24759:15;;:19;;24737:42;24802:9;;24790:42;;-1:-1:-1;;;;;24802:9:0;24828:3;24825:2;24812:15;;:19;;24790:42;24855:9;;24843:42;;-1:-1:-1;;;;;24855:9:0;24881:3;24878:2;24865:15;;:19;;24843:42;24908:9;;24896:42;;-1:-1:-1;;;;;24908:9:0;24934:3;24931:2;24918:15;;:19;;24896:42;24961:9;;24949:42;;-1:-1:-1;;;;;24961:9:0;24987:3;24984:2;24971:15;;:19;;24949:42;25014:9;;25002:42;;-1:-1:-1;;;;;25014:9:0;25040:3;25037:2;25024:15;;:19;;25002:42;25067:9;;;25055:42;;-1:-1:-1;;;;;25067:9:0;;;;25093:3;;25077:15;;:19;;25055:42;25173:3;;:28;;;-1:-1:-1;;;25173:28:0;;25195:4;25173:28;;;;;;-1:-1:-1;;;;;25173:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25173:28:0;25157:13;:44;-1:-1:-1;;25227:10:0;25219:19;;;;:7;25173:28;25219:19;;;;:28;;;;-1:-1:-1;;;23796:1459:0;:::o;3646:979::-;3911:10;3685:12;3903:19;;;:7;:19;;;;;;;;:36;;;;3959:26;;;;4014:35;;;;4076;;;;4137:34;;;;4190:27;;;;4238:29;;;;4286:27;;;;4336:31;;;;4387:28;;;;4440:33;;;;4495:30;;;;;-1:-1:-1;;;;;3903:36:0;;;;3959:26;;4014:35;;4076;;4137:34;;4190:27;;4238:29;;4286:27;;4336:31;;4387:28;;4440:33;;4495:30;3646:979::o;1509:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1509:31:0;;-1:-1:-1;1509:31:0;:::o;19267:2574::-;19348:10;19302:4;19340:19;;;:7;:19;;;;;:35;;;19318:106;;;;;-1:-1:-1;;;19318:106:0;;;;;;;;;;;;-1:-1:-1;;;19318:106:0;;;;;;;;;;;;;;;19616:10;19604:23;;;;:11;:23;;;;;;;;:43;;;19516:7;:19;;;;;;:35;;;19599:2;19553:48;;:94;;;-1:-1:-1;19494:201:0;;;;;-1:-1:-1;;;19494:201:0;;;;;;;;;;;;-1:-1:-1;;;19494:201:0;;;;;;;;;;;;;;;19735:10;19716;19727:19;;;:7;:19;;;;;;;:35;;;;19773:37;;;19967:14;:27;;19991:3;19983:7;;;:11;;;19967:27;;;;;;20066:14;;20054:39;;-1:-1:-1;;;;;20066:14:0;;;;20081:11;;20054:39;20135:19;:32;;20164:3;20156:11;;;20135:32;;;;;;20210:19;:32;;;;;;;20320:9;;20290:1;20284:7;;:11;;;;20308:42;;-1:-1:-1;;;;;20320:9:0;;20343:2;20330:15;;:19;;20308:42;20373:9;;20361:42;;-1:-1:-1;;;;;20373:9:0;20399:3;20396:2;20383:15;;:19;;20361:42;20426:9;;20414:42;;-1:-1:-1;;;;;20426:9:0;20452:3;20449:2;20436:15;;:19;;20414:42;20479:9;;20467:42;;-1:-1:-1;;;;;20479:9:0;20505:3;20502:2;20489:15;;:19;;20467:42;20532:9;;20520:42;;-1:-1:-1;;;;;20532:9:0;20558:3;20555:2;20542:15;;:19;;20520:42;20585:9;;20573:42;;-1:-1:-1;;;;;20585:9:0;20611:3;20608:2;20595:15;;:19;;20573:42;20638:9;;;20626:42;;-1:-1:-1;;;;;20638:9:0;;;;20664:3;;20648:15;;:19;;20626:42;20695:3;;:28;;;-1:-1:-1;;;20695:28:0;;20717:4;20695:28;;;;;;-1:-1:-1;;;;;20695:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20695:28:0;20679:13;:44;;;20737:19;;:33;20734:97;;;20806:13;;20786:19;:33;20734:97;20849:10;20841:19;;;;:7;:19;;;;;;;;:26;:33;;;;;;20940:2;20928:11;:9;:11::i;:::-;20922:5;:17;:20;;;;;20893:10;20885:19;;;;:7;:19;;;;;;;;:35;;;;:57;;20922:20;;;;20885:57;;;;;;20981:3;20953:27;;;:31;20995:29;;;:31;;;21047:23;;;;;;;-1:-1:-1;21047:43:0;:49;;;21120:19;;;:30;;;:32;21117:642;;21216:10;21208:19;;;;:7;:19;;;;;:30;;;;21171:35;;;;;:67;21168:580;;21303:10;21295:19;;;;:7;:19;;;;;:30;;;;;21258:35;;;:67;;;;;;;21344:35;;;;:67;;;;;;;;21430:32;21168:580;;;21558:10;21550:19;;;;:7;:19;;;;;:35;;;;;21518:30;;;:67;;;;;;;21604:35;;;;:72;;;;;;;;21695:37;21168:580;21808:25;21822:10;21808:13;:25::i;:::-;21801:32;;;;19267:2574;:::o;29841:360::-;29954:14;;-1:-1:-1;;;;;29954:14:0;29942:10;:26;29920:122;;;;-1:-1:-1;;;29920:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30102:1;30068:5;-1:-1:-1;;;;;30061:23:0;;30093:4;30061:38;;;;;;;;;;;;;-1:-1:-1;;;;;30061:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30061:38:0;:42;30053:64;;;;;-1:-1:-1;;;30053:64:0;;;;;;;;;;;;-1:-1:-1;;;30053:64:0;;;;;;;;;;;;;;;30135:5;-1:-1:-1;;;;;30128:22:0;;30151:2;30161:5;-1:-1:-1;;;;;30154:23:0;;30186:4;30154:38;;;;;;;;;;;;;-1:-1:-1;;;;;30154:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30154:38:0;30128:65;;;-1:-1:-1;;;;;;30128:65:0;;;;;;;-1:-1:-1;;;;;30128:65:0;;;;;;;;;;;;;;;;;;;;30154:38;;30128:65;;;;;;;-1:-1:-1;30128:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;29841:360:0:o;12800:1563::-;-1:-1:-1;;;;;12942:13:0;;12858:4;12942:13;;;:7;:13;;;;;:39;;;12858:4;;;;12995:9;12992:48;;13027:1;13020:8;;;;;;;12992:48;-1:-1:-1;;;;;13050:13:0;;13090:1;13050:13;;;:7;:13;;;;;:39;;:41;13102:26;;:::i;:::-;13129:7;:13;13137:4;-1:-1:-1;;;;;13129:13:0;-1:-1:-1;;;;;13129:13:0;;;;;;;;;;;;13102:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13102:40:0;-1:-1:-1;;;;;13102:40:0;-1:-1:-1;;;;;13102:40:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13102:40:0;-1:-1:-1;;;;;13102:40:0;-1:-1:-1;;;;;13102:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13166:7;:13;13174:4;-1:-1:-1;;;;;13166:13:0;-1:-1:-1;;;;;13166:13:0;;;;;;;;;;;;13153:26;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13153:26:0;-1:-1:-1;;;;;13153:26:0;-1:-1:-1;;;;;13153:26:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13153:26:0;-1:-1:-1;;;;;13153:26:0;-1:-1:-1;;;;;13153:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13200:12;:29;;;13190:39;;13240:22;13275:12;13298:25;13334:30;13375:956;-1:-1:-1;;;;;13404:21:0;;13401:65;;13445:5;;13401:65;-1:-1:-1;;;;;13493:18:0;;;;;;;:7;:18;;;;;;;;;13480:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13529:23:0;13526:156;;13582:29;;;;;-1:-1:-1;13630:9:0;;;;;13658:8;;13526:156;13704:42;13724:12;:21;;;13704:19;:42::i;:::-;13696:50;-1:-1:-1;13794:3:0;13779:14;;;:18;;-1:-1:-1;;13835:32:0;;;13885:25;13882:158;;13940:29;;;;;-1:-1:-1;13988:9:0;;;;;14016:8;;13882:158;14054:47;14068:22;14091:9;14054:13;:47::i;:::-;14116:38;;;;14198:3;14195:2;14188:9;;:13;14172:14;:29;14169:73;;14221:5;;14169:73;14266:29;;;;;-1:-1:-1;14310:9:0;;;;;13375:956;;;-1:-1:-1;14348:7:0;;12800:1563;-1:-1:-1;;;;;;;;12800:1563:0:o;1566:41::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1566:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4894:3822::-;4953:7;5106:10;-1:-1:-1;;;;;5106:28:0;;;;5084:101;;;;;-1:-1:-1;;;5084:101:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5222:3;;:39;;;-1:-1:-1;;;5222:39:0;;5236:10;5222:39;;;;5255:4;5222:39;;;;;;5196:22;;-1:-1:-1;;;;;5222:3:0;;:13;;:39;;;;;;;;;;;;;;:3;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5222:39:0;5319:1;;5222:39;;-1:-1:-1;5312:4:0;:8;5294:26;;;5272:109;;;;-1:-1:-1;;;5272:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5409:3;;:57;;;-1:-1:-1;;;5409:57:0;;5426:10;5409:57;;;;5445:4;5409:57;;;;;;;;;;;;5393:13;;-1:-1:-1;;;;;5409:3:0;;:16;;:57;;;;;;;;;;;;;;5393:13;5409:3;:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5409:57:0;;-1:-1:-1;5409:57:0;5487:77;;;;;-1:-1:-1;;;5487:77:0;;;;;;;;;;;;-1:-1:-1;;;5487:77:0;;;;;;;;;;;;;;;5684:10;5710:1;5676:19;;;:7;:19;;;;;:24;-1:-1:-1;;;;;5676:24:0;5673:98;;5728:14;:31;;;;;;;-1:-1:-1;5728:31:0;;;;;;;;-1:-1:-1;;;;;;5728:31:0;5748:10;5728:31;;;5673:98;5917:14;:36;;5950:3;5948:1;5933:16;;:20;;;5917:36;;;;;;6029:14;;6017:48;;-1:-1:-1;;;;;6029:14:0;;;;6044:20;;6017:48;6107:19;:41;;6145:3;6128:20;;;6107:41;;;;;;6191:19;:41;;;;;;;6329:9;;6289:1;6274:16;;:20;;;;6317:42;;-1:-1:-1;;;;;6329:9:0;;6352:2;6339:15;;:19;;6317:42;6382:9;;6370:42;;-1:-1:-1;;;;;6382:9:0;6408:3;6405:2;6392:15;;:19;;6370:42;6435:9;;6423:42;;-1:-1:-1;;;;;6435:9:0;6461:3;6458:2;6445:15;;:19;;6423:42;6488:9;;6476:42;;-1:-1:-1;;;;;6488:9:0;6514:3;6511:2;6498:15;;:19;;6476:42;6541:9;;6529:42;;-1:-1:-1;;;;;6541:9:0;6567:3;6564:2;6551:15;;:19;;6529:42;6594:9;;6582:42;;-1:-1:-1;;;;;6594:9:0;6620:3;6617:2;6604:15;;:19;;6582:42;6647:9;;;6635:42;;-1:-1:-1;;;;;6647:9:0;;;;6673:3;;6657:15;;:19;;6635:42;6704:3;;:28;;;-1:-1:-1;;;6704:28:0;;6726:4;6704:28;;;;;;-1:-1:-1;;;;;6704:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6704:28:0;6688:13;:44;;;6746:19;;:33;6743:97;;;6815:13;;6795:19;:33;6743:97;6875:10;6850:19;;;;:7;:19;;;;;;;;:35;;-1:-1:-1;;;;;;6850:35:0;;;;;;6952:26;:42;;;;;;7149:2;7137:11;:9;:11::i;:::-;7122:14;:26;:29;;;;;7093:10;7085:19;;;;:7;:19;;;;;;;;:35;;;;:66;;7122:29;;;;7085:66;;;;;;7190:3;7162:27;;;:31;7204:29;;;;:31;;;7256:23;;;;;;:39;;-1:-1:-1;;;;;;7256:39:0;;;;;;;-1:-1:-1;;;;;7380:25:0;;;;;;;;;;:32;;:35;;:91;;-1:-1:-1;;;;;;7417:25:0;;;;;;;:7;:25;;;;;:42;;;;7461:10;7417:54;7380:91;7377:181;;;7504:42;7487:59;;7377:181;-1:-1:-1;;;;;7630:28:0;;;;;;:74;;-1:-1:-1;7670:10:0;7662:19;;;;:7;:19;;;;;;;;:26;;:42;;7630:74;7627:345;;;7720:55;7754:3;7752:1;7737:16;;:20;7758:16;7720;:55::i;:::-;7798:10;7790:19;;;;:7;:19;;;;;;;;:36;;;;:53;;-1:-1:-1;;;;;;7790:53:0;-1:-1:-1;;;;;7790:53:0;;;;;;;;7858:25;;;;;;;:39;;:41;;;;;;;7919;;;;;;;;;;;;;;;;;;7627:345;7993:10;8016:1;7985:19;;;:7;:19;;;;;:30;;;:32;7982:642;;8081:10;8073:19;;;;:7;:19;;;;;:30;;;;8036:35;;;;;:67;8033:580;;8168:10;8160:19;;;;:7;:19;;;;;:30;;;;;8123:35;;;:67;;;;;;;8209:35;;;;:67;;;;;;;;8295:32;8033:580;;;8423:10;8415:19;;;;:7;:19;;;;;:35;;;;;8383:30;;;:67;;;;;;;8469:35;;;;:72;;;;;;;;8560:37;8033:580;8683:25;8697:10;8683:13;:25::i;:::-;8676:32;4894:3822;-1:-1:-1;;;;;4894:3822:0:o;28729:666::-;28941:14;;28891:4;;-1:-1:-1;;;;;28941:14:0;28929:10;:26;28907:122;;;;-1:-1:-1;;;28907:122:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29056:3;;:28;;;-1:-1:-1;;;29056:28:0;;29078:4;29056:28;;;;;;-1:-1:-1;;;;;29056:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29056:28:0;29040:13;:44;29131:21;:19;:21::i;:::-;29154:1;29131:24;29128:83;;;29175:18;:20;;;;;;29128:83;29225:62;29247:7;29255;29263;29271;29279;29225:21;:62::i;2649:17::-;;;-1:-1:-1;;;;;2649:17:0;;:::o;27341:1308::-;27497:14;27528:6;27524:1086;27539:1;27537;:3;27524:1086;;;27563:4;;:24;;;;-1:-1:-1;;;;;;27571:16:0;;;;27563:24;27560:1039;;;27637:3;27614:19;;27634:2;27614:22;:26;;;;;;27607:33;;27701:24;27713:4;27718:6;27701:11;:24::i;:::-;27560:1039;;;27763:1;27766;27763:4;:24;;;;-1:-1:-1;;;;;;27771:16:0;;;;27763:24;27760:839;;;27837:3;27814:19;;27834:2;27814:22;:26;;;;;;27807:33;;27901:24;27913:4;27918:6;27901:11;:24::i;27760:839::-;27963:1;27966;27963:4;:24;;;;-1:-1:-1;;;;;;27971:16:0;;;;27963:24;27960:639;;;28037:3;28014:19;;28034:2;28014:22;:26;;;;;;28007:33;;28101:24;28113:4;28118:6;28101:11;:24::i;27960:639::-;28163:1;28166;28163:4;:24;;;;-1:-1:-1;;;;;;28171:16:0;;;;28163:24;28160:439;;;28237:3;28214:19;;28234:2;28214:22;:26;;;;;;28207:33;;28301:24;28313:4;28318:6;28301:11;:24::i;28160:439::-;28363:1;28366;28363:4;:24;;;;-1:-1:-1;;;;;;28371:16:0;;;;28363:24;28360:239;;;28436:3;28414:19;;28434:1;28414:21;:25;;;;;;28407:32;;28500:24;28512:4;28517:6;28500:11;:24::i;28360:239::-;28578:5;;28360:239;27541:3;;27524:1086;;;-1:-1:-1;;28640:1:0;28620:19;:21;-1:-1:-1;;;;;27341:1308:0:o;25905:117::-;26004:8;26002:10;25997:15;25989:3;:24;;;25905:117::o;32768:957::-;32820:4;32876:3;32853:19;;32873:2;32853:22;:26;;;;;;32839:13;;:40;32836:882;;;-1:-1:-1;32902:1:0;32895:8;;32836:882;32970:3;32947:19;;32967:2;32947:22;:26;;;;;;32933:13;;:40;32930:788;;;-1:-1:-1;32996:1:0;32989:8;;32930:788;33064:3;33041:19;;33061:2;33041:22;:26;;;;;;33027:13;;:40;33024:694;;;-1:-1:-1;33090:1:0;33083:8;;33024:694;33158:3;33135:19;;33155:2;33135:22;:26;;;;;;33121:13;;:40;33118:600;;;-1:-1:-1;33184:1:0;33177:8;;33118:600;33252:3;33229:19;;33249:2;33229:22;:26;;;;;;33215:13;;:40;33212:506;;;-1:-1:-1;33278:1:0;33271:8;;33212:506;33346:3;33323:19;;33343:2;33323:22;:26;;;;;;33309:13;;:40;33306:412;;;-1:-1:-1;33372:1:0;33365:8;;33306:412;33440:3;33417:19;;33437:2;33417:22;:26;;;;;;33403:13;;:40;33400:318;;;-1:-1:-1;33466:1:0;33459:8;;33400:318;33534:3;33511:19;;33531:2;33511:22;:26;;;;;;33497:13;;:40;33494:224;;;-1:-1:-1;33560:1:0;33553:8;;33494:224;33628:3;33605:19;;33625:2;33605:22;:26;;;;;;33591:13;;:40;33588:130;;;-1:-1:-1;33654:1:0;33647:8;;33588:130;-1:-1:-1;33704:2:0;33697:9;;4637:160;4717:1;4709:6;:9;4706:46;;4734:7;;4706:46;4762:3;;:27;;;-1:-1:-1;;;4762:27:0;;-1:-1:-1;;;;;4762:27:0;;;;;;;;;;;;;;;:3;;;;;:12;;:27;;;;;;;;;;;;;;:3;;:27;;;;;;;;;;4637:160;;;:::o;11986:802::-;-1:-1:-1;;;;;12070:13:0;;12039:4;12070:13;;;:7;:13;;;;;:39;;;12123:9;12120:48;;12155:1;12148:8;;;;;12120:48;12178:12;12238:26;;:::i;:::-;-1:-1:-1;;;;;;12265:13:0;;;;;;;:7;:13;;;;;;;;;12238:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12347:399;12363:2;12360:1;:5;12347:399;;-1:-1:-1;;;;;12388:21:0;;12385:65;;12429:5;;12385:65;-1:-1:-1;;;;;12477:18:0;;;;;;;:7;:18;;;;;;;;;12464:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12541:16:0;12555:1;12541:13;:16::i;:::-;12513:12;:26;;;:44;12510:147;;12577:64;12627:3;12601:25;12624:1;12601:22;:25::i;:::-;12594:6;:32;:36;;;;;;12631:9;12577:16;:64::i;:::-;12681:29;;;;12725:9;;;;;12681:29;;-1:-1:-1;12366:3:0;12347:399;;;;12756:24;12775:4;12756:18;:24::i;:::-;;11986:802;;;;;;;:::o;14369:607::-;14555:3;;:28;;;-1:-1:-1;;;14555:28:0;;14577:4;14555:28;;;;;;-1:-1:-1;;;;;14555:3:0;;;;:13;;:28;;;;;;;;;;;;;;;:3;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14555:28:0;14539:13;:44;14594:14;14671:3;;14661:2;14639:21;:19;:21::i;:::-;-1:-1:-1;;;;;14609:13:0;;;;;;:7;:13;;;;;:29;;;:51;:54;;;;;;:58;;;;;;14668:2;14609:61;:65;;;;;;14594:80;;14721:1;14698:21;:19;:21::i;:::-;:24;;:90;;;;-1:-1:-1;14770:10:0;14762:19;;;;:7;:19;;;;;;;;:26;;;;14726:34;;;;;:62;;14698:90;14695:139;;;14820:2;14818:1;14811:8;;:11;14804:18;;14695:139;14883:27;14898:6;14905:4;14883:14;:27::i;:::-;-1:-1:-1;;;;;14921:13:0;;;;;;;:7;:13;;;;;:39;;:47;;;;;;;14369:607::o;31796:966::-;31838:4;31904:3;31881:19;;31901:2;31881:22;:26;;;;;;31867:13;;:40;31864:891;;;-1:-1:-1;31930:2:0;31923:9;;31864:891;31999:3;31976:19;;31996:2;31976:22;:26;;;;;;31962:13;;:40;31959:796;;;-1:-1:-1;32025:2:0;32018:9;;31959:796;32094:3;32071:19;;32091:2;32071:22;:26;;;;;;32057:13;;:40;32054:701;;;-1:-1:-1;32120:2:0;32113:9;;32054:701;32189:3;32166:19;;32186:2;32166:22;:26;;;;;;32152:13;;:40;32149:606;;;-1:-1:-1;32215:2:0;32208:9;;32149:606;32284:3;32261:19;;32281:2;32261:22;:26;;;;;;32247:13;;:40;32244:511;;;-1:-1:-1;32310:2:0;32303:9;;32244:511;32379:3;32356:19;;32376:2;32356:22;:26;;;;;;32342:13;;:40;32339:416;;;-1:-1:-1;32405:2:0;32398:9;;32339:416;32474:3;32451:19;;32471:2;32451:22;:26;;;;;;32437:13;;:40;32434:321;;;-1:-1:-1;32500:2:0;32493:9;;32434:321;32569:3;32546:19;;32566:2;32546:22;:26;;;;;;32532:13;;:40;32529:226;;;-1:-1:-1;32595:2:0;32588:9;;32529:226;32664:3;32641:19;;32661:2;32641:22;:26;;;;;;32627:13;;:40;32624:131;;;-1:-1:-1;32690:2:0;32683:9;;32624:131;-1:-1:-1;32741:2:0;32734:9;;14982:343;15046:4;15074:3;15065:7;:12;15062:26;;-1:-1:-1;15086:2:0;15079:9;;15062:26;15111:2;15102:7;:11;15099:25;;-1:-1:-1;15122:2:0;15115:9;;15099:25;15147:2;15138:7;:11;15135:25;;-1:-1:-1;15158:2:0;15151:9;;15135:25;15183:2;15174:7;:11;15171:25;;-1:-1:-1;15194:2:0;15187:9;;15171:25;15219:1;15210:7;:10;15207:23;;-1:-1:-1;15229:1:0;15222:8;;15207:23;15253:1;15244:7;:10;15241:23;;-1:-1:-1;15263:1:0;15256:8;;15241:23;15287:1;15278:7;:10;15275:23;;-1:-1:-1;15297:1:0;15290:8;;15275:23;-1:-1:-1;15316:1:0;14982:343;;;:::o;18553:708::-;-1:-1:-1;;;;;18653:25:0;;18632:20;18653:25;;;:7;:25;;;;;:41;;;18756:22;;;18753:153;;;-1:-1:-1;;;;;18826:25:0;;;;;;:7;:25;;;;;:37;;:45;;;;;;;;18753:153;-1:-1:-1;;;;;18979:25:0;;;;;;:7;:25;;;;;:41;;;:48;-1:-1:-1;18976:228:0;;;-1:-1:-1;;;;;19088:25:0;;;;;;:7;:25;;;;;:41;;;;19043:36;;;;:86;;19081:48;;;;19043:86;;;;;;18976:228;19214:39;19229:6;19236:16;19214:14;:39::i;:::-;18553:708;;;:::o;26028:1307::-;26183:14;26214:6;26210:1086;26225:1;26223;:3;26210:1086;;;26249:4;;:24;;;;-1:-1:-1;;;;;;26257:16:0;;;;26249:24;26246:1039;;;26323:3;26300:19;;26320:2;26300:22;:26;;;;;;26293:33;;26387:24;26399:4;26404:6;26387:11;:24::i;:::-;26246:1039;;;26449:1;26452;26449:4;:24;;;;-1:-1:-1;;;;;;26457:16:0;;;;26449:24;26446:839;;;26523:3;26500:19;;26520:2;26500:22;:26;;;;;;26493:33;;26587:24;26599:4;26604:6;26587:11;:24::i;26446:839::-;26649:1;26652;26649:4;:24;;;;-1:-1:-1;;;;;;26657:16:0;;;;26649:24;26646:639;;;26723:3;26700:19;;26720:2;26700:22;:26;;;;;;26693:33;;26787:24;26799:4;26804:6;26787:11;:24::i;26646:639::-;26849:1;26852;26849:4;:24;;;;-1:-1:-1;;;;;;26857:16:0;;;;26849:24;26846:439;;;26923:3;26900:19;;26920:2;26900:22;:26;;;;;;26893:33;;26987:24;26999:4;27004:6;26987:11;:24::i;26846:439::-;27049:1;27052;27049:4;:24;;;;-1:-1:-1;;;;;;27057:16:0;;;;27049:24;27046:239;;;27122:3;27100:19;;27120:1;27100:21;:25;;;;;;27093:32;;27186:24;27198:4;27203:6;27186:11;:24::i;27046:239::-;27264:5;;27046:239;26227:3;;26210:1086;;;-1:-1:-1;;27326:1:0;27306:19;:21;-1:-1:-1;;;;;26028:1307:0:o;16012:683::-;16064:4;16083:1;16086;16083:4;16080:17;;;-1:-1:-1;16096:1:0;16089:8;;16080:17;16111:1;16114;16111:4;16108:17;;;-1:-1:-1;16124:1:0;16117:8;;16108:17;16139:1;16142;16139:4;16136:17;;;-1:-1:-1;16152:1:0;16145:8;;16136:17;16167:1;16170;16167:4;16164:18;;;-1:-1:-1;16180:2:0;16173:9;;16164:18;16196:1;16199;16196:4;16193:18;;;-1:-1:-1;16209:2:0;16202:9;;16193:18;16225:1;16228;16225:4;16222:18;;;-1:-1:-1;16238:2:0;16231:9;;16222:18;16254:1;16257;16254:4;16251:18;;;-1:-1:-1;16267:2:0;16260:9;;16251:18;16283:1;16286;16283:4;16280:18;;;-1:-1:-1;16296:2:0;16289:9;;16280:18;16312:1;16315;16312:4;16309:18;;;-1:-1:-1;16325:2:0;16318:9;;16309:18;16341:1;16344:2;16341:5;16338:19;;;-1:-1:-1;16355:2:0;16348:9;;16338:19;16371:1;16374:2;16371:5;16368:19;;;-1:-1:-1;16385:2:0;16378:9;;16368:19;16401:1;16404:2;16401:5;16398:19;;;-1:-1:-1;16415:2:0;16408:9;;16398:19;16431:1;16434:2;16431:5;16428:19;;;-1:-1:-1;16445:2:0;16438:9;;16428:19;16461:1;16464:2;16461:5;16458:19;;;-1:-1:-1;16475:2:0;16468:9;;16458:19;16491:1;16494:2;16491:5;16488:19;;;-1:-1:-1;16505:2:0;16498:9;;16488:19;16521:1;16524:2;16521:5;16518:19;;;-1:-1:-1;16535:2:0;16528:9;;16518:19;16551:1;16554:2;16551:5;16548:19;;;-1:-1:-1;16565:2:0;16558:9;;16548:19;16581:1;16584:2;16581:5;16578:19;;;-1:-1:-1;16595:2:0;16588:9;;16578:19;16611:1;16614:2;16611:5;16608:19;;;-1:-1:-1;16625:2:0;16618:9;;16608:19;16641:1;16644:2;16641:5;16638:19;;;-1:-1:-1;16655:2:0;16648:9;;16638:19;16671:1;16674:2;16671:5;16668:19;;;-1:-1:-1;16685:2:0;16678:9;;15331:675;15392:4;15411:1;15414;15411:4;15408:18;;;-1:-1:-1;15424:2:0;15417:9;;15408:18;15440:1;15443;15440:4;15437:17;;;-1:-1:-1;15453:1:0;15446:8;;15437:17;15468:1;15471;15468:4;15465:17;;;-1:-1:-1;15481:1:0;15474:8;;15465:17;15496:1;15499;15496:4;15493:17;;;-1:-1:-1;15509:1:0;15502:8;;15493:17;15524:1;15527;15524:4;15521:17;;;-1:-1:-1;15537:1:0;15530:8;;15521:17;15552:1;15555;15552:4;15549:17;;;-1:-1:-1;15565:1:0;15558:8;;15549:17;15580:1;15583;15580:4;15577:17;;;-1:-1:-1;15593:1:0;15586:8;;15577:17;15608:1;15611;15608:4;15605:17;;;-1:-1:-1;15621:1:0;15614:8;;15605:17;15636:1;15639;15636:4;15633:17;;;-1:-1:-1;15649:1:0;15642:8;;15633:17;15664:1;15667:2;15664:5;15661:18;;;-1:-1:-1;15678:1:0;15671:8;;15661:18;15693:1;15696:2;15693:5;15690:18;;;-1:-1:-1;15707:1:0;15700:8;;15690:18;15722:1;15725:2;15722:5;15719:18;;;-1:-1:-1;15736:1:0;15729:8;;15719:18;15751:1;15754:2;15751:5;15748:18;;;-1:-1:-1;15765:1:0;15758:8;;15748:18;15780:1;15783:2;15780:5;15777:18;;;-1:-1:-1;15794:1:0;15787:8;;15777:18;15809:1;15812:2;15809:5;15806:18;;;-1:-1:-1;15823:1:0;15816:8;;15806:18;15838:1;15841:2;15838:5;15835:18;;;-1:-1:-1;15852:1:0;15845:8;;15835:18;15867:1;15870:2;15867:5;15864:18;;;-1:-1:-1;15881:1:0;15874:8;;15864:18;15896:1;15899:2;15896:5;15893:18;;;-1:-1:-1;15910:1:0;15903:8;;15893:18;15925:1;15928:2;15925:5;15922:18;;;-1:-1:-1;15939:1:0;15932:8;;15922:18;15954:1;15957:2;15954:5;15951:18;;;-1:-1:-1;15968:1:0;15961:8;;15951:18;15983:1;15986:2;15983:5;15980:18;;;-1:-1:-1;15997:1:0;15990:8;;16701:411;-1:-1:-1;;;;;16772:13:0;;;;;;:7;:13;;;;;:29;;;:36;-1:-1:-1;16769:73:0;;;16824:7;;16769:73;16863:1;16855:6;:9;16852:46;;16880:7;;16852:46;-1:-1:-1;;;;;16908:13:0;;;;;:7;:13;;;;;:29;;;:37;;;;;;;16966:29;;;:37;;;;;;17048:28;;:36;;;;;;;16701:411::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://3b78688a6a2d1442e3d3ac15ea647be155cca2aca1c8786a030dbcae7e586ff6
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading