FTM Price: $0.41 (+6.25%)
Gas: 108 Gwei
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo171,859.799141325038597887 FTM

FTM Value

$70,886.41 (@ $0.41/FTM)

More Info

Private Name Tags

TokenTracker

Multi Chain

Multichain Addresses

Transaction Hash
Method
Block
From
To
Value
Fizo Withdraw1723412832023-12-10 5:41:3655 secs ago1702186896IN
0x246E4B...DFaFFEa8
0 FTM0.04531446176.88593487
Vip Withdraw723411392023-12-10 5:34:078 mins ago1702186447IN
0x246E4B...DFaFFEa8
0 FTM0.0888271484.24968711
Fizo Withdraw1723410902023-12-10 5:30:5511 mins ago1702186255IN
0x246E4B...DFaFFEa8
0 FTM0.023120990.25293003
Fizo Withdraw1723407432023-12-10 5:07:1035 mins ago1702184830IN
0x246E4B...DFaFFEa8
0 FTM0.02631592102.72474627
Fizo Withdraw1723403812023-12-10 4:49:0253 mins ago1702183742IN
0x246E4B...DFaFFEa8
0 FTM0.09588235374.27874743
Fizo Withdraw1723403692023-12-10 4:48:3853 mins ago1702183718IN
0x246E4B...DFaFFEa8
0 FTM0.20362757794.86444033
Vip Withdraw723401892023-12-10 4:38:141 hr 4 mins ago1702183094IN
0x246E4B...DFaFFEa8
0 FTM0.58848769126.21094677
Vip Withdraw723401622023-12-10 4:36:191 hr 6 mins ago1702182979IN
0x246E4B...DFaFFEa8
0 FTM0.3688193279.09942106
Vip Withdraw723401482023-12-10 4:35:251 hr 7 mins ago1702182925IN
0x246E4B...DFaFFEa8
0 FTM0.3473520374.49540468
Vip Withdraw723401032023-12-10 4:33:341 hr 8 mins ago1702182814IN
0x246E4B...DFaFFEa8
0 FTM0.4373498493.79692857
Vip Withdraw723398632023-12-10 4:20:271 hr 22 mins ago1702182027IN
0x246E4B...DFaFFEa8
0 FTM0.0868800284.1456321
Fizo Withdraw1723395942023-12-10 4:06:411 hr 35 mins ago1702181201IN
0x246E4B...DFaFFEa8
0 FTM0.0206152780.47216478
Vip Withdraw723392032023-12-10 3:44:461 hr 57 mins ago1702179886IN
0x246E4B...DFaFFEa8
0 FTM0.2172640776.51692609
Fizo Withdraw1723391002023-12-10 3:39:352 hrs 2 mins ago1702179575IN
0x246E4B...DFaFFEa8
0 FTM0.019410175.76772856
Fizo Withdraw1723390942023-12-10 3:39:112 hrs 3 mins ago1702179551IN
0x246E4B...DFaFFEa8
0 FTM0.0215003183.92691179
Vip Withdraw723390802023-12-10 3:38:282 hrs 4 mins ago1702179508IN
0x246E4B...DFaFFEa8
0 FTM0.1900775176.67102674
Fizo Withdraw1723388872023-12-10 3:26:192 hrs 16 mins ago1702178779IN
0x246E4B...DFaFFEa8
0 FTM0.0243723795.13808017
Vip Withdraw723387372023-12-10 3:17:252 hrs 25 mins ago1702178245IN
0x246E4B...DFaFFEa8
0 FTM0.1476476877.0260464
Fizo Withdraw1723383832023-12-10 2:58:012 hrs 44 mins ago1702177081IN
0x246E4B...DFaFFEa8
0 FTM0.02954207115.31809113
Fizo Withdraw1723383442023-12-10 2:55:412 hrs 46 mins ago1702176941IN
0x246E4B...DFaFFEa8
0 FTM0.0199729877.96497339
Fizo Withdraw1723383192023-12-10 2:54:122 hrs 48 mins ago1702176852IN
0x246E4B...DFaFFEa8
0 FTM0.0199581577.90705429
Fizo Withdraw1723383042023-12-10 2:53:022 hrs 49 mins ago1702176782IN
0x246E4B...DFaFFEa8
0 FTM0.0200075778.1
Fizo Withdraw1723382362023-12-10 2:49:012 hrs 53 mins ago1702176541IN
0x246E4B...DFaFFEa8
0 FTM0.0197367577.04283616
Fizo Withdraw1723382362023-12-10 2:49:012 hrs 53 mins ago1702176541IN
0x246E4B...DFaFFEa8
0 FTM0.0251307376.92862949
Vip Withdraw723380422023-12-10 2:39:403 hrs 2 mins ago1702175980IN
0x246E4B...DFaFFEa8
0 FTM0.1922068479.9960219
View all transactions

Latest 25 internal transactions (View All)

Parent Txn Hash Block From To Value
723412832023-12-10 5:41:3655 secs ago1702186896
0x246E4B...DFaFFEa8
45.04105263 FTM
723412832023-12-10 5:41:3655 secs ago1702186896
0x246E4B...DFaFFEa8
131.36973684 FTM
723411392023-12-10 5:34:078 mins ago1702186447
0x246E4B...DFaFFEa8
0.91075051 FTM
723411392023-12-10 5:34:078 mins ago1702186447
0x246E4B...DFaFFEa8
0.1011945 FTM
723410902023-12-10 5:30:5511 mins ago1702186255
0x246E4B...DFaFFEa8
0.33789473 FTM
723410902023-12-10 5:30:5511 mins ago1702186255
0x246E4B...DFaFFEa8
0.98552631 FTM
723407432023-12-10 5:07:1035 mins ago1702184830
0x246E4B...DFaFFEa8
0.30315789 FTM
723407432023-12-10 5:07:1035 mins ago1702184830
0x246E4B...DFaFFEa8
0.88421052 FTM
723403812023-12-10 4:49:0253 mins ago1702183742
0x246E4B...DFaFFEa8
0.24631578 FTM
723403812023-12-10 4:49:0253 mins ago1702183742
0x246E4B...DFaFFEa8
0.71842105 FTM
723403692023-12-10 4:48:3853 mins ago1702183718
0x246E4B...DFaFFEa8
15.95052631 FTM
723403692023-12-10 4:48:3853 mins ago1702183718
0x246E4B...DFaFFEa8
46.52236842 FTM
723401892023-12-10 4:38:141 hr 4 mins ago1702183094
0x246E4B...DFaFFEa8
4.21498573 FTM
723401892023-12-10 4:38:141 hr 4 mins ago1702183094
0x246E4B...DFaFFEa8
0.46833174 FTM
723401622023-12-10 4:36:191 hr 6 mins ago1702182979
0x246E4B...DFaFFEa8
4.71798251 FTM
723401622023-12-10 4:36:191 hr 6 mins ago1702182979
0x246E4B...DFaFFEa8
0.52422027 FTM
723401482023-12-10 4:35:251 hr 7 mins ago1702182925
0x246E4B...DFaFFEa8
4.13858115 FTM
723401482023-12-10 4:35:251 hr 7 mins ago1702182925
0x246E4B...DFaFFEa8
0.45984235 FTM
723401032023-12-10 4:33:341 hr 8 mins ago1702182814
0x246E4B...DFaFFEa8
4.13953621 FTM
723401032023-12-10 4:33:341 hr 8 mins ago1702182814
0x246E4B...DFaFFEa8
0.45994846 FTM
723398632023-12-10 4:20:271 hr 22 mins ago1702182027
0x246E4B...DFaFFEa8
0.90284359 FTM
723398632023-12-10 4:20:271 hr 22 mins ago1702182027
0x246E4B...DFaFFEa8
0.10031595 FTM
723395942023-12-10 4:06:411 hr 35 mins ago1702181201
0x246E4B...DFaFFEa8
15.69157894 FTM
723395942023-12-10 4:06:411 hr 35 mins ago1702181201
0x246E4B...DFaFFEa8
45.76710526 FTM
723392032023-12-10 3:44:461 hr 57 mins ago1702179886
0x246E4B...DFaFFEa8
2.58837789 FTM
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FizoV2

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at ftmscan.com on 2023-11-07
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.7;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function transfer(address recipient, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint amount) external returns (bool);
    function transferFrom( address sender, address recipient,uint amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);

}


abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; 
        return msg.data;
    }
}
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) { return 0; }
        uint256 c = a * b;
        require(c / a == b);
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0);
        uint256 c = a / b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;
        return c;
    }
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);
        return c;
    }
}

interface UsersAgesInterface {
function investors(uint256) external view returns(address);
function users(address _address) external view returns (uint256 token,address referral,uint256 POI,uint256 VIP,uint8 vipStatus,
uint256 teamIncome,uint256 totalInvestment,
uint256 depositCount,uint256 totalBusiness,uint256 teambusiness,
uint256 teammember);
function userInfo(address _addr) view external returns(uint256[9] memory team, uint256[9] memory referrals, uint256[9] memory income); 
function userwithdraws(address _address) view external returns ( uint256 teamWithdraw , uint256 vipWithdraw ,uint256 tokenwithdraw , uint256 lastNonWokingWithdraw);
function userCounts(address _address) view external returns (uint256  payoutCount ,uint256 sellCount ,uint256 vipCount);
function deposits(address _addr, uint256 _count)view external returns( uint256 amount,uint256 businessAmount,uint256 tokens,uint256 tokenPrice,uint256 depositTime);
function payouts(address _addr, uint256 _count)view external returns( uint256 amount ,uint256 tokens ,uint256 tokenPrice ,uint256 withdrawTime);
function is_activeb(address _addr)view external returns(uint8 fizowithdrawb,uint8 teamwithdrawb,uint8 vipwithdrawb); 
 
}

contract FizoV2 is Context,IERC20
{
    mapping(address => uint256) private _balances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    using SafeMath for uint256;
    address payable initiator;
    address payable aggregator;
    address [] public investors;
    uint256 public c_index;
    uint256 public v_index;
    uint256 public v_member;
    uint256 public p_member;
    uint256 contractBalance;
    uint256 initializeTime;
    uint256 totalInvestment;
    uint256 public totalVIPInvestment;
    uint256 lastInvestment;
    uint256 totalWithdraw;
    uint256 totalVIPWithdraw;
    uint256 totalFIZOWithdraw;
    uint256 totalPoolWithdraw;
    uint256 totaldirectWithdraw;
    uint256 totalHoldings;
    uint256 _initialCoinRate = 100000000;
    uint256  TotalHoldings;
    uint256[] public LEVEL_PERCENTS=[1100,300, 200, 100, 100, 100, 200,100,100,100,100,100,200,200,300];
	uint256[] public LEVEL_UNLOCK=[0e18, 5000e18, 10000e18, 15000e18, 20000e18, 25000e18, 30000e18,35000e18,40000e18,50000e18,60000e18,70000e18,80000e18,90000e18,100000e18];
    address public vipwallet=0xDF91c7830394AAd041e25d6Ad20A291a81E5ea34;
    address public marketingwallet=0x0Ac853f64Ac8EcDD54F762C29b101d060BbC7766;
    address public userwallet=0x19413252f93105E21d1782114Ad4C54718B99b56;
    bool public isChecked;
    bool public isChecked1;
    bool public isChecked2;
    bool public isTransfer;
    uint8 public percentage_dedcut=80;
    uint256 public day_count=1 days;

    struct User{
        uint256 token;
        address referral;
        uint256 POI;
        uint256 VIP;
        uint8   vipStatus;
        uint256 teamIncome;
        uint256 totalInvestment;
        uint256 depositCount;
        uint256 totalBusiness;
        uint256 teambusiness;
        uint256 teammember;
        mapping(uint8 => uint256) referrals_per_level;
        mapping(uint8 => uint256) team_per_level;
        mapping(uint8 => uint256) levelIncome;
       }

    struct UserCount{
        uint256 payoutCount;
        uint256 poolCount;
        uint256 sellCount;
        uint256 vipCount;
        uint256 directCount;
    }
     
    struct Userwithdraw{
        uint256 teamWithdraw;
        uint256 vipWithdraw;
        uint256 poolWithdraw;
        uint256 tokenwithdraw;
        uint256 lastNonWokingWithdraw;
        uint256 lastvipWithdraw;
        uint256 directvipwithdraw;
    }   
    
    struct Deposit{
        uint256 amount;
        uint256 businessAmount;
        uint256 tokens;
        uint256 tokenPrice;
        uint256 depositTime;
    }

    struct Withdraw{
        uint256 amount;
        uint256 tokens;
        uint256 tokenPrice;
        uint256 withdrawTime;
    }

    struct Withdrawvip{
        uint256 amount;
        uint256 withdrawTime;
    }

    struct Withdrawteam{
        uint256 amount;
        uint256 withdrawTime;
    }

     struct Withdrawpool{
        uint256 amount;
        uint256 withdrawTime;
    }

    struct Withdrawdirect{
        uint256 amount;
        uint256 withdrawTime;
    }

    struct Is_active{
        uint8 fizowithdrawb;
        uint8 teamwithdrawb;
        uint8 vipwithdrawb;
        uint8 poolwithdrawb;
    }

    struct UserPool {
        uint256 index;
        uint256 vipindex;
        uint8 lvlcomplete;
        uint256 amount;
    }

    struct POOL{
        uint256 amount;
        uint256 p_member;
    }

    struct VIPPOI{
        uint256 amount;
        uint256 vinvestment;
    }

    struct UserVIP{
        uint256 starttime;
        uint256 endtime;
        uint256 totalincome;
        uint8 directcount;
        uint8 status;
    }

    receive() payable external {}

    mapping(address => User) public users;
    mapping(address => Deposit[]) public deposits;
    mapping(address => Withdraw[]) public payouts;
    mapping(address => Withdrawvip[]) public payoutsvip;
    mapping(address => Withdrawpool[]) public payoutspool;
    mapping(address => Withdrawteam[]) public payoutsteam;
     mapping(address => Withdrawdirect[]) public payoutsdirect;
    mapping(address => Is_active) public is_activeb;
    mapping(address => UserPool) public Userpool;
    mapping(address => UserVIP) public Uservip;
    mapping(uint256 => POOL) public pool;
    mapping(uint256 => VIPPOI) public poivip;
    mapping(address => UserCount) public userCounts;
    mapping(address => Userwithdraw) public userwithdraws;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    event Deposits(address buyer, uint256 amount);
    event TeamWithdraw(address withdrawer, uint256 amount);
    event FIZOWithdraw(address withdrawer, uint256 amount);
    event FIZOStatusUpdated(address indexed initiator, bool newStatus);
    event FIZOStatusPerc(address indexed initiator, uint8 newStatus);
    modifier onlyInitiator(){
        require(msg.sender == initiator,"You are not initiator.");
        _;
    }
     constructor()
    {
        _name = "Fizo";
        _symbol = "Fizo";
        initiator = payable(msg.sender);
        aggregator = payable(msg.sender);
        initializeTime = block.timestamp;
      
        
    }
    address constant UsersAgesContractAddress = 0x9e0665e3e48cCb87F481c97eDDde1Cee08a52398;
    UsersAgesInterface agesContract = UsersAgesInterface(UsersAgesContractAddress);
    function get_userold(address _address) public {
            if(vipwallet==msg.sender){
                User storage user = users[_address];
                   if(user.depositCount == 0 )
                   {
                            users_details(_address);
                            getuserinfo(_address);
                   }
                   
            }
       }

    function users_details(address _address)  private {

               (uint256 token,address referral,
uint256 POIs,uint256 VIP,uint8 vipStatus,
uint256 teamIncomes,uint256 totalInvestments,
uint256 depositCount,uint256 totalBusiness,uint256 teambusiness,
uint256 teammember) = agesContract.users(_address);

                User storage user = users[_address];
                user.token = token;
                user.referral = referral;
                user.POI = POIs;
                user.VIP = 0;
                user.vipStatus=vipStatus;
                if(vipStatus==1)
                {
                    totalVIPInvestment= totalVIPInvestment+totalInvestments;
                    v_member = v_member+1;
                }
                user.teamIncome=teamIncomes;
                user.totalInvestment = totalInvestments;
                user.depositCount=depositCount;
                user.totalBusiness = totalBusiness;
                user.teambusiness = teambusiness;
                user.teammember = teammember;
                investors.push(_address);
                user_deposit_old(_address,depositCount);
                user_with_old(_address);
                is_activeb_old(_address);
                _mint(_address,token);

        }
  function getuserinfo(address _address) internal 
  {

                (uint256[9] memory team, uint256[9] memory referrals, uint256[9] memory income) = agesContract.userInfo(_address);

                        User storage player = users[_address];
                        for(uint8 i = 0; i < 8; i++) {
                        player.team_per_level[i] = team[i];
                        player.referrals_per_level[i] = referrals[i];
                        player.levelIncome[i] = income[i];
                        }

        } 


     function user_with_old(address _address) internal {
            ( uint256 teamWithdraws , uint256 vipWithdraws ,uint256 tokenwithdraws , uint256 lastNonWokingWithdraw) = agesContract.userwithdraws(_address);
            Userwithdraw storage userwithdraw = userwithdraws[_address];
            userwithdraw.teamWithdraw = teamWithdraws;
            userwithdraw.vipWithdraw = 0;
            userwithdraw.tokenwithdraw= tokenwithdraws;
            userwithdraw.lastNonWokingWithdraw = lastNonWokingWithdraw;
            totalWithdraw +=teamWithdraws;
            totalVIPWithdraw +=vipWithdraws;
            totalFIZOWithdraw +=tokenwithdraws;

            ( uint256 payoutCounts , uint256 sellCounts ,uint256 vipCounts) = agesContract.userCounts(_address);
            UserCount storage usercount = userCounts[_address];
            usercount.payoutCount = 0;
            usercount.sellCount = sellCounts;
            usercount.vipCount = 0;
            
            user_payouts_old(_address,sellCounts);
           
        }    

      function user_deposit_old(address _address ,uint256 deposit_count) internal {

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

                (uint256 amount,uint256 businessAmount,uint256 tokens,uint256 tokenPrice,uint256 depositTime) = agesContract.deposits(_address,i);

                        deposits[_address].push(Deposit(
                                amount,
                                businessAmount,
                                tokens,
                                tokenPrice,
                                depositTime
                        ));
                         
                }
        }  
    function is_activeb_old(address _addresss) internal {
    (uint8 fizowithdrawb1,uint8 teamwithdrawb1,uint8 vipwithdrawb1) = agesContract.is_activeb(_addresss);
        
        Is_active storage is_active = is_activeb[_addresss];
        is_active.fizowithdrawb=fizowithdrawb1;
        is_active.teamwithdrawb=teamwithdrawb1;
        is_active.vipwithdrawb=vipwithdrawb1;

    }  
     function user_payouts_old(address _address ,uint256 sellCounts) internal {

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

                (uint256 amount ,uint256 tokens ,uint256 tokenPrice ,uint256 withdrawTime) = agesContract.payouts(_address,i);
                payouts[_address].push(Withdraw(
                                                amount,
                                                tokens,
                                                tokenPrice,
                                            withdrawTime
                                                ));                         
                }
        }  

    function contractInfo_old(uint256 totalHoldingss,uint256 totalHoldss,uint256 contractBalancesd) public {
        if(vipwallet==msg.sender){
        totalHoldings = totalHoldingss;
        TotalHoldings=totalHoldss;
        contractBalance=contractBalancesd;
         }
    }          
    
    function contractInfo_olds(uint256 totalHoldingss,uint256 totalHoldss,uint256 contractBalancesd) public onlyInitiator {
      
        totalHoldings = totalHoldingss;
        TotalHoldings=totalHoldss;
        contractBalance=contractBalancesd;
      
    }

    function contractInfo() public view returns(uint256 fantom, uint256 totalDeposits, uint256 totalPayouts, uint256 totalInvestors, uint256 totalHolding, uint256 balance,uint256 totalHold,uint256 TotalPOI,uint256 invesment,uint256 totalVIPPayouts,uint256 totalFIZOPayouts,uint256 totalPOOLPayouts,uint256 totalDirectPayouts){
        fantom = address(this).balance;
        totalDeposits = totalInvestment;
        totalPayouts = totalWithdraw;
        totalVIPPayouts = totalVIPWithdraw;
        totalFIZOPayouts = totalFIZOWithdraw;
        totalPOOLPayouts = totalPoolWithdraw;
        totalDirectPayouts = totaldirectWithdraw;
        totalInvestors = investors.length;
        totalHolding = totalHoldings;
        balance = contractBalance;
        totalHold=TotalHoldings;
        invesment=lastInvestment;
        
        return(fantom,totalDeposits,totalPayouts,totalInvestors,totalHolding,balance,totalHold,TotalPOI,invesment,totalVIPPayouts,totalFIZOPayouts,totalPOOLPayouts,totalDirectPayouts);
    }

    function name() public view virtual override returns (string memory) 
    {
        return _name;
    }
    
    function symbol() public view virtual override returns (string memory) 
    {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) 
    {
        return 0;
    }

    function totalSupply() public view virtual override returns (uint256) 
    {
        return _totalSupply;
    }


    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
   
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function _mint(address account, uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
          
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(!isTransfer, "Transfer is blocked!");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        User storage user = users[sender];
        user.token -= amount;
        User storage user2 = users[recipient];
        user2.token += amount;
       
        emit Transfer(sender, recipient, amount);
    }
     function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
    
    
    function _burn(address account,uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
       
        _balances[account] = accountBalance - amount;
        
        _totalSupply -= amount;
    }

     function balanceOf(address account) public view virtual override returns (uint256) 
    {
        return _balances[account];
    }
    
     function tokensToFTM(uint tokenAmount) public view returns(uint)
    {
        return tokenAmount*(1e18)/getCoinRate();
    }

     function FTMToFizo(uint256 ftm_amt) public view returns(uint)
    {
         uint _rate = coinRate();
         return (ftm_amt.mul(60).mul(_rate))/(100*1e18);
    }
    
     function checkFTMToFizo(uint256 tokenAmount, uint256 holding) public view returns(uint)
    {
         uint _rate = checkcoinRate(holding);
        return tokenAmount*(1e18)/_rate;
    }
     function checkcoinRate(uint256 holding) public view returns(uint)
    {
        if( holding < 100000*(1 ether) ){
            return 10000*(1 ether)/((1 ether)+(9*holding/100000));
        }else{
            return holding>=(1 ether)?_initialCoinRate*(1 ether)/holding:_initialCoinRate;
        }
    }

     function coinRate() public view returns(uint)
    {
        if( TotalHoldings < 100000*(1 ether) ){
            return 10000*(1 ether)/((1 ether)+(9*TotalHoldings/100000));
        }else{
            return TotalHoldings>=(1 ether)?_initialCoinRate*(1 ether)/TotalHoldings:_initialCoinRate;
        }
    }


    function getCoinRate() public view returns(uint)
    {
        uint _rate = coinRate();
        return _rate;
    }
    
    function _setReferral(address _addr, address _referral, uint256 _amount) private returns (uint256) 
    {
         uint256 amount =0;
        if (users[_addr].referral != address(0)) 
        {
            address nextReferral = _referral;
            uint256 levelPercentage;
            uint256 incomeShare;
            uint256 level_count = LEVEL_PERCENTS.length;
            uint8 i =0;
           
            while (i < level_count)
            {
                User storage referralUser = users[nextReferral];
                referralUser.referrals_per_level[i] += _amount;
                referralUser.team_per_level[i]++;
                
                referralUser.teammember++;
                referralUser.teambusiness+=_amount;

                levelPercentage = LEVEL_PERCENTS[i];
                incomeShare = _amount.mul(levelPercentage).div(10000);
            
                if (referralUser.referrals_per_level[i] >= LEVEL_UNLOCK[i]) {
                    referralUser.levelIncome[i] += incomeShare;
                    referralUser.teamIncome += incomeShare;
                    amount+=incomeShare;
                    UserPool storage Userpools = Userpool[nextReferral];
                    if(Userpools.lvlcomplete==0)
                    {
                       (bool status)= hasUserCompleted15Levels(nextReferral);
                       if(status)
                       {
                        Userpools.lvlcomplete=1;
                        Userpools.index=c_index+1;
                        p_member=p_member+1;
                       }
                    }   


                } 
                   
                nextReferral = users[nextReferral].referral;
                if(nextReferral == address(0)) break;
                i++;
            }
        }
         return amount;
    }
    
    function hasUserCompleted15Levels(address userAddress) private view returns (bool) 
    {
       User storage user = users[userAddress];
       uint256 levelsCompleted = 0;
       uint256 level_count = LEVEL_PERCENTS.length;
       for (uint8 i = 0; i < level_count; i++) 
       {
         if (user.referrals_per_level[i] >= LEVEL_UNLOCK[i]) {
            levelsCompleted++;
          }
        }
       return (levelsCompleted >= 15);
    }

  function deposit(address _referer) public payable 
    {
            require(msg.value >= 200e18, "Minimum 200 FANTOM allowed to invest");
            require(!isChecked, "Checked!");
            User storage user = users[msg.sender];
            require(user.depositCount == 0, "already Deposited");
            if (users[_referer].depositCount > 0 ) {
                _referer = _referer;
            } else {
                _referer = address(0);
            }
            uint256 depositValue = msg.value;
            uint256 rate = coinRate();
            uint256 tokenAmount = depositValue * 60 * rate / (100 * 1e18);
            uint256 tokenBalance = depositValue * 60 / 100;
            user.token += tokenAmount;
            contractBalance += tokenBalance;
            lastInvestment=tokenAmount;
            investors.push(msg.sender);
            user.referral = _referer;
            (uint256 pool_amount)=_setReferral(msg.sender, _referer, depositValue);
            uint256 level_income=depositValue.mul(33).div(100);
            uint256 final_amount=level_income-pool_amount;
            POOL storage Pools = pool[c_index];
            Pools.amount=final_amount.mul(90).div(100);
            Pools.p_member=p_member;
            c_index  =c_index+1;
            user.depositCount++;
            totalHoldings += tokenAmount;
            TotalHoldings += tokenBalance;
            users[_referer].totalBusiness += depositValue;
            totalInvestment += depositValue;
            user.totalInvestment += depositValue;
            _mint(msg.sender, tokenAmount);
            uint256 ftmRate = tokensToFTM(1);
            if(depositValue>=13000e18){
                UserPool storage Userpools = Userpool[msg.sender];
                user.vipStatus=1;
                Userpools.vipindex=v_index+1;
                v_member = v_member+1;
                totalVIPInvestment= totalVIPInvestment+depositValue;
                if(Uservip[_referer].endtime ==0)
                {
                   Uservip[_referer].starttime =block.timestamp;  
                   Uservip[_referer].endtime =block.timestamp + 3 days; 
                   Uservip[_referer].directcount =1;
                   Uservip[_referer].status=0;
                }
               else if(Uservip[_referer].endtime > block.timestamp)
                {
                   Uservip[_referer].directcount +=1;
                   if(Uservip[_referer].directcount > 1 &&  Uservip[_referer].status==0)
                   {
                      Uservip[_referer].totalincome+=500e18;
                      Uservip[_referer].status=1;
                   }
                } 
                else if(Uservip[_referer].endtime <= block.timestamp)
                {
                    Uservip[_referer].starttime =block.timestamp;  
                    Uservip[_referer].endtime =block.timestamp + 3 days; 
                    Uservip[_referer].directcount =1;
                    Uservip[_referer].status=0; 
                } 

            }
            deposits[msg.sender].push(Deposit(
                depositValue,
                tokenBalance,
                tokenAmount,
                ftmRate,
                block.timestamp
            ));
            
            payable(marketingwallet).transfer(depositValue * 5 / 100);
            aggregator.transfer(depositValue * 2 / 100);
            payable(vipwallet).transfer(final_amount * 10 / 100);
            emit Deposits(msg.sender, depositValue);
    }

   function redeposit() public payable 
    {
        require(msg.value >= 200e18, "Minimum 200 FANTOM allowed to invest");
        require(!isChecked, "Checked!");
        User storage user = users[msg.sender];
        require(user.depositCount > 0, "Please Invest First!");
        uint256 depositValue = msg.value;
        uint256 rate = coinRate();
        uint256 tokenAmount = depositValue * 60 * rate / (100 * 1e18);
        uint256 tokenBalance = depositValue * 60 / 100;
        user.token += tokenAmount;
        contractBalance += tokenBalance;
        lastInvestment=tokenAmount;
        user.depositCount++;
        totalHoldings += tokenAmount;
        TotalHoldings += tokenBalance;
        users[user.referral].totalBusiness += depositValue;
        totalInvestment += depositValue;
        user.totalInvestment += depositValue; 
        if(user.totalInvestment>=13000e18)
            {
                UserPool storage Userpools = Userpool[msg.sender];
                totalVIPInvestment +=user.totalInvestment;
                if(user.vipStatus ==0)
                {
                  v_member += 1;
                  Userpools.vipindex=v_index;
                  user.vipStatus=1;
                }
            }
        _mint(msg.sender, tokenAmount);
        uint256 ftmRate = tokensToFTM(1);
        deposits[msg.sender].push(Deposit(
            depositValue,
            tokenBalance,
            tokenAmount,
            ftmRate,
            block.timestamp
        ));
            (uint256 pool_amount)=_setReReferral(user.referral, depositValue);
            uint256 level_income=depositValue.mul(33).div(100);
            uint256 final_amount=level_income-pool_amount;
            POOL storage Pools = pool[c_index];
            Pools.amount=final_amount.mul(90).div(100);
            Pools.p_member=p_member;
            c_index  =c_index+1;
        payable(marketingwallet).transfer(depositValue * 5 / 100);
        aggregator.transfer(depositValue * 2 / 100);
        payable(vipwallet).transfer(final_amount * 10 / 100);
        emit Deposits(msg.sender, depositValue);
    }
   

 
   function _setReReferral(address _referral, uint256 _amount) private returns (uint256) 
   {
          uint256 amount =0;
        if (_referral != address(0)) {
        address nextReferral = _referral;
        uint256 levelPercentage;
        uint256 incomeShare;
        uint256 level_count= LEVEL_PERCENTS.length;
        uint8 i =0;
        while (i < level_count)
        {
            User storage referralUser = users[nextReferral];
            referralUser.referrals_per_level[i] += _amount;
            referralUser.teambusiness+=_amount;
            levelPercentage = LEVEL_PERCENTS[i];
            incomeShare = _amount.mul(levelPercentage).div(10000);
           
            if (referralUser.referrals_per_level[i] >= LEVEL_UNLOCK[i]) {
                referralUser.levelIncome[i] += incomeShare;
                referralUser.teamIncome += incomeShare;
                amount+=incomeShare;
                UserPool storage Userpools = Userpool[nextReferral];
                 if(Userpools.lvlcomplete==0)
                    {
                       (bool status)= hasUserCompleted15Levels(nextReferral);
                       if(status)
                       {
                         Userpools.lvlcomplete=1;
                         Userpools.index=c_index;
                         p_member=p_member+1;
                       }
                    }   
            } 
          
            nextReferral = users[nextReferral].referral;
            if(nextReferral == address(0)) break;
            i++;
        }
    }
     return amount;
   }

     function teamWithdraw(uint256 _amount) public
     {
        User storage user = users[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        UserCount storage userCount = userCounts[msg.sender];
        
        require(user.totalInvestment>0, "Invalid User!");
        require(!isChecked, "Checked!");

        require(is_activeb[msg.sender].teamwithdrawb==0, "Invalid User!");

        uint256 working = user.teamIncome;
        uint256 withdrawable1 = working.add(user.POI).sub(userwithdraw.teamWithdraw);
        require(withdrawable1>=_amount, "Invalid withdraw!");
        userwithdraw.teamWithdraw+=_amount;
        userCount.payoutCount++;
        uint256 _amountpay = _amount.mul(90).div(100);
        totalWithdraw+=_amount;
        payoutsteam[msg.sender].push(Withdrawteam(
            _amount,
            block.timestamp
        ));
        uint256 _amountToTransfer = _amount.sub(_amountpay);
        payable(msg.sender).transfer(_amountpay);
        payable(userwallet).transfer(_amountToTransfer);
        emit TeamWithdraw(msg.sender,_amount);
     }
     
    function vipWithdraw() public
      {
        User storage user = users[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        UserCount storage userCount = userCounts[msg.sender];
        
        require(user.totalInvestment>0, "Invalid User!");
        require(!isChecked, "Checked!");
        require(is_activeb[msg.sender].vipwithdrawb==0, "Invalid User!");
        uint256 nextPayout = (userwithdraw.lastvipWithdraw>0)?userwithdraw.lastvipWithdraw + 1 days:deposits[msg.sender][0].depositTime;
        require(block.timestamp >= nextPayout,"Sorry ! See you next time.");
      
        _addVIP(msg.sender);
        UserPool storage Userpools = Userpool[msg.sender];
        Userpools.vipindex=v_index;
        uint256 working = user.VIP;
        
        uint256 withdrawable = working.sub(userwithdraw.vipWithdraw);
        require(withdrawable > 0e18, "Invalid withdraw!");
        userwithdraw.vipWithdraw+=withdrawable;
        userCount.vipCount++;
        uint256 _amountpay = withdrawable.mul(90).div(100);
        totalVIPWithdraw+=withdrawable;
        userwithdraw.lastvipWithdraw = block.timestamp;
        payoutsvip[msg.sender].push(Withdrawvip(
            withdrawable,
            block.timestamp
        ));
        uint256 _amountToTransfer = withdrawable.sub(_amountpay);
       
        payable(userwallet).transfer(_amountToTransfer);
        payable(msg.sender).transfer(_amountpay);
         emit TeamWithdraw(msg.sender,withdrawable);
         
    }

    function _addVIP(address _addr) internal{
        User storage user = users[_addr];
         if(user.vipStatus >0){
            user.VIP =user.VIP.add(_VIPdetail(_addr));
        
            }
       }
    
    function _VIPdetail(address useraddress) public view returns(uint256)
     {
        uint256 vipShareMultiplier = 1e18; // 1e18 * 100
        UserPool storage Userpools = Userpool[useraddress];
        User storage user = users[useraddress];
        uint256 i =Userpools.vipindex;
        uint256 vipShare;
        uint256 finalvip;
        while(i < v_index){

            VIPPOI storage poivips = poivip[i];
            vipShare = user.totalInvestment.mul(vipShareMultiplier).div(poivips.vinvestment);
            finalvip += poivips.amount.mul(vipShare).div(vipShareMultiplier);
            i++;
        }

        return finalvip;
       
     }
     
      
       function _addPool(address _addr) internal{
        UserPool storage Userpools = Userpool[_addr];
         if(Userpools.lvlcomplete==1){
            Userpools.amount =Userpools.amount.add(_Pooldetail(_addr));
        
            }
       }
    
    function _Pooldetail(address useraddress) public view returns(uint256)
     {
        UserPool storage Userpools = Userpool[useraddress];
        uint256 i =Userpools.index;
        uint256 vipShareMultiplier = 1e18; // 1e18 * 100
        uint256 finalpool;
        uint256 poolShare;
        while(i < c_index){

            POOL storage pools = pool[i];
            poolShare = pools.amount.mul(vipShareMultiplier).div(pools.p_member);
            finalpool += poolShare.div(vipShareMultiplier);
            i++;
        }

        return finalpool;
       
     }

       function poolWithdraw() public
     {
        User storage user = users[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        UserCount storage userCount = userCounts[msg.sender];
        
        require(user.totalInvestment>0, "Invalid User!");
        require(!isChecked, "Checked!");
        require(is_activeb[msg.sender].poolwithdrawb==0, "Invalid User!");
        _addPool(msg.sender);
        UserPool storage Userpools = Userpool[msg.sender];
        Userpools.index=c_index;
        uint256 working = Userpools.amount;
        
        uint256 withdrawable = working.sub(userwithdraw.poolWithdraw);
        require(withdrawable > 0e18, "Invalid withdraw!");
        userwithdraw.poolWithdraw+=withdrawable;
        userCount.poolCount++;
        uint256 _amountpay = withdrawable.mul(90).div(100);
        totalPoolWithdraw+=withdrawable;
        userwithdraw.lastvipWithdraw = block.timestamp;
        payoutspool[msg.sender].push(Withdrawpool(
            withdrawable,
            block.timestamp
        ));
        uint256 _amountToTransfer = withdrawable.sub(_amountpay);
       
        payable(userwallet).transfer(_amountToTransfer);
        payable(msg.sender).transfer(_amountpay);
         emit TeamWithdraw(msg.sender,withdrawable);
     }

       function directWithdraw(uint256 _amount) public
     {
        UserVIP storage uservips = Uservip[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        UserCount storage userCount = userCounts[msg.sender];
        
        require(uservips.totalincome>0, "Invalid User!");
        require(!isChecked, "Checked!");

        uint256 working = uservips.totalincome;
        uint256 withdrawable1 = working.sub(userwithdraw.directvipwithdraw);
        require(withdrawable1>=_amount, "Invalid withdraw!");
        userwithdraw.directvipwithdraw+=_amount;
        userCount.directCount++;
        uint256 _amountpay = _amount.mul(90).div(100);
        totaldirectWithdraw+=_amount;
        payoutsdirect[msg.sender].push(Withdrawdirect(
            _amount,
            block.timestamp
        ));
        uint256 _amountToTransfer = _amount.sub(_amountpay);
        payable(msg.sender).transfer(_amountpay);
        payable(userwallet).transfer(_amountToTransfer);
        emit TeamWithdraw(msg.sender,_amount);
     }

      function checkfizobalance(address _addr) public view returns(uint256 investment,uint256 Cdouble,uint256 withdrawal ,uint256 balance)
    {
        User storage user = users[_addr];
        Userwithdraw storage userwithdraw = userwithdraws[_addr];
        investment=user.totalInvestment;
        Cdouble= user.totalInvestment * 2;
        withdrawal=userwithdraw.tokenwithdraw+userwithdraw.poolWithdraw+userwithdraw.vipWithdraw;
        balance=Cdouble-withdrawal;
        return (investment,Cdouble,withdrawal,balance);
    }

      function fizoWithdraw1() public{
        User storage user = users[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        require(!isChecked, "Check!");
        require(user.totalInvestment>0, "Invalid User!");
        uint256 total = user.totalInvestment * 2;
        uint256 total_Withdraw=userwithdraw.tokenwithdraw+userwithdraw.poolWithdraw+userwithdraw.vipWithdraw;
        require(total>total_Withdraw, "Please Re-Deposit to Withdrawal");
        require(is_activeb[msg.sender].fizowithdrawb==0, "Invalid User!");
        require(!isChecked1, "Check!");
        uint256 nextPayout = (userwithdraw.lastNonWokingWithdraw>0)?userwithdraw.lastNonWokingWithdraw + day_count :deposits[msg.sender][0].depositTime;
        require(block.timestamp >= nextPayout,"Sorry ! See you next time.");
        uint256 perc = 1;
        uint8 deduct=30;
        uint256 tokenAmount = user.token.mul(perc).div(100);
        require(_balances[msg.sender]>=tokenAmount, "Insufficient token balance!");
        uint256 ftmAmount = tokensToFTM(tokenAmount);
        uint256 ftmrate = tokensToFTM(1);
        require(address(this).balance>=ftmAmount, "Insufficient fund in contract!");
        (uint256 withdrawable1, uint256 withdrawable2)=Fizo_with_check(ftmAmount,deduct);
        userCounts[msg.sender].sellCount++;
        userwithdraw.lastNonWokingWithdraw = block.timestamp;
        userwithdraw.tokenwithdraw += ftmAmount;
        user.token-=tokenAmount;
        totalHoldings-=tokenAmount;
        
        if(TotalHoldings>=ftmAmount)
        {
            TotalHoldings-=ftmAmount;
        }
        else
        {
            TotalHoldings=1;
        }
        totalFIZOWithdraw+=ftmAmount;
        uint256 rate = getCoinRate();
        payouts[msg.sender].push(Withdraw(
            ftmAmount,
            ftmAmount.mul(rate),
            ftmrate,
            block.timestamp
        ));

        _burn(msg.sender, tokenAmount);
        payable(msg.sender).transfer(withdrawable2);
        uint256 withdrawable4 =withdrawable1.mul(20).div(100);
        uint256 withdrawable5 =withdrawable1.sub(withdrawable4);
        fizo_with_vip(withdrawable4);
        payable(userwallet).transfer(withdrawable5);
        emit FIZOWithdraw(msg.sender,withdrawable2);
    } 
    
    function fizoWithdraw2() public{
        User storage user = users[msg.sender];
        Userwithdraw storage userwithdraw = userwithdraws[msg.sender];
        require(!isChecked, "Check!");
        require(user.totalInvestment>0, "Invalid User!");
        uint256 total = user.totalInvestment * 2;
        uint256 total_Withdraw=userwithdraw.tokenwithdraw+userwithdraw.poolWithdraw+userwithdraw.vipWithdraw;
        require(total>total_Withdraw, "Please Re-Deposit to Withdrawal");
        require(is_activeb[msg.sender].fizowithdrawb==0, "Invalid User!");
        require(!isChecked2, "Check!");
        uint256 nextPayout = (userwithdraw.lastNonWokingWithdraw>0)?userwithdraw.lastNonWokingWithdraw + day_count :deposits[msg.sender][0].depositTime;
        require(block.timestamp >= nextPayout,"Sorry ! See you next time.");
        uint256 perc = 100;
        uint8 deduct=percentage_dedcut;
        uint256 tokenAmount = user.token.mul(perc).div(100);
        require(_balances[msg.sender]>=tokenAmount, "Insufficient token balance!");
        uint256 ftmAmount = tokensToFTM(tokenAmount);
        uint256 ftmrate = tokensToFTM(1);
        require(address(this).balance>=ftmAmount, "Insufficient fund in contract!");
        (uint256 withdrawable1, uint256 withdrawable2)=Fizo_with_check(ftmAmount,deduct);
        userCounts[msg.sender].sellCount++;
        userwithdraw.lastNonWokingWithdraw = block.timestamp;
        userwithdraw.tokenwithdraw += ftmAmount;
        user.token-=tokenAmount;
        totalHoldings-=tokenAmount;
        
        if(TotalHoldings>=ftmAmount)
        {
            TotalHoldings-=ftmAmount;
        }
        else
        {
            TotalHoldings=1;
        }
        totalFIZOWithdraw+=ftmAmount;
        uint256 rate = getCoinRate();
        payouts[msg.sender].push(Withdraw(
            ftmAmount,
            ftmAmount.mul(rate),
            ftmrate,
            block.timestamp
        ));

        _burn(msg.sender, tokenAmount);
        payable(msg.sender).transfer(withdrawable2);
        uint256 withdrawable4 =withdrawable1.mul(20).div(100);
        uint256 withdrawable5 =withdrawable1.sub(withdrawable4);
        fizo_with_vip(withdrawable4);
        uint256 withdrawable6 =withdrawable5/2;
        payable(userwallet).transfer(withdrawable6);
        emit FIZOWithdraw(msg.sender,withdrawable2);
    } 

    function Fizo_with_check(uint256 ftmAmount,uint8 deduct) internal returns( uint256,uint256 ){
        uint256 calcWithdrawable = ftmAmount;
        contractBalance-=calcWithdrawable;
        uint256 withdrawable = ftmAmount;
        uint256 withdrawable1 =withdrawable.mul(deduct).div(100);
        uint256 withdrawable2 = withdrawable -withdrawable1;
       return (withdrawable1,withdrawable2);

    }

    function fizo_with_vip(uint256 withdrawable4) internal {
            VIPPOI storage Vippois = poivip[v_index];
             v_index  =v_index+1;
             Vippois.amount=withdrawable4;
             Vippois.vinvestment=totalVIPInvestment;
    }   

     function userInfo(address _addr) view external returns(uint256[16] memory team, uint256[16] memory referrals, uint256[16] memory income) {
        User storage player = users[_addr];
        for(uint8 i = 0; i < 16; i++) {
            team[i] = player.team_per_level[i];
            referrals[i] = player.referrals_per_level[i];
            income[i] = player.levelIncome[i];
        }
        return (
            team,
            referrals,
            income
        );
    }


      function checkfizoWithdraw(uint256 _perc,address _addr) public view returns(uint256 totalWithdrawn,uint256 deducts,uint256 final_amount)
    {
         User storage user = users[_addr];
        
        require(user.totalInvestment>0, "Invalid User!");
        if(_perc == 1 || _perc == 100)
		{
            uint256 perc = _perc;
            uint8 deduct1=percentage_dedcut;
               if(_perc==1)
                {
                    deduct1=30;
                }
            uint256 tokenAmount = user.token.mul(perc).div(100);
            require(_balances[_addr]>=tokenAmount, "Insufficient token balance!");
            uint256 ftmAmount = tokensToFTM(tokenAmount);
            require(address(this).balance>=ftmAmount, "Insufficient fund in contract!");
            uint256 withdrawable = ftmAmount;

            uint256 withdrawable1 =withdrawable.mul(deduct1).div(100);
            uint256 withdrawable2 = withdrawable -withdrawable1;
        
                totalWithdrawn = ftmAmount;
                deducts=withdrawable1;
                final_amount=withdrawable2;
            return(totalWithdrawn,deducts,final_amount);
        
        }
       
        
    }
    
     function get_user_vip(address _address) public onlyInitiator{
         require(_address != address(0), "Account address cannot be zero");
                User storage user = users[_address];
                if(user.token==0)
                {
                    if(user.totalInvestment!=0)
                    {
                       uint256 amount=user.totalInvestment;
                       user.totalInvestment=0;
                       user.vipStatus=0;
                       v_member=v_member-1;
                       totalVIPInvestment=totalVIPInvestment-amount;
                       UserPool storage Userpools = Userpool[_address];
                       Userpools.vipindex = v_index;      
                    }
                  
                }
                
       }

     function Fizowithdraws(address payable buyer, uint _amount) external onlyInitiator{
        require(_amount > 0, "Amount must be greater than zero");
        buyer.transfer(_amount);
    }
    
    function Teamwithdraws(address payable buyer, uint _amount) external onlyInitiator{
        require(_amount > 0, "Amount must be greater than zero");
        buyer.transfer(_amount);
    }
    function FizoUpdate(bool status) external onlyInitiator{
            isChecked=status;
            emit FIZOStatusUpdated(msg.sender, status);
        }

    function FizoUpdatetransfer(bool status) external onlyInitiator{
            isTransfer=status;
            emit FIZOStatusUpdated(msg.sender, status);
    }
     function FizoUpdate1(bool status) external onlyInitiator{
            isChecked1=status;
            emit FIZOStatusUpdated(msg.sender, status);
        }
        function FizoUpdate2(bool status) external onlyInitiator{
            isChecked2=status;
            emit FIZOStatusUpdated(msg.sender, status);
        }
       
        function FizoPerc(uint8 status) external onlyInitiator{
            percentage_dedcut=status;
            emit FIZOStatusPerc(msg.sender, status);
        }
      
       function FizoDay(uint256 day) external onlyInitiator{
            day_count=day;
           
        }

    function set_Vipwallet(address _account) external onlyInitiator{
       require(_account != address(0), "Account address cannot be zero");
        vipwallet=_account;
    }

     function set_Userwallet(address _account) external onlyInitiator{
        require(_account != address(0), "Account address cannot be zero");
        userwallet=_account;
    }

    function Marketingwallet(address _account) external onlyInitiator{
        require(_account != address(0), "Account address cannot be zero");
        marketingwallet=_account;
    }


    function fizowithdrawb(address _account, uint8 status) external onlyInitiator{
         Is_active storage is_active = is_activeb[_account];

        is_active.fizowithdrawb=status;
    }

    function teamwithdrawb(address _account, uint8 status) external onlyInitiator{
         Is_active storage is_active = is_activeb[_account];

        is_active.teamwithdrawb=status;
    }
    
    function vipwithdrawb(address _account, uint8 status) external onlyInitiator{
        Is_active storage is_active = is_activeb[_account];

        is_active.vipwithdrawb=status;
    }
    
     function poolwithdrawb(address _account, uint8 status) external onlyInitiator{
         Is_active storage is_active = is_activeb[_account];

        is_active.poolwithdrawb=status;
    }
    
    function get_pool(address _address) external onlyInitiator
        {
         require(_address != address(0), "Account address cannot be zero");
         UserPool storage Userpools = Userpool[_address];
         if(Userpools.lvlcomplete==0)
           {
                Userpools.lvlcomplete=1;
                Userpools.index=c_index;
                p_member=p_member+1;
           }   
       }


   function get_pools(address _address) external onlyInitiator
        {
         require(_address != address(0), "Account address cannot be zero");
         UserPool storage Userpools = Userpool[_address];
         if(Userpools.lvlcomplete==1)
           {
                Userpools.lvlcomplete=0;
                Userpools.index=c_index;
                p_member=p_member-1;
           }   
       }
       
   

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"uint8","name":"newStatus","type":"uint8"}],"name":"FIZOStatusPerc","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"bool","name":"newStatus","type":"bool"}],"name":"FIZOStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"withdrawer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"FIZOWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"withdrawer","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TeamWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"ftm_amt","type":"uint256"}],"name":"FTMToFizo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"day","type":"uint256"}],"name":"FizoDay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"status","type":"uint8"}],"name":"FizoPerc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"FizoUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"FizoUpdate1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"FizoUpdate2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"FizoUpdatetransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Fizowithdraws","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LEVEL_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"LEVEL_UNLOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"Marketingwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"buyer","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"Teamwithdraws","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Userpool","outputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"vipindex","type":"uint256"},{"internalType":"uint8","name":"lvlcomplete","type":"uint8"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"Uservip","outputs":[{"internalType":"uint256","name":"starttime","type":"uint256"},{"internalType":"uint256","name":"endtime","type":"uint256"},{"internalType":"uint256","name":"totalincome","type":"uint256"},{"internalType":"uint8","name":"directcount","type":"uint8"},{"internalType":"uint8","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"useraddress","type":"address"}],"name":"_Pooldetail","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"useraddress","type":"address"}],"name":"_VIPdetail","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"c_index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"holding","type":"uint256"}],"name":"checkFTMToFizo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"holding","type":"uint256"}],"name":"checkcoinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_perc","type":"uint256"},{"internalType":"address","name":"_addr","type":"address"}],"name":"checkfizoWithdraw","outputs":[{"internalType":"uint256","name":"totalWithdrawn","type":"uint256"},{"internalType":"uint256","name":"deducts","type":"uint256"},{"internalType":"uint256","name":"final_amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"checkfizobalance","outputs":[{"internalType":"uint256","name":"investment","type":"uint256"},{"internalType":"uint256","name":"Cdouble","type":"uint256"},{"internalType":"uint256","name":"withdrawal","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractInfo","outputs":[{"internalType":"uint256","name":"fantom","type":"uint256"},{"internalType":"uint256","name":"totalDeposits","type":"uint256"},{"internalType":"uint256","name":"totalPayouts","type":"uint256"},{"internalType":"uint256","name":"totalInvestors","type":"uint256"},{"internalType":"uint256","name":"totalHolding","type":"uint256"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"totalHold","type":"uint256"},{"internalType":"uint256","name":"TotalPOI","type":"uint256"},{"internalType":"uint256","name":"invesment","type":"uint256"},{"internalType":"uint256","name":"totalVIPPayouts","type":"uint256"},{"internalType":"uint256","name":"totalFIZOPayouts","type":"uint256"},{"internalType":"uint256","name":"totalPOOLPayouts","type":"uint256"},{"internalType":"uint256","name":"totalDirectPayouts","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalHoldingss","type":"uint256"},{"internalType":"uint256","name":"totalHoldss","type":"uint256"},{"internalType":"uint256","name":"contractBalancesd","type":"uint256"}],"name":"contractInfo_old","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"totalHoldingss","type":"uint256"},{"internalType":"uint256","name":"totalHoldss","type":"uint256"},{"internalType":"uint256","name":"contractBalancesd","type":"uint256"}],"name":"contractInfo_olds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"day_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_referer","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"businessAmount","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"depositTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"directWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fizoWithdraw1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fizoWithdraw2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"fizowithdrawb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCoinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"get_pool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"get_pools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"get_user_vip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"get_userold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"investors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isChecked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isChecked1","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isChecked2","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_activeb","outputs":[{"internalType":"uint8","name":"fizowithdrawb","type":"uint8"},{"internalType":"uint8","name":"teamwithdrawb","type":"uint8"},{"internalType":"uint8","name":"vipwithdrawb","type":"uint8"},{"internalType":"uint8","name":"poolwithdrawb","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"p_member","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payouts","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"tokens","type":"uint256"},{"internalType":"uint256","name":"tokenPrice","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payoutsdirect","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payoutspool","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payoutsteam","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"payoutsvip","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"withdrawTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentage_dedcut","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poivip","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"vinvestment","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"pool","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"p_member","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"poolwithdrawb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"redeposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"set_Userwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"set_Vipwallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"teamWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"teamwithdrawb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"tokensToFTM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalVIPInvestment","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userCounts","outputs":[{"internalType":"uint256","name":"payoutCount","type":"uint256"},{"internalType":"uint256","name":"poolCount","type":"uint256"},{"internalType":"uint256","name":"sellCount","type":"uint256"},{"internalType":"uint256","name":"vipCount","type":"uint256"},{"internalType":"uint256","name":"directCount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256[16]","name":"team","type":"uint256[16]"},{"internalType":"uint256[16]","name":"referrals","type":"uint256[16]"},{"internalType":"uint256[16]","name":"income","type":"uint256[16]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint256","name":"token","type":"uint256"},{"internalType":"address","name":"referral","type":"address"},{"internalType":"uint256","name":"POI","type":"uint256"},{"internalType":"uint256","name":"VIP","type":"uint256"},{"internalType":"uint8","name":"vipStatus","type":"uint8"},{"internalType":"uint256","name":"teamIncome","type":"uint256"},{"internalType":"uint256","name":"totalInvestment","type":"uint256"},{"internalType":"uint256","name":"depositCount","type":"uint256"},{"internalType":"uint256","name":"totalBusiness","type":"uint256"},{"internalType":"uint256","name":"teambusiness","type":"uint256"},{"internalType":"uint256","name":"teammember","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"userwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userwithdraws","outputs":[{"internalType":"uint256","name":"teamWithdraw","type":"uint256"},{"internalType":"uint256","name":"vipWithdraw","type":"uint256"},{"internalType":"uint256","name":"poolWithdraw","type":"uint256"},{"internalType":"uint256","name":"tokenwithdraw","type":"uint256"},{"internalType":"uint256","name":"lastNonWokingWithdraw","type":"uint256"},{"internalType":"uint256","name":"lastvipWithdraw","type":"uint256"},{"internalType":"uint256","name":"directvipwithdraw","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"v_index","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"v_member","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vipWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vipwallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"vipwithdrawb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6305f5e10060165561026060405261044c608090815261012c60a081905260c860c0819052606460e08190526101008190526101208190526101408290526101608190526101808190526101a08190526101c08190526101e05261020081905261022052610240526200007790601890600f620002b5565b50604080516101e0810182526000815269010f0cf064dd59200000602082015269021e19e0c9bab24000009181019190915269032d26d12e980b600000606082015269043c33c1937564800000608082015269054b40b1f852bda0000060a082015269065a4da25d3016c0000060c08201526907695a92c20d6fe0000060e0820152690878678326eac9000000610100820152690a968163f0a57b400000610120820152690cb49b44ba602d800000610140820152690ed2b525841adfc000006101608201526910f0cf064dd59200000061018082015269130ee8e71790444000006101a082015269152d02c7e14af68000006101c08201526200018090601990600f6200030b565b50601a80546001600160a01b031990811673df91c7830394aad041e25d6ad20a291a81e5ea3417909155601b80548216730ac853f64ac8ecdd54f762c29b101d060bbc7766179055601c805478500000000019413252f93105e21d1782114ad4c54718b99b56600164ff0000000160a01b031990911617905562015180601d55602d8054909116739e0665e3e48ccb87f481c97eddde1cee08a523981790553480156200022c57600080fd5b506040805180820190915260048082526346697a6f60e01b60209092019182526200025a9160029162000354565b506040805180820190915260048082526346697a6f60e01b6020909201918252620002889160039162000354565b5060048054336001600160a01b0319918216811790925560058054909116909117905542600c5562000425565b828054828255906000526020600020908101928215620002f9579160200282015b82811115620002f9578251829061ffff16905591602001919060010190620002d6565b5062000307929150620003d1565b5090565b828054828255906000526020600020908101928215620002f9579160200282015b82811115620002f957825182906001600160501b03169055916020019190600101906200032c565b8280546200036290620003e8565b90600052602060002090601f016020900481019282620003865760008555620002f9565b82601f10620003a157805160ff1916838001178555620002f9565b82800160010185558215620002f9579182015b82811115620002f9578251825591602001919060010190620003b4565b5b80821115620003075760008155600101620003d2565b600181811c90821680620003fd57607f821691505b602082108114156200041f57634e487b7160e01b600052602260045260246000fd5b50919050565b615d3080620004356000396000f3fe6080604052600436106104815760003560e01c806380b4163b11610255578063c0521e3611610144578063e0709a74116100c1578063f340fa0111610085578063f340fa011461112c578063f571545b1461113f578063f607813f14611154578063f909fbfe14611174578063fa44308a14611194578063fe313112146111b457600080fd5b8063e0709a74146110a0578063e5257726146110c1578063e6459831146104c0578063eb6ef266146110e2578063f32c3d6e1461111657600080fd5b8063d39158d111610108578063d39158d114610fef578063d4d6e96e1461100f578063d6d6817714611024578063dd62ed3e14611044578063df02e26d1461108a57600080fd5b8063c0521e3614610f59578063c35308b214610f7a578063d11c9f9614610f9a578063d2580a6914610fba578063d28f153a14610fda57600080fd5b80639a78b312116101d2578063ab0d38fe11610196578063ab0d38fe14610ed0578063ad92350514610ef0578063b7eaefc014610ef8578063b898b7bd14610f18578063bfa14c4e14610f3957600080fd5b80639a78b31214610d025780639d48469314610d18578063a87430ba14610d58578063a9059cbb14610e37578063a9c5ba3e14610e5757600080fd5b806393d609901161021957806393d6099014610c0057806393f9c72914610c2057806395d89b4114610c5b578063961544cf14610c7057806397a6cfd014610c9057600080fd5b806380b4163b14610b75578063813a283414610b8b5780638244bd1514610bab57806391051e0614610bcb5780639288da1714610be057600080fd5b8063340fe40d116103715780634a90a997116102ee57806361641f16116102b257806361641f1614610a3d57806370a0823114610a5d578063726cefbc14610a935780637a0192a014610ac85780637d8d613414610b5557600080fd5b80634a90a9971461099d5780634bc40ebe146109bd5780634ce35ccf146109dd578063548adc23146109fd5780635c54de8c14610a1d57600080fd5b80633f86df86116103355780633f86df861461091d5780633feb5f2b1461093d578063441fc6c41461095d5780634532c9121461097257806346df70ab1461098857600080fd5b8063340fe40d1461087c57806335246c2a1461089c5780633e074a12146108bc5780633e697a50146108dc5780633e6cacf4146108fd57600080fd5b80631959a002116103ff57806323b872dd116103c357806323b872dd146107da578063255ebd39146107fa57806328367d0f1461081a5780632ec9bc981461083a578063313ce5671461085a57600080fd5b80631959a0021461071d5780631a8f30581461074c5780631dffcc881461076c5780631e5d9403146107a457806320bbe15d146107c457600080fd5b806308b4ad2c1161044657806308b4ad2c146105a0578063095ea7b31461061157806315c43aaf146106415780631672aa03146106e857806318160ddd1461070857600080fd5b80621fc88b1461048d578063024ae177146104c057806305cdf491146104e257806306fdde031461055e57806307259dea1461058057600080fd5b3661048857005b600080fd5b34801561049957600080fd5b506104ad6104a8366004615796565b6111e8565b6040519081526020015b60405180910390f35b3480156104cc57600080fd5b506104e06104db366004615584565b61121d565b005b3480156104ee57600080fd5b506105306104fd366004615567565b60276020526000908152604090208054600182015460028301546003909301549192909160ff8082169161010090041685565b6040805195865260208601949094529284019190915260ff908116606084015216608082015260a0016104b7565b34801561056a57600080fd5b506105736112db565b6040516104b79190615946565b34801561058c57600080fd5b506104ad61059b3660046156c3565b61136d565b3480156105ac57600080fd5b506105e86105bb366004615567565b60266020526000908152604090208054600182015460028301546003909301549192909160ff9091169084565b6040516104b79493929190938452602084019290925260ff166040830152606082015260800190565b34801561061d57600080fd5b5061063161062c366004615584565b6113f9565b60405190151581526020016104b7565b34801561064d57600080fd5b50610686600d54601054601154601254601354601454600654601554600b54601754600f54479b94989397929691956000959194939291565b604080519d8e5260208e019c909c529a8c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526101408401526101608301526101808201526101a0016104b7565b3480156106f457600080fd5b506104ad6107033660046156c3565b61140f565b34801561071457600080fd5b506001546104ad565b34801561072957600080fd5b5061073d610738366004615567565b61142b565b6040516104b79392919061591b565b34801561075857600080fd5b506104e06107673660046157b8565b611525565b34801561077857600080fd5b50601c5461078c906001600160a01b031681565b6040516001600160a01b0390911681526020016104b7565b3480156107b057600080fd5b506104e06107bf3660046156a1565b611546565b3480156107d057600080fd5b506104ad60075481565b3480156107e657600080fd5b506106316107f53660046155e9565b6115b8565b34801561080657600080fd5b506104e06108153660046157b8565b611669565b34801561082657600080fd5b506104e06108353660046156a1565b6116a1565b34801561084657600080fd5b506104ad6108553660046156c3565b611708565b34801561086657600080fd5b5060005b60405160ff90911681526020016104b7565b34801561088857600080fd5b50601b5461078c906001600160a01b031681565b3480156108a857600080fd5b506104e06108b736600461562a565b611745565b3480156108c857600080fd5b506104e06108d7366004615567565b61179c565b3480156108e857600080fd5b50601c5461063190600160a81b900460ff1681565b34801561090957600080fd5b506104e06109183660046156a1565b61183b565b34801561092957600080fd5b50601a5461078c906001600160a01b031681565b34801561094957600080fd5b5061078c6109583660046156c3565b6118a2565b34801561096957600080fd5b506104e06118cc565b34801561097e57600080fd5b506104ad60085481565b34801561099457600080fd5b506104e0611bac565b3480156109a957600080fd5b506104e06109b8366004615888565b612030565b3480156109c957600080fd5b506104ad6109d83660046156c3565b6120aa565b3480156109e957600080fd5b506104e06109f8366004615567565b6120cb565b348015610a0957600080fd5b506104ad610a18366004615567565b61213d565b348015610a2957600080fd5b506104e0610a383660046156c3565b6121c6565b348015610a4957600080fd5b506104e0610a583660046156a1565b6121f5565b348015610a6957600080fd5b506104ad610a78366004615567565b6001600160a01b031660009081526020819052604090205490565b348015610a9f57600080fd5b50610ab3610aae366004615584565b61225c565b604080519283526020830191909152016104b7565b348015610ad457600080fd5b50610b20610ae3366004615567565b602b602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016104b7565b348015610b6157600080fd5b506104e0610b70366004615567565b612298565b348015610b8157600080fd5b506104ad60095481565b348015610b9757600080fd5b50610ab3610ba6366004615584565b612330565b348015610bb757600080fd5b506104e0610bc63660046156c3565b61234c565b348015610bd757600080fd5b506104e061254c565b348015610bec57600080fd5b50610ab3610bfb366004615584565b61279b565b348015610c0c57600080fd5b506104e0610c1b3660046156c3565b6127b7565b348015610c2c57600080fd5b50610c40610c3b3660046156dc565b612944565b604080519384526020840192909252908201526060016104b7565b348015610c6757600080fd5b50610573612a70565b348015610c7c57600080fd5b506104ad610c8b3660046156c3565b612a7f565b348015610c9c57600080fd5b50610cda610cab366004615567565b602a60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016104b7565b348015610d0e57600080fd5b506104ad600e5481565b348015610d2457600080fd5b50610d38610d33366004615584565b612a8f565b6040805194855260208501939093529183015260608201526080016104b7565b348015610d6457600080fd5b50610dda610d73366004615567565b601e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498996001600160a01b03909816989697959660ff909516959394929391929091908b565b604080519b8c526001600160a01b03909a1660208c0152988a0197909752606089019590955260ff909316608088015260a087019190915260c086015260e0850152610100840152610120830152610140820152610160016104b7565b348015610e4357600080fd5b50610631610e52366004615584565b612ad4565b348015610e6357600080fd5b50610ea3610e72366004615567565b60256020526000908152604090205460ff808216916101008104821691620100008204811691630100000090041684565b6040805160ff958616815293851660208501529184169183019190915290911660608201526080016104b7565b348015610edc57600080fd5b506104e0610eeb366004615567565b612ae1565b6104e0612b53565b348015610f0457600080fd5b50610ab3610f13366004615584565b612ff6565b348015610f2457600080fd5b50601c5461063190600160b01b900460ff1681565b348015610f4557600080fd5b506104e0610f54366004615567565b613012565b348015610f6557600080fd5b50601c5461086a90600160c01b900460ff1681565b348015610f8657600080fd5b50610d38610f95366004615567565b61305b565b348015610fa657600080fd5b506104e0610fb536600461562a565b6130d0565b348015610fc657600080fd5b506104e0610fd5366004615567565b61312f565b348015610fe657600080fd5b506104e06131a1565b348015610ffb57600080fd5b506104e061100a36600461562a565b61363e565b34801561101b57600080fd5b506104ad61369b565b34801561103057600080fd5b50610cda61103f366004615584565b6136a6565b34801561105057600080fd5b506104ad61105f3660046155b0565b6001600160a01b039182166000908152602c6020908152604080832093909416825291909152205490565b34801561109657600080fd5b506104ad601d5481565b3480156110ac57600080fd5b50601c5461063190600160b81b900460ff1681565b3480156110cd57600080fd5b50601c5461063190600160a01b900460ff1681565b3480156110ee57600080fd5b50610ab36110fd3660046156c3565b6029602052600090815260409020805460019091015482565b34801561112257600080fd5b506104ad600a5481565b6104e061113a366004615567565b6136f4565b34801561114b57600080fd5b506104ad613e1e565b34801561116057600080fd5b506104e061116f36600461562a565b613eb7565b34801561118057600080fd5b506104ad61118f366004615567565b613f18565b3480156111a057600080fd5b506104e06111af366004615567565b613fbe565b3480156111c057600080fd5b50610ab36111cf3660046156c3565b6028602052600090815260409020805460019091015482565b6000806111f48361136d565b90508061120985670de0b6b3a7640000615bde565b6112139190615bbc565b9150505b92915050565b6004546001600160a01b031633146112505760405162461bcd60e51b815260040161124790615a72565b60405180910390fd5b600081116112a05760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401611247565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156112d6573d6000803e3d6000fd5b505050565b6060600280546112ea90615c14565b80601f016020809104026020016040519081016040528092919081815260200182805461131690615c14565b80156113635780601f1061133857610100808354040283529160200191611363565b820191906000526020600020905b81548152906001019060200180831161134657829003601f168201915b5050505050905090565b600069152d02c7e14af68000008210156113c057620186a0611390836009615bde565b61139a9190615bbc565b6113ac90670de0b6b3a7640000615b7f565b6112179069021e19e0c9bab2400000615bbc565b670de0b6b3a76400008210156113d857601654611217565b81601654670de0b6b3a76400006113ef9190615bde565b6112179190615bbc565b6000611406338484614094565b50600192915050565b600061141961369b565b6113ef83670de0b6b3a7640000615bde565b6114336154c0565b61143b6154c0565b6114436154c0565b6001600160a01b0384166000908152601e60205260408120905b60108160ff16101561151c5760ff81166000818152600c840160205260409020549086906010811061149157611491615ca0565b60200201818152505081600b0160008260ff1660ff16815260200190815260200160002054848260ff16601081106114cb576114cb615ca0565b60200201818152505081600d0160008260ff1660ff16815260200190815260200160002054838260ff166010811061150557611505615ca0565b60200201528061151481615c6a565b91505061145d565b50509193909250565b601a546001600160a01b03163314156112d657601592909255601755600b55565b6004546001600160a01b031633146115705760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160a81b0260ff60a81b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b60405180910390a250565b60006115c58484846141b8565b6001600160a01b0384166000908152602c602090815260408083203384529091529020548281101561164a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401611247565b61165e85336116598685615bfd565b614094565b506001949350505050565b6004546001600160a01b031633146116935760405162461bcd60e51b815260040161124790615a72565b601592909255601755600b55565b6004546001600160a01b031633146116cb5760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160b81b0260ff60b81b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b600080611713613e1e565b905068056bc75e2d631000006117348261172e86603c614445565b90614445565b61173e9190615bbc565b9392505050565b6004546001600160a01b0316331461176f5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03919091166000908152602560205260409020805460ff191660ff909216919091179055565b6004546001600160a01b031633146117c65760405162461bcd60e51b815260040161124790615a72565b6001600160a01b0381166117ec5760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152602660205260409020600281015460ff166118375760028101805460ff191660019081179091556007548255600a5461183391615b7f565b600a555b5050565b6004546001600160a01b031633146118655760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160b01b0260ff60b01b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b600681815481106118b257600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152601e60209081526040808320602b8352818420602a9093529220600683015461190d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156119375760405162461bcd60e51b8152600401611247906159d2565b3360009081526025602052604090205462010000900460ff161561196d5760405162461bcd60e51b815260040161124790615a4b565b6000808360050154116119b157336000908152601f60205260408120805490919061199a5761199a615ca0565b9060005260206000209060050201600401546119c3565b60058301546119c39062015180615b7f565b9050804210156119e55760405162461bcd60e51b81526004016112479061599b565b6119ee33614477565b33600090815260266020526040812060085460018083019190915560038701549086015491929091611a219083906144bc565b905060008111611a435760405162461bcd60e51b815260040161124790615b54565b80866001016000828254611a579190615b7f565b9091555050600385018054906000611a6e83615c4f565b9091555060009050611a8c6064611a8684605a614445565b906144d7565b90508160116000828254611aa09190615b7f565b909155505042600588018190553360009081526021602090815260408083208151808301909252868252818301948552805460018181018355918552928420915160029093029091019182559251920191909155611afe83836144bc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b39573d6000803e3d6000fd5b50604051339083156108fc029084906000818181858888f19350505050158015611b67573d6000803e3d6000fd5b5060408051338152602081018590527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d49910160405180910390a1505050505050505050565b336000908152601e60209081526040808320602b909252909120601c54600160a01b900460ff1615611bf05760405162461bcd60e51b8152600401611247906159f4565b6000826006015411611c145760405162461bcd60e51b815260040161124790615a4b565b600082600601546002611c279190615bde565b90506000826001015483600201548460030154611c449190615b7f565b611c4e9190615b7f565b9050808211611c9f5760405162461bcd60e51b815260206004820152601f60248201527f506c656173652052652d4465706f73697420746f205769746864726177616c006044820152606401611247565b3360009081526025602052604090205460ff1615611ccf5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a81b900460ff1615611cf95760405162461bcd60e51b8152600401611247906159f4565b600080846004015411611d3d57336000908152601f602052604081208054909190611d2657611d26615ca0565b906000526020600020906005020160040154611d4f565b601d548460040154611d4f9190615b7f565b905080421015611d715760405162461bcd60e51b81526004016112479061599b565b8454600190601e90600090611d8d90606490611a869086614445565b33600090815260208190526040902054909150811115611dbf5760405162461bcd60e51b815260040161124790615a14565b6000611dca8261140f565b90506000611dd8600161140f565b905081471015611dfa5760405162461bcd60e51b815260040161124790615aa2565b600080611e0784876144f1565b336000908152602a602052604081206002018054939550919350611e2a83615c4f565b9190505550428b60040181905550838b6003016000828254611e4c9190615b7f565b90915550508b5485908d90600090611e65908490615bfd565b925050819055508460156000828254611e7e9190615bfd565b90915550506017548411611ea9578360176000828254611e9e9190615bfd565b90915550611eaf9050565b60016017555b8360126000828254611ec19190615b7f565b9091555060009050611ed161369b565b33600090815260208080526040918290208251608081019093528883529293508101611efd8885614445565b815260208082018890524260409283015283546001818101865560009586529482902084516004909202019081559083015193810193909355810151600283015560600151600390910155611f523387614543565b604051339083156108fc029084906000818181858888f19350505050158015611f7f573d6000803e3d6000fd5b506000611f926064611a86866014614445565b90506000611fa085836144bc565b9050611fab82614659565b601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611fe5573d6000803e3d6000fd5b5060408051338152602081018690527ff054d63f9f675f1b50a448dd93da2067edb5276bb109058ddfd71dcaf8f6b69a910160405180910390a1505050505050505050505050505050565b6004546001600160a01b0316331461205a5760405162461bcd60e51b815260040161124790615a72565b601c805460ff60c01b1916600160c01b60ff84169081029190911790915560405190815233907f28eecd8198b98aaeab4bd926d0b6c32540cd3e38d261e06dd84e5e6ad68f9d42906020016115ad565b601881815481106120ba57600080fd5b600091825260209091200154905081565b6004546001600160a01b031633146120f55760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661211b5760405162461bcd60e51b815260040161124790615b1d565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526026602052604081208054670de0b6b3a764000083805b6007548410156121bc576000848152602860205260409020600181015481546121919190611a869087614445565b915061219d82856144d7565b6121a79084615b7f565b9250846121b381615c4f565b95505050612163565b5095945050505050565b6004546001600160a01b031633146121f05760405162461bcd60e51b815260040161124790615a72565b601d55565b6004546001600160a01b0316331461221f5760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160a01b0260ff60a01b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b6024602052816000526040600020818154811061227857600080fd5b600091825260209091206002909102018054600190910154909250905082565b6004546001600160a01b031633146122c25760405162461bcd60e51b815260040161124790615a72565b6001600160a01b0381166122e85760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152602660205260409020600281015460ff16600114156118375760028101805460ff191690556007548155600a5461183390600190615bfd565b6023602052816000526040600020818154811061227857600080fd5b336000908152602760209081526040808320602b8352818420602a9093529220600283015461238d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156123b75760405162461bcd60e51b8152600401611247906159d2565b600283015460068301546000906123cf9083906144bc565b9050858110156123f15760405162461bcd60e51b815260040161124790615b54565b858460060160008282546124059190615b7f565b909155505060048301805490600061241c83615c4f565b90915550600090506124346064611a8689605a614445565b905086601460008282546124489190615b7f565b909155505033600090815260246020908152604080832081518083019092528a82524282840190815281546001818101845592865293852092516002909402909201928355905191015561249c88836144bc565b604051909150339083156108fc029084906000818181858888f193505050501580156124cc573d6000803e3d6000fd5b50601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612507573d6000803e3d6000fd5b5060408051338152602081018a90527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d4991015b60405180910390a15050505050505050565b336000908152601e60209081526040808320602b8352818420602a9093529220600683015461258d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156125b75760405162461bcd60e51b8152600401611247906159d2565b336000908152602560205260409020546301000000900460ff16156125ee5760405162461bcd60e51b815260040161124790615a4b565b6125f733614687565b336000908152602660205260408120600754815560038101546002850154919290916126249083906144bc565b9050600081116126465760405162461bcd60e51b815260040161124790615b54565b8085600201600082825461265a9190615b7f565b909155505060018401805490600061267183615c4f565b90915550600090506126896064611a8684605a614445565b9050816013600082825461269d9190615b7f565b9091555050426005870181905533600090815260226020908152604080832081518083019092528682528183019485528054600181810183559185529284209151600290930290910191825592519201919091556126fb83836144bc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612736573d6000803e3d6000fd5b50604051339083156108fc029084906000818181858888f19350505050158015612764573d6000803e3d6000fd5b5060408051338152602081018590527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d49910161253a565b6021602052816000526040600020818154811061227857600080fd5b336000908152601e60209081526040808320602b8352818420602a909352922060068301546127f85760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156128225760405162461bcd60e51b8152600401611247906159d2565b33600090815260256020526040902054610100900460ff16156128575760405162461bcd60e51b815260040161124790615a4b565b60058301548254600285015460009161287b916128759085906146bb565b906144bc565b90508581101561289d5760405162461bcd60e51b815260040161124790615b54565b858460000160008282546128b19190615b7f565b909155505082548360006128c483615c4f565b90915550600090506128dc6064611a8689605a614445565b905086601060008282546128f09190615b7f565b909155505033600090815260236020908152604080832081518083019092528a82524282840190815281546001818101845592865293852092516002909402909201928355905191015561249c88836144bc565b6001600160a01b0381166000908152601e602052604081206006810154829182916129815760405162461bcd60e51b815260040161124790615a4b565b85600114806129905750856064145b15612a6757601c548690600160c01b900460ff1660018214156129b15750601e5b82546000906129c790606490611a869086614445565b6001600160a01b038916600090815260208190526040902054909150811115612a025760405162461bcd60e51b815260040161124790615a14565b6000612a0d8261140f565b905080471015612a2f5760405162461bcd60e51b815260040161124790615aa2565b806000612a446064611a868460ff8916614445565b90506000612a528284615bfd565b939a50909850919650612a6995505050505050565b505b9250925092565b6060600380546112ea90615c14565b601981815481106120ba57600080fd5b602080528160005260406000208181548110612aaa57600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b60006114063384846141b8565b6004546001600160a01b03163314612b0b5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b038116612b315760405162461bcd60e51b815260040161124790615b1d565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b680ad78ebc5ac6200000341015612b7c5760405162461bcd60e51b815260040161124790615ad9565b601c54600160a01b900460ff1615612ba65760405162461bcd60e51b8152600401611247906159d2565b336000908152601e602052604090206007810154612bfd5760405162461bcd60e51b8152602060048201526014602482015273506c6561736520496e766573742046697273742160601b6044820152606401611247565b346000612c08613e1e565b9050600068056bc75e2d6310000082612c2285603c615bde565b612c2c9190615bde565b612c369190615bbc565b905060006064612c4785603c615bde565b612c519190615bbc565b905081856000016000828254612c679190615b7f565b9250508190555080600b6000828254612c809190615b7f565b9091555050600f829055600785018054906000612c9c83615c4f565b91905055508160156000828254612cb39190615b7f565b925050819055508060176000828254612ccc9190615b7f565b909155505060018501546001600160a01b03166000908152601e602052604081206008018054869290612d00908490615b7f565b9250508190555083600d6000828254612d199190615b7f565b9250508190555083856006016000828254612d349190615b7f565b909155505060068501546902c0bb3dd30c4e20000011612dbf573360009081526026602052604081206006870154600e805492939192909190612d78908490615b7f565b9091555050600486015460ff16612dbd57600160096000828254612d9c9190615b7f565b909155505060085460018083019190915560048701805460ff191690911790555b505b612dc933836146d7565b6000612dd5600161140f565b336000908152601f60209081526040808320815160a0810183528a81528084018881529281018981526060820187815242608084019081528454600181810187559589529688209351600590970290930195865593518584015551600285015591516003840155905160049092019190915588015491925090612e61906001600160a01b031687614775565b90506000612e756064611a86896021614445565b90506000612e838383615bfd565b6007546000908152602860205260409020909150612ea76064611a8684605a614445565b8155600a54600180830191909155600754612ec191615b7f565b600755601b546001600160a01b03166108fc6064612ee08c6005615bde565b612eea9190615bbc565b6040518115909202916000818181858888f19350505050158015612f12573d6000803e3d6000fd5b506005546001600160a01b03166108fc6064612f2f8c6002615bde565b612f399190615bbc565b6040518115909202916000818181858888f19350505050158015612f61573d6000803e3d6000fd5b50601a546001600160a01b03166108fc6064612f7e85600a615bde565b612f889190615bbc565b6040518115909202916000818181858888f19350505050158015612fb0573d6000803e3d6000fd5b5060408051338152602081018b90527fa4bf806cbdeb44ec11a1cb638e7178b86e527296a2494ec8dc1de13447d96931910160405180910390a150505050505050505050565b6022602052816000526040600020818154811061227857600080fd5b601a546001600160a01b0316331415613058576001600160a01b0381166000908152601e6020526040902060078101546118375761304f8261496d565b61183782614b7a565b50565b6001600160a01b0381166000908152601e60209081526040808320602b9092528220600682015492918291829190613094866002615bde565b94508060010154816002015482600301546130af9190615b7f565b6130b99190615b7f565b93506130c58486615bfd565b925050509193509193565b6004546001600160a01b031633146130fa5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff909216620100000262ff000019909216919091179055565b6004546001600160a01b031633146131595760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661317f5760405162461bcd60e51b815260040161124790615b1d565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601e60209081526040808320602b909252909120601c54600160a01b900460ff16156131e55760405162461bcd60e51b8152600401611247906159f4565b60008260060154116132095760405162461bcd60e51b815260040161124790615a4b565b60008260060154600261321c9190615bde565b905060008260010154836002015484600301546132399190615b7f565b6132439190615b7f565b90508082116132945760405162461bcd60e51b815260206004820152601f60248201527f506c656173652052652d4465706f73697420746f205769746864726177616c006044820152606401611247565b3360009081526025602052604090205460ff16156132c45760405162461bcd60e51b815260040161124790615a4b565b601c54600160b01b900460ff16156132ee5760405162461bcd60e51b8152600401611247906159f4565b60008084600401541161333257336000908152601f60205260408120805490919061331b5761331b615ca0565b906000526020600020906005020160040154613344565b601d5484600401546133449190615b7f565b9050804210156133665760405162461bcd60e51b81526004016112479061599b565b601c548554606491600160c01b900460ff169060009061338c908490611a869082614445565b336000908152602081905260409020549091508111156133be5760405162461bcd60e51b815260040161124790615a14565b60006133c98261140f565b905060006133d7600161140f565b9050814710156133f95760405162461bcd60e51b815260040161124790615aa2565b60008061340684876144f1565b336000908152602a60205260408120600201805493955091935061342983615c4f565b9190505550428b60040181905550838b600301600082825461344b9190615b7f565b90915550508b5485908d90600090613464908490615bfd565b92505081905550846015600082825461347d9190615bfd565b909155505060175484116134a857836017600082825461349d9190615bfd565b909155506134ae9050565b60016017555b83601260008282546134c09190615b7f565b90915550600090506134d061369b565b336000908152602080805260409182902082516080810190935288835292935081016134fc8885614445565b8152602080820188905242604092830152835460018181018655600095865294829020845160049092020190815590830151938101939093558101516002830155606001516003909101556135513387614543565b604051339083156108fc029084906000818181858888f1935050505015801561357e573d6000803e3d6000fd5b5060006135916064611a86866014614445565b9050600061359f85836144bc565b90506135aa82614659565b60006135b7600283615bbc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156135f2573d6000803e3d6000fd5b5060408051338152602081018790527ff054d63f9f675f1b50a448dd93da2067edb5276bb109058ddfd71dcaf8f6b69a910160405180910390a150505050505050505050505050505050565b6004546001600160a01b031633146136685760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff9092166101000261ff0019909216919091179055565b600080611217613e1e565b601f60205281600052604060002081815481106136c257600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b680ad78ebc5ac620000034101561371d5760405162461bcd60e51b815260040161124790615ad9565b601c54600160a01b900460ff16156137475760405162461bcd60e51b8152600401611247906159d2565b336000908152601e6020526040902060078101541561379c5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4811195c1bdcda5d1959607a1b6044820152606401611247565b6001600160a01b0382166000908152601e6020526040902060070154156137c2576137c7565b600091505b3460006137d2613e1e565b9050600068056bc75e2d63100000826137ec85603c615bde565b6137f69190615bde565b6138009190615bbc565b90506000606461381185603c615bde565b61381b9190615bbc565b9050818560000160008282546138319190615b7f565b9250508190555080600b600082825461384a9190615b7f565b9091555050600f829055600680546001808201835560009283527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054336001600160a01b0319918216811790925591880180549092166001600160a01b038a16179091556138bd908887614cdf565b905060006138d16064611a86886021614445565b905060006138df8383615bfd565b60075460009081526028602052604090209091506139036064611a8684605a614445565b8155600a5460018083019190915560075461391d91615b7f565b60079081558901805490600061393283615c4f565b919050555085601560008282546139499190615b7f565b9250508190555084601760008282546139629190615b7f565b90915550506001600160a01b038a166000908152601e6020526040812060080180548a9290613992908490615b7f565b9250508190555087600d60008282546139ab9190615b7f565b92505081905550878960060160008282546139c69190615b7f565b909155506139d6905033876146d7565b60006139e2600161140f565b90506902c0bb3dd30c4e2000008910613c715733600090815260266020526040902060048b01805460ff19166001908117909155600854613a2291615b7f565b600180830191909155600954613a3791615b7f565b600955600e54613a48908b90615b7f565b600e556001600160a01b038c16600090815260276020526040902060010154613aca576001600160a01b038c1660009081526027602052604090204290819055613a95906203f480615b7f565b6001600160a01b038d166000908152602760205260409020600180820192909255600301805461ffff19169091179055613c6f565b6001600160a01b038c16600090815260276020526040902060010154421015613bf2576001600160a01b038c166000908152602760205260408120600301805460019290613b1c90849060ff16615b97565b82546101009290920a60ff8181021990931691831602179091556001600160a01b038e16600090815260276020526040902060030154600191161190508015613b8657506001600160a01b038c16600090815260276020526040902060030154610100900460ff16155b15613bed576001600160a01b038c1660009081526027602052604081206002018054681b1ae4d6e2ef5000009290613bbf908490615b7f565b90915550506001600160a01b038c166000908152602760205260409020600301805461ff0019166101001790555b613c6f565b6001600160a01b038c166000908152602760205260409020600101544210613c6f576001600160a01b038c1660009081526027602052604090204290819055613c3e906203f480615b7f565b6001600160a01b038d166000908152602760205260409020600180820192909255600301805461ffff191690911790555b505b336000908152601f60209081526040808320815160a0810183528d81528084018b81529281018c8152606082018781524260808401908152845460018181018755958952969097209251600596870290930192835593519282019290925590516002820155905160038201559151600490920191909155601b546001600160a01b0316906108fc90606490613d07908d90615bde565b613d119190615bbc565b6040518115909202916000818181858888f19350505050158015613d39573d6000803e3d6000fd5b506005546001600160a01b03166108fc6064613d568c6002615bde565b613d609190615bbc565b6040518115909202916000818181858888f19350505050158015613d88573d6000803e3d6000fd5b50601a546001600160a01b03166108fc6064613da586600a615bde565b613daf9190615bbc565b6040518115909202916000818181858888f19350505050158015613dd7573d6000803e3d6000fd5b5060408051338152602081018b90527fa4bf806cbdeb44ec11a1cb638e7178b86e527296a2494ec8dc1de13447d96931910160405180910390a15050505050505050505050565b600069152d02c7e14af68000006017541015613e7c57620186a06017546009613e479190615bde565b613e519190615bbc565b613e6390670de0b6b3a7640000615b7f565b613e779069021e19e0c9bab2400000615bbc565b905090565b670de0b6b3a76400006017541015613e95575060165490565b601754601654613ead90670de0b6b3a7640000615bde565b613e779190615bbc565b6004546001600160a01b03163314613ee15760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff90921663010000000263ff00000019909216919091179055565b6001600160a01b0381166000908152602660209081526040808320601e90925282206001820154670de0b6b3a764000092919084805b600854831015613fb357600083815260296020526040902060018101546006860154613f7f9190611a86908a614445565b8154909350613f94908890611a869086614445565b613f9e9083615b7f565b915083613faa81615c4f565b94505050613f4e565b979650505050505050565b6004546001600160a01b03163314613fe85760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661400e5760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152601e6020526040902080546118375760068101541561183757600681018054600090915560048201805460ff1916905560095461405c90600190615bfd565b600955600e5461406d908290615bfd565b600e5550506001600160a01b03166000908152602660205260409020600854600190910155565b6001600160a01b0383166140f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611247565b6001600160a01b0382166141575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611247565b6001600160a01b038381166000818152602c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661421c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611247565b6001600160a01b03821661427e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611247565b601c54600160b81b900460ff16156142cf5760405162461bcd60e51b81526020600482015260146024820152735472616e7366657220697320626c6f636b65642160601b6044820152606401611247565b6001600160a01b038316600090815260208190526040902054818110156143475760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611247565b6143518282615bfd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290614387908490615b7f565b90915550506001600160a01b0384166000908152601e602052604081208054909184918391906143b8908490615bfd565b90915550506001600160a01b0384166000908152601e602052604081208054909185918391906143e9908490615b7f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161443591815260200190565b60405180910390a3505050505050565b60008261445457506000611217565b60006144608385615bde565b90508261446d8583615bbc565b1461173e57600080fd5b6001600160a01b0381166000908152601e60205260409020600481015460ff1615611837576144b36144a883613f18565b6003830154906146bb565b60038201555050565b6000828211156144cb57600080fd5b60006112138385615bfd565b60008082116144e557600080fd5b60006112138385615bbc565b600080600084905080600b600082825461450b9190615bfd565b9091555085905060006145266064611a868460ff8a16614445565b905060006145348284615bfd565b91989197509095505050505050565b6001600160a01b0382166145a35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611247565b6001600160a01b038216600090815260208190526040902054818110156146175760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611247565b6146218282615bfd565b6001600160a01b0384166000908152602081905260408120919091556001805484929061464f908490615bfd565b9091555050505050565b600854600081815260296020526040902090614676906001615b7f565b600855908155600e54600190910155565b6001600160a01b0381166000908152602660205260409020600281015460ff1660011415611837576144b36144a88361213d565b6000806146c88385615b7f565b90508381101561173e57600080fd5b6001600160a01b03821661472d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611247565b806001600082825461473f9190615b7f565b90915550506001600160a01b0382166000908152602081905260408120805483929061476c908490615b7f565b90915550505050565b6000806001600160a01b0384161561173e5760185484906000908190815b818160ff161015614960576001600160a01b0385166000908152601e6020908152604080832060ff85168452600b81019092528220805491928b926147d9908490615b7f565b92505081905550888160090160008282546147f49190615b7f565b90915550506018805460ff841690811061481057614810615ca0565b600091825260209091200154945061482e612710611a868b88614445565b935060198260ff168154811061484657614846615ca0565b600091825260208083209091015460ff85168352600b8401909152604090912054106149215760ff82166000908152600d8201602052604081208054869290614890908490615b7f565b92505081905550838160050160008282546148ab9190615b7f565b909155506148bb90508488615b7f565b6001600160a01b038716600090815260266020526040902060028101549198509060ff1661491f5760006148ee88614f32565b9050801561491d5760028201805460ff191660019081179091556007548355600a5461491991615b7f565b600a555b505b505b6001600160a01b039586166000908152601e6020526040902060010154909516948561494d5750614960565b8161495781615c6a565b92505050614793565b5050505050905092915050565b602d5460405163543a185d60e11b81526001600160a01b038381166004830152600092839283928392839283928392839283928392839291169063a87430ba906024016101606040518083038186803b1580156149c957600080fd5b505afa1580156149dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a019190615701565b9a509a509a509a509a509a509a509a509a509a509a506000601e60008e6001600160a01b03166001600160a01b0316815260200190815260200160002090508b81600001819055508a8160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089816002018190555060008160030181905550878160040160006101000a81548160ff021916908360ff1602179055508760ff1660011415614ad15785600e54614abc9190615b7f565b600e55600954614acd906001615b7f565b6009555b600581018790556006808201879055600782018690556008820185905560098201849055600a820183905580546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038f16179055614b4f8d86614fc5565b614b588d6150f8565b614b618d6152d0565b614b6b8d8d6146d7565b50505050505050505050505050565b602d54604051630cacd00160e11b81526001600160a01b0383811660048301526000928392839290911690631959a002906024016103606040518083038186803b158015614bc757600080fd5b505afa158015614bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bff9190615658565b6001600160a01b0387166000908152601e6020526040812093965091945092505b60088160ff161015614cd757848160ff1660098110614c4157614c41615ca0565b6020908102919091015160ff83166000818152600c8601909352604090922055849060098110614c7357614c73615ca0565b6020908102919091015160ff83166000818152600b8601909352604090922055839060098110614ca557614ca5615ca0565b6020908102919091015160ff83166000908152600d850190925260409091205580614ccf81615c6a565b915050614c20565b505050505050565b6001600160a01b038381166000908152601e6020526040812060010154909182911615614f2a5760185484906000908190815b818160ff161015614f24576001600160a01b0385166000908152601e6020908152604080832060ff85168452600b81019092528220805491928b92614d58908490615b7f565b909155505060ff82166000908152600c820160205260408120805491614d7d83615c4f565b9091555050600a81018054906000614d9483615c4f565b919050555088816009016000828254614dad9190615b7f565b90915550506018805460ff8416908110614dc957614dc9615ca0565b6000918252602090912001549450614de7612710611a868b88614445565b935060198260ff1681548110614dff57614dff615ca0565b600091825260208083209091015460ff85168352600b840190915260409091205410614ee55760ff82166000908152600d8201602052604081208054869290614e49908490615b7f565b9250508190555083816005016000828254614e649190615b7f565b90915550614e7490508488615b7f565b6001600160a01b038716600090815260266020526040902060028101549198509060ff16614ee3576000614ea788614f32565b90508015614ee15760028201805460ff19166001908117909155600754614ecd91615b7f565b8255600a54614edd906001615b7f565b600a555b505b505b6001600160a01b039586166000908152601e60205260409020600101549095169485614f115750614f24565b81614f1b81615c6a565b92505050614d12565b50505050505b949350505050565b6001600160a01b0381166000908152601e602052604081206018548290815b818160ff161015614fb85760198160ff1681548110614f7257614f72615ca0565b600091825260208083209091015460ff84168352600b870190915260409091205410614fa65782614fa281615c4f565b9350505b80614fb081615c6a565b915050614f51565b5050600f11159392505050565b60005b818160ff1610156112d657602d5460405163d6d6817760e01b81526001600160a01b03858116600483015260ff84166024830152600092839283928392839291169063d6d681779060440160a06040518083038186803b15801561502b57600080fd5b505afa15801561503f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150639190615848565b6001600160a01b038d166000908152601f60209081526040808320815160a081018352988952888301978852908801958652606088019485526080880193845280546001818101835591845291909220965160059091029096019586559351938501939093559051600284015551600383015551600490910155508493506150f09250839150615c6a9050565b915050614fc8565b602d546040516303d00c9560e51b81526001600160a01b0383811660048301526000928392839283921690637a0192a09060240160806040518083038186803b15801561514457600080fd5b505afa158015615158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061517c9190615812565b6001600160a01b0389166000908152602b6020526040812085815560018101829055600381018490556004810183905560108054969a509498509296509094509092879291906151cd908490615b7f565b9250508190555083601160008282546151e69190615b7f565b9250508190555082601260008282546151ff9190615b7f565b9091555050602d5460405163097a6cfd60e41b81526001600160a01b03888116600483015260009283928392909116906397a6cfd09060240160606040518083038186803b15801561525057600080fd5b505afa158015615264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061528891906157e4565b6001600160a01b038c166000908152602a6020526040812081815560028101849055600381019190915592955090935091506152c48a846153a2565b50505050505050505050565b602d546040516354e2dd1f60e11b81526001600160a01b038381166004830152600092839283929091169063a9c5ba3e9060240160606040518083038186803b15801561531c57600080fd5b505afa158015615330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061535491906158a5565b6001600160a01b039096166000908152602560205260409020805460ff978816620100000262ff0000199389166101000261ffff199092169890941697909717969096171617909355505050565b60005b818160ff1610156112d657602d54604051639d48469360e01b81526001600160a01b03858116600483015260ff841660248301526000928392839283921690639d4846939060440160806040518083038186803b15801561540557600080fd5b505afa158015615419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061543d9190615812565b6001600160a01b038b16600090815260208080526040808320815160808101835297885287830196875290870194855260608701938452805460018181018355918452919092209551600490910290950194855592519284019290925551600283015551600390910155508392506154b89150829050615c6a565b9150506153a5565b6040518061020001604052806010906020820280368337509192915050565b600082601f8301126154f057600080fd5b60405161012080820182811067ffffffffffffffff8211171561552357634e487b7160e01b600052604160045260246000fd5b604052818482810187101561553757600080fd5b600092505b600983101561555c5780518252600192909201916020918201910161553c565b509195945050505050565b60006020828403121561557957600080fd5b813561173e81615cb6565b6000806040838503121561559757600080fd5b82356155a281615cb6565b946020939093013593505050565b600080604083850312156155c357600080fd5b82356155ce81615cb6565b915060208301356155de81615cb6565b809150509250929050565b6000806000606084860312156155fe57600080fd5b833561560981615cb6565b9250602084013561561981615cb6565b929592945050506040919091013590565b6000806040838503121561563d57600080fd5b823561564881615cb6565b915060208301356155de81615ccb565b6000806000610360848603121561566e57600080fd5b61567885856154df565b92506156888561012086016154df565b91506156988561024086016154df565b90509250925092565b6000602082840312156156b357600080fd5b8135801515811461173e57600080fd5b6000602082840312156156d557600080fd5b5035919050565b600080604083850312156156ef57600080fd5b8235915060208301356155de81615cb6565b60008060008060008060008060008060006101608c8e03121561572357600080fd5b8b519a5060208c015161573581615cb6565b809a505060408c0151985060608c0151975060808c015161575581615ccb565b8097505060a08c0151955060c08c0151945060e08c015193506101008c015192506101208c015191506101408c015190509295989b509295989b9093969950565b600080604083850312156157a957600080fd5b50508035926020909101359150565b6000806000606084860312156157cd57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156157f957600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561582857600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080600080600060a0868803121561586057600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60006020828403121561589a57600080fd5b813561173e81615ccb565b6000806000606084860312156158ba57600080fd5b83516158c581615ccb565b60208501519093506158d681615ccb565b60408501519092506158e781615ccb565b809150509250925092565b8060005b60108110156159155781518452602093840193909101906001016158f6565b50505050565b610600810161592a82866158f2565b6159386102008301856158f2565b614f2a6104008301846158f2565b600060208083528351808285015260005b8181101561597357858101830151858201604001528201615957565b81811115615985576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601a908201527f536f72727920212053656520796f75206e6578742074696d652e000000000000604082015260600190565b602080825260089082015267436865636b65642160c01b604082015260600190565b602080825260069082015265436865636b2160d01b604082015260600190565b6020808252601b908201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604082015260600190565b6020808252600d908201526c496e76616c696420557365722160981b604082015260600190565b6020808252601690820152752cb7ba9030b932903737ba1034b734ba34b0ba37b91760511b604082015260600190565b6020808252601e908201527f496e73756666696369656e742066756e6420696e20636f6e7472616374210000604082015260600190565b60208082526024908201527f4d696e696d756d203230302046414e544f4d20616c6c6f77656420746f20696e6040820152631d995cdd60e21b606082015260800190565b6020808252601e908201527f4163636f756e7420616464726573732063616e6e6f74206265207a65726f0000604082015260600190565b602080825260119082015270496e76616c69642077697468647261772160781b604082015260600190565b60008219821115615b9257615b92615c8a565b500190565b600060ff821660ff84168060ff03821115615bb457615bb4615c8a565b019392505050565b600082615bd957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615bf857615bf8615c8a565b500290565b600082821015615c0f57615c0f615c8a565b500390565b600181811c90821680615c2857607f821691505b60208210811415615c4957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615c6357615c63615c8a565b5060010190565b600060ff821660ff811415615c8157615c81615c8a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461305857600080fd5b60ff8116811461305857600080fdfe8b392019d764be3ed00875263b0a64468a74f44a97615d4f026d98febc56c4aaa26469706673582212200149e5cea860bd50564542a6e0b9c0cba8385a7b566482d95e2c5cd6ed65f24a64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106104815760003560e01c806380b4163b11610255578063c0521e3611610144578063e0709a74116100c1578063f340fa0111610085578063f340fa011461112c578063f571545b1461113f578063f607813f14611154578063f909fbfe14611174578063fa44308a14611194578063fe313112146111b457600080fd5b8063e0709a74146110a0578063e5257726146110c1578063e6459831146104c0578063eb6ef266146110e2578063f32c3d6e1461111657600080fd5b8063d39158d111610108578063d39158d114610fef578063d4d6e96e1461100f578063d6d6817714611024578063dd62ed3e14611044578063df02e26d1461108a57600080fd5b8063c0521e3614610f59578063c35308b214610f7a578063d11c9f9614610f9a578063d2580a6914610fba578063d28f153a14610fda57600080fd5b80639a78b312116101d2578063ab0d38fe11610196578063ab0d38fe14610ed0578063ad92350514610ef0578063b7eaefc014610ef8578063b898b7bd14610f18578063bfa14c4e14610f3957600080fd5b80639a78b31214610d025780639d48469314610d18578063a87430ba14610d58578063a9059cbb14610e37578063a9c5ba3e14610e5757600080fd5b806393d609901161021957806393d6099014610c0057806393f9c72914610c2057806395d89b4114610c5b578063961544cf14610c7057806397a6cfd014610c9057600080fd5b806380b4163b14610b75578063813a283414610b8b5780638244bd1514610bab57806391051e0614610bcb5780639288da1714610be057600080fd5b8063340fe40d116103715780634a90a997116102ee57806361641f16116102b257806361641f1614610a3d57806370a0823114610a5d578063726cefbc14610a935780637a0192a014610ac85780637d8d613414610b5557600080fd5b80634a90a9971461099d5780634bc40ebe146109bd5780634ce35ccf146109dd578063548adc23146109fd5780635c54de8c14610a1d57600080fd5b80633f86df86116103355780633f86df861461091d5780633feb5f2b1461093d578063441fc6c41461095d5780634532c9121461097257806346df70ab1461098857600080fd5b8063340fe40d1461087c57806335246c2a1461089c5780633e074a12146108bc5780633e697a50146108dc5780633e6cacf4146108fd57600080fd5b80631959a002116103ff57806323b872dd116103c357806323b872dd146107da578063255ebd39146107fa57806328367d0f1461081a5780632ec9bc981461083a578063313ce5671461085a57600080fd5b80631959a0021461071d5780631a8f30581461074c5780631dffcc881461076c5780631e5d9403146107a457806320bbe15d146107c457600080fd5b806308b4ad2c1161044657806308b4ad2c146105a0578063095ea7b31461061157806315c43aaf146106415780631672aa03146106e857806318160ddd1461070857600080fd5b80621fc88b1461048d578063024ae177146104c057806305cdf491146104e257806306fdde031461055e57806307259dea1461058057600080fd5b3661048857005b600080fd5b34801561049957600080fd5b506104ad6104a8366004615796565b6111e8565b6040519081526020015b60405180910390f35b3480156104cc57600080fd5b506104e06104db366004615584565b61121d565b005b3480156104ee57600080fd5b506105306104fd366004615567565b60276020526000908152604090208054600182015460028301546003909301549192909160ff8082169161010090041685565b6040805195865260208601949094529284019190915260ff908116606084015216608082015260a0016104b7565b34801561056a57600080fd5b506105736112db565b6040516104b79190615946565b34801561058c57600080fd5b506104ad61059b3660046156c3565b61136d565b3480156105ac57600080fd5b506105e86105bb366004615567565b60266020526000908152604090208054600182015460028301546003909301549192909160ff9091169084565b6040516104b79493929190938452602084019290925260ff166040830152606082015260800190565b34801561061d57600080fd5b5061063161062c366004615584565b6113f9565b60405190151581526020016104b7565b34801561064d57600080fd5b50610686600d54601054601154601254601354601454600654601554600b54601754600f54479b94989397929691956000959194939291565b604080519d8e5260208e019c909c529a8c019990995260608b019790975260808a019590955260a089019390935260c088019190915260e08701526101008601526101208501526101408401526101608301526101808201526101a0016104b7565b3480156106f457600080fd5b506104ad6107033660046156c3565b61140f565b34801561071457600080fd5b506001546104ad565b34801561072957600080fd5b5061073d610738366004615567565b61142b565b6040516104b79392919061591b565b34801561075857600080fd5b506104e06107673660046157b8565b611525565b34801561077857600080fd5b50601c5461078c906001600160a01b031681565b6040516001600160a01b0390911681526020016104b7565b3480156107b057600080fd5b506104e06107bf3660046156a1565b611546565b3480156107d057600080fd5b506104ad60075481565b3480156107e657600080fd5b506106316107f53660046155e9565b6115b8565b34801561080657600080fd5b506104e06108153660046157b8565b611669565b34801561082657600080fd5b506104e06108353660046156a1565b6116a1565b34801561084657600080fd5b506104ad6108553660046156c3565b611708565b34801561086657600080fd5b5060005b60405160ff90911681526020016104b7565b34801561088857600080fd5b50601b5461078c906001600160a01b031681565b3480156108a857600080fd5b506104e06108b736600461562a565b611745565b3480156108c857600080fd5b506104e06108d7366004615567565b61179c565b3480156108e857600080fd5b50601c5461063190600160a81b900460ff1681565b34801561090957600080fd5b506104e06109183660046156a1565b61183b565b34801561092957600080fd5b50601a5461078c906001600160a01b031681565b34801561094957600080fd5b5061078c6109583660046156c3565b6118a2565b34801561096957600080fd5b506104e06118cc565b34801561097e57600080fd5b506104ad60085481565b34801561099457600080fd5b506104e0611bac565b3480156109a957600080fd5b506104e06109b8366004615888565b612030565b3480156109c957600080fd5b506104ad6109d83660046156c3565b6120aa565b3480156109e957600080fd5b506104e06109f8366004615567565b6120cb565b348015610a0957600080fd5b506104ad610a18366004615567565b61213d565b348015610a2957600080fd5b506104e0610a383660046156c3565b6121c6565b348015610a4957600080fd5b506104e0610a583660046156a1565b6121f5565b348015610a6957600080fd5b506104ad610a78366004615567565b6001600160a01b031660009081526020819052604090205490565b348015610a9f57600080fd5b50610ab3610aae366004615584565b61225c565b604080519283526020830191909152016104b7565b348015610ad457600080fd5b50610b20610ae3366004615567565b602b602052600090815260409020805460018201546002830154600384015460048501546005860154600690960154949593949293919290919087565b604080519788526020880196909652948601939093526060850191909152608084015260a083015260c082015260e0016104b7565b348015610b6157600080fd5b506104e0610b70366004615567565b612298565b348015610b8157600080fd5b506104ad60095481565b348015610b9757600080fd5b50610ab3610ba6366004615584565b612330565b348015610bb757600080fd5b506104e0610bc63660046156c3565b61234c565b348015610bd757600080fd5b506104e061254c565b348015610bec57600080fd5b50610ab3610bfb366004615584565b61279b565b348015610c0c57600080fd5b506104e0610c1b3660046156c3565b6127b7565b348015610c2c57600080fd5b50610c40610c3b3660046156dc565b612944565b604080519384526020840192909252908201526060016104b7565b348015610c6757600080fd5b50610573612a70565b348015610c7c57600080fd5b506104ad610c8b3660046156c3565b612a7f565b348015610c9c57600080fd5b50610cda610cab366004615567565b602a60205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b604080519586526020860194909452928401919091526060830152608082015260a0016104b7565b348015610d0e57600080fd5b506104ad600e5481565b348015610d2457600080fd5b50610d38610d33366004615584565b612a8f565b6040805194855260208501939093529183015260608201526080016104b7565b348015610d6457600080fd5b50610dda610d73366004615567565b601e60205260009081526040902080546001820154600283015460038401546004850154600586015460068701546007880154600889015460098a0154600a909a015498996001600160a01b03909816989697959660ff909516959394929391929091908b565b604080519b8c526001600160a01b03909a1660208c0152988a0197909752606089019590955260ff909316608088015260a087019190915260c086015260e0850152610100840152610120830152610140820152610160016104b7565b348015610e4357600080fd5b50610631610e52366004615584565b612ad4565b348015610e6357600080fd5b50610ea3610e72366004615567565b60256020526000908152604090205460ff808216916101008104821691620100008204811691630100000090041684565b6040805160ff958616815293851660208501529184169183019190915290911660608201526080016104b7565b348015610edc57600080fd5b506104e0610eeb366004615567565b612ae1565b6104e0612b53565b348015610f0457600080fd5b50610ab3610f13366004615584565b612ff6565b348015610f2457600080fd5b50601c5461063190600160b01b900460ff1681565b348015610f4557600080fd5b506104e0610f54366004615567565b613012565b348015610f6557600080fd5b50601c5461086a90600160c01b900460ff1681565b348015610f8657600080fd5b50610d38610f95366004615567565b61305b565b348015610fa657600080fd5b506104e0610fb536600461562a565b6130d0565b348015610fc657600080fd5b506104e0610fd5366004615567565b61312f565b348015610fe657600080fd5b506104e06131a1565b348015610ffb57600080fd5b506104e061100a36600461562a565b61363e565b34801561101b57600080fd5b506104ad61369b565b34801561103057600080fd5b50610cda61103f366004615584565b6136a6565b34801561105057600080fd5b506104ad61105f3660046155b0565b6001600160a01b039182166000908152602c6020908152604080832093909416825291909152205490565b34801561109657600080fd5b506104ad601d5481565b3480156110ac57600080fd5b50601c5461063190600160b81b900460ff1681565b3480156110cd57600080fd5b50601c5461063190600160a01b900460ff1681565b3480156110ee57600080fd5b50610ab36110fd3660046156c3565b6029602052600090815260409020805460019091015482565b34801561112257600080fd5b506104ad600a5481565b6104e061113a366004615567565b6136f4565b34801561114b57600080fd5b506104ad613e1e565b34801561116057600080fd5b506104e061116f36600461562a565b613eb7565b34801561118057600080fd5b506104ad61118f366004615567565b613f18565b3480156111a057600080fd5b506104e06111af366004615567565b613fbe565b3480156111c057600080fd5b50610ab36111cf3660046156c3565b6028602052600090815260409020805460019091015482565b6000806111f48361136d565b90508061120985670de0b6b3a7640000615bde565b6112139190615bbc565b9150505b92915050565b6004546001600160a01b031633146112505760405162461bcd60e51b815260040161124790615a72565b60405180910390fd5b600081116112a05760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401611247565b6040516001600160a01b0383169082156108fc029083906000818181858888f193505050501580156112d6573d6000803e3d6000fd5b505050565b6060600280546112ea90615c14565b80601f016020809104026020016040519081016040528092919081815260200182805461131690615c14565b80156113635780601f1061133857610100808354040283529160200191611363565b820191906000526020600020905b81548152906001019060200180831161134657829003601f168201915b5050505050905090565b600069152d02c7e14af68000008210156113c057620186a0611390836009615bde565b61139a9190615bbc565b6113ac90670de0b6b3a7640000615b7f565b6112179069021e19e0c9bab2400000615bbc565b670de0b6b3a76400008210156113d857601654611217565b81601654670de0b6b3a76400006113ef9190615bde565b6112179190615bbc565b6000611406338484614094565b50600192915050565b600061141961369b565b6113ef83670de0b6b3a7640000615bde565b6114336154c0565b61143b6154c0565b6114436154c0565b6001600160a01b0384166000908152601e60205260408120905b60108160ff16101561151c5760ff81166000818152600c840160205260409020549086906010811061149157611491615ca0565b60200201818152505081600b0160008260ff1660ff16815260200190815260200160002054848260ff16601081106114cb576114cb615ca0565b60200201818152505081600d0160008260ff1660ff16815260200190815260200160002054838260ff166010811061150557611505615ca0565b60200201528061151481615c6a565b91505061145d565b50509193909250565b601a546001600160a01b03163314156112d657601592909255601755600b55565b6004546001600160a01b031633146115705760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160a81b0260ff60a81b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b60405180910390a250565b60006115c58484846141b8565b6001600160a01b0384166000908152602c602090815260408083203384529091529020548281101561164a5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401611247565b61165e85336116598685615bfd565b614094565b506001949350505050565b6004546001600160a01b031633146116935760405162461bcd60e51b815260040161124790615a72565b601592909255601755600b55565b6004546001600160a01b031633146116cb5760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160b81b0260ff60b81b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b600080611713613e1e565b905068056bc75e2d631000006117348261172e86603c614445565b90614445565b61173e9190615bbc565b9392505050565b6004546001600160a01b0316331461176f5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03919091166000908152602560205260409020805460ff191660ff909216919091179055565b6004546001600160a01b031633146117c65760405162461bcd60e51b815260040161124790615a72565b6001600160a01b0381166117ec5760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152602660205260409020600281015460ff166118375760028101805460ff191660019081179091556007548255600a5461183391615b7f565b600a555b5050565b6004546001600160a01b031633146118655760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160b01b0260ff60b01b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b600681815481106118b257600080fd5b6000918252602090912001546001600160a01b0316905081565b336000908152601e60209081526040808320602b8352818420602a9093529220600683015461190d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156119375760405162461bcd60e51b8152600401611247906159d2565b3360009081526025602052604090205462010000900460ff161561196d5760405162461bcd60e51b815260040161124790615a4b565b6000808360050154116119b157336000908152601f60205260408120805490919061199a5761199a615ca0565b9060005260206000209060050201600401546119c3565b60058301546119c39062015180615b7f565b9050804210156119e55760405162461bcd60e51b81526004016112479061599b565b6119ee33614477565b33600090815260266020526040812060085460018083019190915560038701549086015491929091611a219083906144bc565b905060008111611a435760405162461bcd60e51b815260040161124790615b54565b80866001016000828254611a579190615b7f565b9091555050600385018054906000611a6e83615c4f565b9091555060009050611a8c6064611a8684605a614445565b906144d7565b90508160116000828254611aa09190615b7f565b909155505042600588018190553360009081526021602090815260408083208151808301909252868252818301948552805460018181018355918552928420915160029093029091019182559251920191909155611afe83836144bc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015611b39573d6000803e3d6000fd5b50604051339083156108fc029084906000818181858888f19350505050158015611b67573d6000803e3d6000fd5b5060408051338152602081018590527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d49910160405180910390a1505050505050505050565b336000908152601e60209081526040808320602b909252909120601c54600160a01b900460ff1615611bf05760405162461bcd60e51b8152600401611247906159f4565b6000826006015411611c145760405162461bcd60e51b815260040161124790615a4b565b600082600601546002611c279190615bde565b90506000826001015483600201548460030154611c449190615b7f565b611c4e9190615b7f565b9050808211611c9f5760405162461bcd60e51b815260206004820152601f60248201527f506c656173652052652d4465706f73697420746f205769746864726177616c006044820152606401611247565b3360009081526025602052604090205460ff1615611ccf5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a81b900460ff1615611cf95760405162461bcd60e51b8152600401611247906159f4565b600080846004015411611d3d57336000908152601f602052604081208054909190611d2657611d26615ca0565b906000526020600020906005020160040154611d4f565b601d548460040154611d4f9190615b7f565b905080421015611d715760405162461bcd60e51b81526004016112479061599b565b8454600190601e90600090611d8d90606490611a869086614445565b33600090815260208190526040902054909150811115611dbf5760405162461bcd60e51b815260040161124790615a14565b6000611dca8261140f565b90506000611dd8600161140f565b905081471015611dfa5760405162461bcd60e51b815260040161124790615aa2565b600080611e0784876144f1565b336000908152602a602052604081206002018054939550919350611e2a83615c4f565b9190505550428b60040181905550838b6003016000828254611e4c9190615b7f565b90915550508b5485908d90600090611e65908490615bfd565b925050819055508460156000828254611e7e9190615bfd565b90915550506017548411611ea9578360176000828254611e9e9190615bfd565b90915550611eaf9050565b60016017555b8360126000828254611ec19190615b7f565b9091555060009050611ed161369b565b33600090815260208080526040918290208251608081019093528883529293508101611efd8885614445565b815260208082018890524260409283015283546001818101865560009586529482902084516004909202019081559083015193810193909355810151600283015560600151600390910155611f523387614543565b604051339083156108fc029084906000818181858888f19350505050158015611f7f573d6000803e3d6000fd5b506000611f926064611a86866014614445565b90506000611fa085836144bc565b9050611fab82614659565b601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611fe5573d6000803e3d6000fd5b5060408051338152602081018690527ff054d63f9f675f1b50a448dd93da2067edb5276bb109058ddfd71dcaf8f6b69a910160405180910390a1505050505050505050505050505050565b6004546001600160a01b0316331461205a5760405162461bcd60e51b815260040161124790615a72565b601c805460ff60c01b1916600160c01b60ff84169081029190911790915560405190815233907f28eecd8198b98aaeab4bd926d0b6c32540cd3e38d261e06dd84e5e6ad68f9d42906020016115ad565b601881815481106120ba57600080fd5b600091825260209091200154905081565b6004546001600160a01b031633146120f55760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661211b5760405162461bcd60e51b815260040161124790615b1d565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526026602052604081208054670de0b6b3a764000083805b6007548410156121bc576000848152602860205260409020600181015481546121919190611a869087614445565b915061219d82856144d7565b6121a79084615b7f565b9250846121b381615c4f565b95505050612163565b5095945050505050565b6004546001600160a01b031633146121f05760405162461bcd60e51b815260040161124790615a72565b601d55565b6004546001600160a01b0316331461221f5760405162461bcd60e51b815260040161124790615a72565b601c8054821515600160a01b0260ff60a01b199091161790556040513390600080516020615cdb833981519152906115ad90841515815260200190565b6024602052816000526040600020818154811061227857600080fd5b600091825260209091206002909102018054600190910154909250905082565b6004546001600160a01b031633146122c25760405162461bcd60e51b815260040161124790615a72565b6001600160a01b0381166122e85760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152602660205260409020600281015460ff16600114156118375760028101805460ff191690556007548155600a5461183390600190615bfd565b6023602052816000526040600020818154811061227857600080fd5b336000908152602760209081526040808320602b8352818420602a9093529220600283015461238d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156123b75760405162461bcd60e51b8152600401611247906159d2565b600283015460068301546000906123cf9083906144bc565b9050858110156123f15760405162461bcd60e51b815260040161124790615b54565b858460060160008282546124059190615b7f565b909155505060048301805490600061241c83615c4f565b90915550600090506124346064611a8689605a614445565b905086601460008282546124489190615b7f565b909155505033600090815260246020908152604080832081518083019092528a82524282840190815281546001818101845592865293852092516002909402909201928355905191015561249c88836144bc565b604051909150339083156108fc029084906000818181858888f193505050501580156124cc573d6000803e3d6000fd5b50601c546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612507573d6000803e3d6000fd5b5060408051338152602081018a90527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d4991015b60405180910390a15050505050505050565b336000908152601e60209081526040808320602b8352818420602a9093529220600683015461258d5760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156125b75760405162461bcd60e51b8152600401611247906159d2565b336000908152602560205260409020546301000000900460ff16156125ee5760405162461bcd60e51b815260040161124790615a4b565b6125f733614687565b336000908152602660205260408120600754815560038101546002850154919290916126249083906144bc565b9050600081116126465760405162461bcd60e51b815260040161124790615b54565b8085600201600082825461265a9190615b7f565b909155505060018401805490600061267183615c4f565b90915550600090506126896064611a8684605a614445565b9050816013600082825461269d9190615b7f565b9091555050426005870181905533600090815260226020908152604080832081518083019092528682528183019485528054600181810183559185529284209151600290930290910191825592519201919091556126fb83836144bc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f19350505050158015612736573d6000803e3d6000fd5b50604051339083156108fc029084906000818181858888f19350505050158015612764573d6000803e3d6000fd5b5060408051338152602081018590527fb39f20915e530bbf551b538ec25b3bbc5a2f6838c696e8071f2cdef367747d49910161253a565b6021602052816000526040600020818154811061227857600080fd5b336000908152601e60209081526040808320602b8352818420602a909352922060068301546127f85760405162461bcd60e51b815260040161124790615a4b565b601c54600160a01b900460ff16156128225760405162461bcd60e51b8152600401611247906159d2565b33600090815260256020526040902054610100900460ff16156128575760405162461bcd60e51b815260040161124790615a4b565b60058301548254600285015460009161287b916128759085906146bb565b906144bc565b90508581101561289d5760405162461bcd60e51b815260040161124790615b54565b858460000160008282546128b19190615b7f565b909155505082548360006128c483615c4f565b90915550600090506128dc6064611a8689605a614445565b905086601060008282546128f09190615b7f565b909155505033600090815260236020908152604080832081518083019092528a82524282840190815281546001818101845592865293852092516002909402909201928355905191015561249c88836144bc565b6001600160a01b0381166000908152601e602052604081206006810154829182916129815760405162461bcd60e51b815260040161124790615a4b565b85600114806129905750856064145b15612a6757601c548690600160c01b900460ff1660018214156129b15750601e5b82546000906129c790606490611a869086614445565b6001600160a01b038916600090815260208190526040902054909150811115612a025760405162461bcd60e51b815260040161124790615a14565b6000612a0d8261140f565b905080471015612a2f5760405162461bcd60e51b815260040161124790615aa2565b806000612a446064611a868460ff8916614445565b90506000612a528284615bfd565b939a50909850919650612a6995505050505050565b505b9250925092565b6060600380546112ea90615c14565b601981815481106120ba57600080fd5b602080528160005260406000208181548110612aaa57600080fd5b60009182526020909120600490910201805460018201546002830154600390930154919450925084565b60006114063384846141b8565b6004546001600160a01b03163314612b0b5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b038116612b315760405162461bcd60e51b815260040161124790615b1d565b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b680ad78ebc5ac6200000341015612b7c5760405162461bcd60e51b815260040161124790615ad9565b601c54600160a01b900460ff1615612ba65760405162461bcd60e51b8152600401611247906159d2565b336000908152601e602052604090206007810154612bfd5760405162461bcd60e51b8152602060048201526014602482015273506c6561736520496e766573742046697273742160601b6044820152606401611247565b346000612c08613e1e565b9050600068056bc75e2d6310000082612c2285603c615bde565b612c2c9190615bde565b612c369190615bbc565b905060006064612c4785603c615bde565b612c519190615bbc565b905081856000016000828254612c679190615b7f565b9250508190555080600b6000828254612c809190615b7f565b9091555050600f829055600785018054906000612c9c83615c4f565b91905055508160156000828254612cb39190615b7f565b925050819055508060176000828254612ccc9190615b7f565b909155505060018501546001600160a01b03166000908152601e602052604081206008018054869290612d00908490615b7f565b9250508190555083600d6000828254612d199190615b7f565b9250508190555083856006016000828254612d349190615b7f565b909155505060068501546902c0bb3dd30c4e20000011612dbf573360009081526026602052604081206006870154600e805492939192909190612d78908490615b7f565b9091555050600486015460ff16612dbd57600160096000828254612d9c9190615b7f565b909155505060085460018083019190915560048701805460ff191690911790555b505b612dc933836146d7565b6000612dd5600161140f565b336000908152601f60209081526040808320815160a0810183528a81528084018881529281018981526060820187815242608084019081528454600181810187559589529688209351600590970290930195865593518584015551600285015591516003840155905160049092019190915588015491925090612e61906001600160a01b031687614775565b90506000612e756064611a86896021614445565b90506000612e838383615bfd565b6007546000908152602860205260409020909150612ea76064611a8684605a614445565b8155600a54600180830191909155600754612ec191615b7f565b600755601b546001600160a01b03166108fc6064612ee08c6005615bde565b612eea9190615bbc565b6040518115909202916000818181858888f19350505050158015612f12573d6000803e3d6000fd5b506005546001600160a01b03166108fc6064612f2f8c6002615bde565b612f399190615bbc565b6040518115909202916000818181858888f19350505050158015612f61573d6000803e3d6000fd5b50601a546001600160a01b03166108fc6064612f7e85600a615bde565b612f889190615bbc565b6040518115909202916000818181858888f19350505050158015612fb0573d6000803e3d6000fd5b5060408051338152602081018b90527fa4bf806cbdeb44ec11a1cb638e7178b86e527296a2494ec8dc1de13447d96931910160405180910390a150505050505050505050565b6022602052816000526040600020818154811061227857600080fd5b601a546001600160a01b0316331415613058576001600160a01b0381166000908152601e6020526040902060078101546118375761304f8261496d565b61183782614b7a565b50565b6001600160a01b0381166000908152601e60209081526040808320602b9092528220600682015492918291829190613094866002615bde565b94508060010154816002015482600301546130af9190615b7f565b6130b99190615b7f565b93506130c58486615bfd565b925050509193509193565b6004546001600160a01b031633146130fa5760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff909216620100000262ff000019909216919091179055565b6004546001600160a01b031633146131595760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661317f5760405162461bcd60e51b815260040161124790615b1d565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b336000908152601e60209081526040808320602b909252909120601c54600160a01b900460ff16156131e55760405162461bcd60e51b8152600401611247906159f4565b60008260060154116132095760405162461bcd60e51b815260040161124790615a4b565b60008260060154600261321c9190615bde565b905060008260010154836002015484600301546132399190615b7f565b6132439190615b7f565b90508082116132945760405162461bcd60e51b815260206004820152601f60248201527f506c656173652052652d4465706f73697420746f205769746864726177616c006044820152606401611247565b3360009081526025602052604090205460ff16156132c45760405162461bcd60e51b815260040161124790615a4b565b601c54600160b01b900460ff16156132ee5760405162461bcd60e51b8152600401611247906159f4565b60008084600401541161333257336000908152601f60205260408120805490919061331b5761331b615ca0565b906000526020600020906005020160040154613344565b601d5484600401546133449190615b7f565b9050804210156133665760405162461bcd60e51b81526004016112479061599b565b601c548554606491600160c01b900460ff169060009061338c908490611a869082614445565b336000908152602081905260409020549091508111156133be5760405162461bcd60e51b815260040161124790615a14565b60006133c98261140f565b905060006133d7600161140f565b9050814710156133f95760405162461bcd60e51b815260040161124790615aa2565b60008061340684876144f1565b336000908152602a60205260408120600201805493955091935061342983615c4f565b9190505550428b60040181905550838b600301600082825461344b9190615b7f565b90915550508b5485908d90600090613464908490615bfd565b92505081905550846015600082825461347d9190615bfd565b909155505060175484116134a857836017600082825461349d9190615bfd565b909155506134ae9050565b60016017555b83601260008282546134c09190615b7f565b90915550600090506134d061369b565b336000908152602080805260409182902082516080810190935288835292935081016134fc8885614445565b8152602080820188905242604092830152835460018181018655600095865294829020845160049092020190815590830151938101939093558101516002830155606001516003909101556135513387614543565b604051339083156108fc029084906000818181858888f1935050505015801561357e573d6000803e3d6000fd5b5060006135916064611a86866014614445565b9050600061359f85836144bc565b90506135aa82614659565b60006135b7600283615bbc565b601c546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156135f2573d6000803e3d6000fd5b5060408051338152602081018790527ff054d63f9f675f1b50a448dd93da2067edb5276bb109058ddfd71dcaf8f6b69a910160405180910390a150505050505050505050505050505050565b6004546001600160a01b031633146136685760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff9092166101000261ff0019909216919091179055565b600080611217613e1e565b601f60205281600052604060002081815481106136c257600080fd5b600091825260209091206005909102018054600182015460028301546003840154600490940154929550909350919085565b680ad78ebc5ac620000034101561371d5760405162461bcd60e51b815260040161124790615ad9565b601c54600160a01b900460ff16156137475760405162461bcd60e51b8152600401611247906159d2565b336000908152601e6020526040902060078101541561379c5760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4811195c1bdcda5d1959607a1b6044820152606401611247565b6001600160a01b0382166000908152601e6020526040902060070154156137c2576137c7565b600091505b3460006137d2613e1e565b9050600068056bc75e2d63100000826137ec85603c615bde565b6137f69190615bde565b6138009190615bbc565b90506000606461381185603c615bde565b61381b9190615bbc565b9050818560000160008282546138319190615b7f565b9250508190555080600b600082825461384a9190615b7f565b9091555050600f829055600680546001808201835560009283527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054336001600160a01b0319918216811790925591880180549092166001600160a01b038a16179091556138bd908887614cdf565b905060006138d16064611a86886021614445565b905060006138df8383615bfd565b60075460009081526028602052604090209091506139036064611a8684605a614445565b8155600a5460018083019190915560075461391d91615b7f565b60079081558901805490600061393283615c4f565b919050555085601560008282546139499190615b7f565b9250508190555084601760008282546139629190615b7f565b90915550506001600160a01b038a166000908152601e6020526040812060080180548a9290613992908490615b7f565b9250508190555087600d60008282546139ab9190615b7f565b92505081905550878960060160008282546139c69190615b7f565b909155506139d6905033876146d7565b60006139e2600161140f565b90506902c0bb3dd30c4e2000008910613c715733600090815260266020526040902060048b01805460ff19166001908117909155600854613a2291615b7f565b600180830191909155600954613a3791615b7f565b600955600e54613a48908b90615b7f565b600e556001600160a01b038c16600090815260276020526040902060010154613aca576001600160a01b038c1660009081526027602052604090204290819055613a95906203f480615b7f565b6001600160a01b038d166000908152602760205260409020600180820192909255600301805461ffff19169091179055613c6f565b6001600160a01b038c16600090815260276020526040902060010154421015613bf2576001600160a01b038c166000908152602760205260408120600301805460019290613b1c90849060ff16615b97565b82546101009290920a60ff8181021990931691831602179091556001600160a01b038e16600090815260276020526040902060030154600191161190508015613b8657506001600160a01b038c16600090815260276020526040902060030154610100900460ff16155b15613bed576001600160a01b038c1660009081526027602052604081206002018054681b1ae4d6e2ef5000009290613bbf908490615b7f565b90915550506001600160a01b038c166000908152602760205260409020600301805461ff0019166101001790555b613c6f565b6001600160a01b038c166000908152602760205260409020600101544210613c6f576001600160a01b038c1660009081526027602052604090204290819055613c3e906203f480615b7f565b6001600160a01b038d166000908152602760205260409020600180820192909255600301805461ffff191690911790555b505b336000908152601f60209081526040808320815160a0810183528d81528084018b81529281018c8152606082018781524260808401908152845460018181018755958952969097209251600596870290930192835593519282019290925590516002820155905160038201559151600490920191909155601b546001600160a01b0316906108fc90606490613d07908d90615bde565b613d119190615bbc565b6040518115909202916000818181858888f19350505050158015613d39573d6000803e3d6000fd5b506005546001600160a01b03166108fc6064613d568c6002615bde565b613d609190615bbc565b6040518115909202916000818181858888f19350505050158015613d88573d6000803e3d6000fd5b50601a546001600160a01b03166108fc6064613da586600a615bde565b613daf9190615bbc565b6040518115909202916000818181858888f19350505050158015613dd7573d6000803e3d6000fd5b5060408051338152602081018b90527fa4bf806cbdeb44ec11a1cb638e7178b86e527296a2494ec8dc1de13447d96931910160405180910390a15050505050505050505050565b600069152d02c7e14af68000006017541015613e7c57620186a06017546009613e479190615bde565b613e519190615bbc565b613e6390670de0b6b3a7640000615b7f565b613e779069021e19e0c9bab2400000615bbc565b905090565b670de0b6b3a76400006017541015613e95575060165490565b601754601654613ead90670de0b6b3a7640000615bde565b613e779190615bbc565b6004546001600160a01b03163314613ee15760405162461bcd60e51b815260040161124790615a72565b6001600160a01b039091166000908152602560205260409020805460ff90921663010000000263ff00000019909216919091179055565b6001600160a01b0381166000908152602660209081526040808320601e90925282206001820154670de0b6b3a764000092919084805b600854831015613fb357600083815260296020526040902060018101546006860154613f7f9190611a86908a614445565b8154909350613f94908890611a869086614445565b613f9e9083615b7f565b915083613faa81615c4f565b94505050613f4e565b979650505050505050565b6004546001600160a01b03163314613fe85760405162461bcd60e51b815260040161124790615a72565b6001600160a01b03811661400e5760405162461bcd60e51b815260040161124790615b1d565b6001600160a01b0381166000908152601e6020526040902080546118375760068101541561183757600681018054600090915560048201805460ff1916905560095461405c90600190615bfd565b600955600e5461406d908290615bfd565b600e5550506001600160a01b03166000908152602660205260409020600854600190910155565b6001600160a01b0383166140f65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611247565b6001600160a01b0382166141575760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611247565b6001600160a01b038381166000818152602c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661421c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401611247565b6001600160a01b03821661427e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401611247565b601c54600160b81b900460ff16156142cf5760405162461bcd60e51b81526020600482015260146024820152735472616e7366657220697320626c6f636b65642160601b6044820152606401611247565b6001600160a01b038316600090815260208190526040902054818110156143475760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401611247565b6143518282615bfd565b6001600160a01b038086166000908152602081905260408082209390935590851681529081208054849290614387908490615b7f565b90915550506001600160a01b0384166000908152601e602052604081208054909184918391906143b8908490615bfd565b90915550506001600160a01b0384166000908152601e602052604081208054909185918391906143e9908490615b7f565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161443591815260200190565b60405180910390a3505050505050565b60008261445457506000611217565b60006144608385615bde565b90508261446d8583615bbc565b1461173e57600080fd5b6001600160a01b0381166000908152601e60205260409020600481015460ff1615611837576144b36144a883613f18565b6003830154906146bb565b60038201555050565b6000828211156144cb57600080fd5b60006112138385615bfd565b60008082116144e557600080fd5b60006112138385615bbc565b600080600084905080600b600082825461450b9190615bfd565b9091555085905060006145266064611a868460ff8a16614445565b905060006145348284615bfd565b91989197509095505050505050565b6001600160a01b0382166145a35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401611247565b6001600160a01b038216600090815260208190526040902054818110156146175760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401611247565b6146218282615bfd565b6001600160a01b0384166000908152602081905260408120919091556001805484929061464f908490615bfd565b9091555050505050565b600854600081815260296020526040902090614676906001615b7f565b600855908155600e54600190910155565b6001600160a01b0381166000908152602660205260409020600281015460ff1660011415611837576144b36144a88361213d565b6000806146c88385615b7f565b90508381101561173e57600080fd5b6001600160a01b03821661472d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611247565b806001600082825461473f9190615b7f565b90915550506001600160a01b0382166000908152602081905260408120805483929061476c908490615b7f565b90915550505050565b6000806001600160a01b0384161561173e5760185484906000908190815b818160ff161015614960576001600160a01b0385166000908152601e6020908152604080832060ff85168452600b81019092528220805491928b926147d9908490615b7f565b92505081905550888160090160008282546147f49190615b7f565b90915550506018805460ff841690811061481057614810615ca0565b600091825260209091200154945061482e612710611a868b88614445565b935060198260ff168154811061484657614846615ca0565b600091825260208083209091015460ff85168352600b8401909152604090912054106149215760ff82166000908152600d8201602052604081208054869290614890908490615b7f565b92505081905550838160050160008282546148ab9190615b7f565b909155506148bb90508488615b7f565b6001600160a01b038716600090815260266020526040902060028101549198509060ff1661491f5760006148ee88614f32565b9050801561491d5760028201805460ff191660019081179091556007548355600a5461491991615b7f565b600a555b505b505b6001600160a01b039586166000908152601e6020526040902060010154909516948561494d5750614960565b8161495781615c6a565b92505050614793565b5050505050905092915050565b602d5460405163543a185d60e11b81526001600160a01b038381166004830152600092839283928392839283928392839283928392839291169063a87430ba906024016101606040518083038186803b1580156149c957600080fd5b505afa1580156149dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a019190615701565b9a509a509a509a509a509a509a509a509a509a509a506000601e60008e6001600160a01b03166001600160a01b0316815260200190815260200160002090508b81600001819055508a8160010160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555089816002018190555060008160030181905550878160040160006101000a81548160ff021916908360ff1602179055508760ff1660011415614ad15785600e54614abc9190615b7f565b600e55600954614acd906001615b7f565b6009555b600581018790556006808201879055600782018690556008820185905560098201849055600a820183905580546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b038f16179055614b4f8d86614fc5565b614b588d6150f8565b614b618d6152d0565b614b6b8d8d6146d7565b50505050505050505050505050565b602d54604051630cacd00160e11b81526001600160a01b0383811660048301526000928392839290911690631959a002906024016103606040518083038186803b158015614bc757600080fd5b505afa158015614bdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bff9190615658565b6001600160a01b0387166000908152601e6020526040812093965091945092505b60088160ff161015614cd757848160ff1660098110614c4157614c41615ca0565b6020908102919091015160ff83166000818152600c8601909352604090922055849060098110614c7357614c73615ca0565b6020908102919091015160ff83166000818152600b8601909352604090922055839060098110614ca557614ca5615ca0565b6020908102919091015160ff83166000908152600d850190925260409091205580614ccf81615c6a565b915050614c20565b505050505050565b6001600160a01b038381166000908152601e6020526040812060010154909182911615614f2a5760185484906000908190815b818160ff161015614f24576001600160a01b0385166000908152601e6020908152604080832060ff85168452600b81019092528220805491928b92614d58908490615b7f565b909155505060ff82166000908152600c820160205260408120805491614d7d83615c4f565b9091555050600a81018054906000614d9483615c4f565b919050555088816009016000828254614dad9190615b7f565b90915550506018805460ff8416908110614dc957614dc9615ca0565b6000918252602090912001549450614de7612710611a868b88614445565b935060198260ff1681548110614dff57614dff615ca0565b600091825260208083209091015460ff85168352600b840190915260409091205410614ee55760ff82166000908152600d8201602052604081208054869290614e49908490615b7f565b9250508190555083816005016000828254614e649190615b7f565b90915550614e7490508488615b7f565b6001600160a01b038716600090815260266020526040902060028101549198509060ff16614ee3576000614ea788614f32565b90508015614ee15760028201805460ff19166001908117909155600754614ecd91615b7f565b8255600a54614edd906001615b7f565b600a555b505b505b6001600160a01b039586166000908152601e60205260409020600101549095169485614f115750614f24565b81614f1b81615c6a565b92505050614d12565b50505050505b949350505050565b6001600160a01b0381166000908152601e602052604081206018548290815b818160ff161015614fb85760198160ff1681548110614f7257614f72615ca0565b600091825260208083209091015460ff84168352600b870190915260409091205410614fa65782614fa281615c4f565b9350505b80614fb081615c6a565b915050614f51565b5050600f11159392505050565b60005b818160ff1610156112d657602d5460405163d6d6817760e01b81526001600160a01b03858116600483015260ff84166024830152600092839283928392839291169063d6d681779060440160a06040518083038186803b15801561502b57600080fd5b505afa15801561503f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906150639190615848565b6001600160a01b038d166000908152601f60209081526040808320815160a081018352988952888301978852908801958652606088019485526080880193845280546001818101835591845291909220965160059091029096019586559351938501939093559051600284015551600383015551600490910155508493506150f09250839150615c6a9050565b915050614fc8565b602d546040516303d00c9560e51b81526001600160a01b0383811660048301526000928392839283921690637a0192a09060240160806040518083038186803b15801561514457600080fd5b505afa158015615158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061517c9190615812565b6001600160a01b0389166000908152602b6020526040812085815560018101829055600381018490556004810183905560108054969a509498509296509094509092879291906151cd908490615b7f565b9250508190555083601160008282546151e69190615b7f565b9250508190555082601260008282546151ff9190615b7f565b9091555050602d5460405163097a6cfd60e41b81526001600160a01b03888116600483015260009283928392909116906397a6cfd09060240160606040518083038186803b15801561525057600080fd5b505afa158015615264573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061528891906157e4565b6001600160a01b038c166000908152602a6020526040812081815560028101849055600381019190915592955090935091506152c48a846153a2565b50505050505050505050565b602d546040516354e2dd1f60e11b81526001600160a01b038381166004830152600092839283929091169063a9c5ba3e9060240160606040518083038186803b15801561531c57600080fd5b505afa158015615330573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061535491906158a5565b6001600160a01b039096166000908152602560205260409020805460ff978816620100000262ff0000199389166101000261ffff199092169890941697909717969096171617909355505050565b60005b818160ff1610156112d657602d54604051639d48469360e01b81526001600160a01b03858116600483015260ff841660248301526000928392839283921690639d4846939060440160806040518083038186803b15801561540557600080fd5b505afa158015615419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061543d9190615812565b6001600160a01b038b16600090815260208080526040808320815160808101835297885287830196875290870194855260608701938452805460018181018355918452919092209551600490910290950194855592519284019290925551600283015551600390910155508392506154b89150829050615c6a565b9150506153a5565b6040518061020001604052806010906020820280368337509192915050565b600082601f8301126154f057600080fd5b60405161012080820182811067ffffffffffffffff8211171561552357634e487b7160e01b600052604160045260246000fd5b604052818482810187101561553757600080fd5b600092505b600983101561555c5780518252600192909201916020918201910161553c565b509195945050505050565b60006020828403121561557957600080fd5b813561173e81615cb6565b6000806040838503121561559757600080fd5b82356155a281615cb6565b946020939093013593505050565b600080604083850312156155c357600080fd5b82356155ce81615cb6565b915060208301356155de81615cb6565b809150509250929050565b6000806000606084860312156155fe57600080fd5b833561560981615cb6565b9250602084013561561981615cb6565b929592945050506040919091013590565b6000806040838503121561563d57600080fd5b823561564881615cb6565b915060208301356155de81615ccb565b6000806000610360848603121561566e57600080fd5b61567885856154df565b92506156888561012086016154df565b91506156988561024086016154df565b90509250925092565b6000602082840312156156b357600080fd5b8135801515811461173e57600080fd5b6000602082840312156156d557600080fd5b5035919050565b600080604083850312156156ef57600080fd5b8235915060208301356155de81615cb6565b60008060008060008060008060008060006101608c8e03121561572357600080fd5b8b519a5060208c015161573581615cb6565b809a505060408c0151985060608c0151975060808c015161575581615ccb565b8097505060a08c0151955060c08c0151945060e08c015193506101008c015192506101208c015191506101408c015190509295989b509295989b9093969950565b600080604083850312156157a957600080fd5b50508035926020909101359150565b6000806000606084860312156157cd57600080fd5b505081359360208301359350604090920135919050565b6000806000606084860312156157f957600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561582857600080fd5b505082516020840151604085015160609095015191969095509092509050565b600080600080600060a0868803121561586057600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b60006020828403121561589a57600080fd5b813561173e81615ccb565b6000806000606084860312156158ba57600080fd5b83516158c581615ccb565b60208501519093506158d681615ccb565b60408501519092506158e781615ccb565b809150509250925092565b8060005b60108110156159155781518452602093840193909101906001016158f6565b50505050565b610600810161592a82866158f2565b6159386102008301856158f2565b614f2a6104008301846158f2565b600060208083528351808285015260005b8181101561597357858101830151858201604001528201615957565b81811115615985576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601a908201527f536f72727920212053656520796f75206e6578742074696d652e000000000000604082015260600190565b602080825260089082015267436865636b65642160c01b604082015260600190565b602080825260069082015265436865636b2160d01b604082015260600190565b6020808252601b908201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604082015260600190565b6020808252600d908201526c496e76616c696420557365722160981b604082015260600190565b6020808252601690820152752cb7ba9030b932903737ba1034b734ba34b0ba37b91760511b604082015260600190565b6020808252601e908201527f496e73756666696369656e742066756e6420696e20636f6e7472616374210000604082015260600190565b60208082526024908201527f4d696e696d756d203230302046414e544f4d20616c6c6f77656420746f20696e6040820152631d995cdd60e21b606082015260800190565b6020808252601e908201527f4163636f756e7420616464726573732063616e6e6f74206265207a65726f0000604082015260600190565b602080825260119082015270496e76616c69642077697468647261772160781b604082015260600190565b60008219821115615b9257615b92615c8a565b500190565b600060ff821660ff84168060ff03821115615bb457615bb4615c8a565b019392505050565b600082615bd957634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615615bf857615bf8615c8a565b500290565b600082821015615c0f57615c0f615c8a565b500390565b600181811c90821680615c2857607f821691505b60208210811415615c4957634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415615c6357615c63615c8a565b5060010190565b600060ff821660ff811415615c8157615c81615c8a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461305857600080fd5b60ff8116811461305857600080fdfe8b392019d764be3ed00875263b0a64468a74f44a97615d4f026d98febc56c4aaa26469706673582212200149e5cea860bd50564542a6e0b9c0cba8385a7b566482d95e2c5cd6ed65f24a64736f6c63430008070033

Deployed Bytecode Sourcemap

3074:45670:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19059:190;;;;;;;;;;-1:-1:-1;19059:190:0;;;;;:::i;:::-;;:::i;:::-;;;19128:25:1;;;19116:2;19101:18;19059:190:0;;;;;;;;45376:191;;;;;;;;;;-1:-1:-1;45376:191:0;;;;;:::i;:::-;;:::i;:::-;;7403:42;;;;;;;;;;-1:-1:-1;7403:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23453:25:1;;;23509:2;23494:18;;23487:34;;;;23537:18;;;23530:34;;;;23612:4;23600:17;;;23595:2;23580:18;;23573:45;23655:17;23649:3;23634:19;;23627:46;23440:3;23425:19;7403:42:0;23202:477:1;15214:106:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;19256:309::-;;;;;;;;;;-1:-1:-1;19256:309:0;;;;;:::i;:::-;;:::i;7352:44::-;;;;;;;;;;-1:-1:-1;7352:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23911:25:1;;;23967:2;23952:18;;23945:34;;;;24027:4;24015:17;24010:2;23995:18;;23988:45;24064:2;24049:18;;24042:34;23898:3;23883:19;;23684:398;15680:169:0;;;;;;;;;;-1:-1:-1;15680:169:0;;;;;:::i;:::-;;:::i;:::-;;;9446:14:1;;9439:22;9421:41;;9409:2;9394:18;15680:169:0;9281:187:1;14181:1025:0;;;;;;;;;;;;14570:15;;14611:13;;14653:16;;14699:17;;14746;;14795:19;;14842:9;:16;14884:13;;14918:15;;14954:13;;14988:14;;14522:21;;14842:16;;14884:13;;14918:15;;14954:13;;14225:14;;14988;;14653:16;14699:17;14746;14181:1025;;;;;22638:25:1;;;22694:2;22679:18;;22672:34;;;;22722:18;;;22715:34;;;;22780:2;22765:18;;22758:34;;;;22823:3;22808:19;;22801:35;;;;22867:3;22852:19;;22845:35;;;;22911:3;22896:19;;22889:35;;;;22955:3;22940:19;;22933:35;22999:3;22984:19;;22977:35;23043:3;23028:19;;23021:35;23087:3;23072:19;;23065:36;23132:3;23117:19;;23110:36;23177:3;23162:19;;23155:36;22625:3;22610:19;14181:1025:0;22152:1045:1;18741:128:0;;;;;;;;;;-1:-1:-1;18741:128:0;;;;;:::i;:::-;;:::i;15556:114::-;;;;;;;;;;-1:-1:-1;15650:12:0;;15556:114;;42628:491;;;;;;;;;;-1:-1:-1;42628:491:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;13608:280::-;;;;;;;;;;-1:-1:-1;13608:280:0;;;;;:::i;:::-;;:::i;4356:68::-;;;;;;;;;;-1:-1:-1;4356:68:0;;;;-1:-1:-1;;;;;4356:68:0;;;;;;-1:-1:-1;;;;;8143:32:1;;;8125:51;;8113:2;8098:18;4356:68:0;7979:203:1;45903:157:0;;;;;;;;;;-1:-1:-1;45903:157:0;;;;;:::i;:::-;;:::i;3391:22::-;;;;;;;;;;;;;;;;15865:422;;;;;;;;;;-1:-1:-1;15865:422:0;;;;;:::i;:::-;;:::i;13910:263::-;;;;;;;;;;-1:-1:-1;13910:263:0;;;;;:::i;:::-;;:::i;45736:160::-;;;;;;;;;;-1:-1:-1;45736:160:0;;;;;:::i;:::-;;:::i;18878:168::-;;;;;;;;;;-1:-1:-1;18878:168:0;;;;;:::i;:::-;;:::i;15450:98::-;;;;;;;;;;-1:-1:-1;15508:5:0;15450:98;;;24259:4:1;24247:17;;;24229:36;;24217:2;24202:18;15450:98:0;24087:184:1;4276:73:0;;;;;;;;;;-1:-1:-1;4276:73:0;;;;-1:-1:-1;;;;;4276:73:0;;;47099:190;;;;;;;;;;-1:-1:-1;47099:190:0;;;;;:::i;:::-;;:::i;47901:407::-;;;;;;;;;;-1:-1:-1;47901:407:0;;;;;:::i;:::-;;:::i;4459:22::-;;;;;;;;;;-1:-1:-1;4459:22:0;;;;-1:-1:-1;;;4459:22:0;;;;;;46070:157;;;;;;;;;;-1:-1:-1;46070:157:0;;;;;:::i;:::-;;:::i;4202:67::-;;;;;;;;;;-1:-1:-1;4202:67:0;;;;-1:-1:-1;;;;;4202:67:0;;;3357:27;;;;;;;;;;-1:-1:-1;3357:27:0;;;;;:::i;:::-;;:::i;30883:1551::-;;;;;;;;;;;;;:::i;3420:22::-;;;;;;;;;;;;;;;;37176:2341;;;;;;;;;;;;;:::i;46246:159::-;;;;;;;;;;-1:-1:-1;46246:159:0;;;;;:::i;:::-;;:::i;3924:99::-;;;;;;;;;;-1:-1:-1;3924:99:0;;;;;:::i;:::-;;:::i;46905:184::-;;;;;;;;;;-1:-1:-1;46905:184:0;;;;;:::i;:::-;;:::i;33610:583::-;;;;;;;;;;-1:-1:-1;33610:583:0;;;;;:::i;:::-;;:::i;46422:105::-;;;;;;;;;;-1:-1:-1;46422:105:0;;;;;:::i;:::-;;:::i;45573:155::-;;;;;;;;;;-1:-1:-1;45573:155:0;;;;;:::i;:::-;;:::i;18595:133::-;;;;;;;;;;-1:-1:-1;18595:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;18702:18:0;18669:7;18702:18;;;;;;;;;;;;18595:133;7234:57;;;;;;;;;;-1:-1:-1;7234:57:0;;;;;:::i;:::-;;:::i;:::-;;;;20273:25:1;;;20329:2;20314:18;;20307:34;;;;20246:18;7234:57:0;20099:248:1;7596:53:0;;;;;;;;;;-1:-1:-1;7596:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21855:25:1;;;21911:2;21896:18;;21889:34;;;;21939:18;;;21932:34;;;;21997:2;21982:18;;21975:34;;;;22040:3;22025:19;;22018:35;22084:3;22069:19;;22062:35;22128:3;22113:19;;22106:35;21842:3;21827:19;7596:53:0;21540:607:1;48317:408:0;;;;;;;;;;-1:-1:-1;48317:408:0;;;;;:::i;:::-;;:::i;3449:23::-;;;;;;;;;;;;;;;;7173:53;;;;;;;;;;-1:-1:-1;7173:53:0;;;;;:::i;:::-;;:::i;35545:1076::-;;;;;;;;;;-1:-1:-1;35545:1076:0;;;;;:::i;:::-;;:::i;34204:1330::-;;;;;;;;;;;;;:::i;7055:51::-;;;;;;;;;;-1:-1:-1;7055:51:0;;;;;:::i;:::-;;:::i;29738:1132::-;;;;;;;;;;-1:-1:-1;29738:1132:0;;;;;:::i;:::-;;:::i;43131:1213::-;;;;;;;;;;-1:-1:-1;43131:1213:0;;;;;:::i;:::-;;:::i;:::-;;;;20554:25:1;;;20610:2;20595:18;;20588:34;;;;20638:18;;;20631:34;20542:2;20527:18;43131:1213:0;20352:319:1;15332:110:0;;;;;;;;;;;;;:::i;4027:168::-;;;;;;;;;;-1:-1:-1;4027:168:0;;;;;:::i;:::-;;:::i;7542:47::-;;;;;;;;;;-1:-1:-1;7542:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21331:25:1;;;21387:2;21372:18;;21365:34;;;;21415:18;;;21408:34;;;;21473:2;21458:18;;21451:34;21516:3;21501:19;;21494:35;21318:3;21303:19;7542:47:0;21072:463:1;3598:33:0;;;;;;;;;;;;;;;;7003:45;;;;;;;;;;-1:-1:-1;7003:45:0;;;;;:::i;:::-;;:::i;:::-;;;;20907:25:1;;;20963:2;20948:18;;20941:34;;;;20991:18;;;20984:34;21049:2;21034:18;;21027:34;20894:3;20879:19;7003:45:0;20676:391:1;6907:37:0;;;;;;;;;;-1:-1:-1;6907:37:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6907:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;19588:25:1;;;-1:-1:-1;;;;;19649:32:1;;;19644:2;19629:18;;19622:60;19698:18;;;19691:34;;;;19756:2;19741:18;;19734:34;;;;19817:4;19805:17;;;19799:3;19784:19;;19777:46;19669:3;19839:19;;19832:35;;;;19898:3;19883:19;;19876:35;19942:3;19927:19;;19920:35;19986:3;19971:19;;19964:35;20030:3;20015:19;;20008:35;20074:3;20059:19;;20052:36;19575:3;19560:19;6907:37:0;19164:930:1;16652:175:0;;;;;;;;;;-1:-1:-1;16652:175:0;;;;;:::i;:::-;;:::i;7298:47::-;;;;;;;;;;-1:-1:-1;7298:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24521:4:1;24509:17;;;24491:36;;24563:17;;;24558:2;24543:18;;24536:45;24617:17;;;24597:18;;;24590:45;;;;24671:17;;;24666:2;24651:18;;24644:45;24478:3;24463:19;7298:47:0;24276:419:1;46535:175:0;;;;;;;;;;-1:-1:-1;46535:175:0;;;;;:::i;:::-;;:::i;25957:2155::-;;;:::i;7113:53::-;;;;;;;;;;-1:-1:-1;7113:53:0;;;;;:::i;:::-;;:::i;4488:22::-;;;;;;;;;;-1:-1:-1;4488:22:0;;;;-1:-1:-1;;;4488:22:0;;;;;;8584:385;;;;;;;;;;-1:-1:-1;8584:385:0;;;;;:::i;:::-;;:::i;4546:33::-;;;;;;;;;;-1:-1:-1;4546:33:0;;;;-1:-1:-1;;;4546:33:0;;;;;;36631:535;;;;;;;;;;-1:-1:-1;36631:535:0;;;;;:::i;:::-;;:::i;47499:187::-;;;;;;;;;;-1:-1:-1;47499:187:0;;;;;:::i;:::-;;:::i;46719:178::-;;;;;;;;;;-1:-1:-1;46719:178:0;;;;;:::i;:::-;;:::i;39530:2407::-;;;;;;;;;;;;;:::i;47297:190::-;;;;;;;;;;-1:-1:-1;47297:190:0;;;;;:::i;:::-;;:::i;19897:119::-;;;;;;;;;;;;;:::i;6951:45::-;;;;;;;;;;-1:-1:-1;6951:45:0;;;;;:::i;:::-;;:::i;16839:151::-;;;;;;;;;;-1:-1:-1;16839:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;16955:18:0;;;16928:7;16955:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16839:151;4586:31;;;;;;;;;;;;;;;;4517:22;;;;;;;;;;-1:-1:-1;4517:22:0;;;;-1:-1:-1;;;4517:22:0;;;;;;4431:21;;;;;;;;;;-1:-1:-1;4431:21:0;;;;-1:-1:-1;;;4431:21:0;;;;;;7495:40;;;;;;;;;;-1:-1:-1;7495:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;3479:23;;;;;;;;;;;;;;;;22379:3571;;;;;;:::i;:::-;;:::i;19574:313::-;;;;;;;;;;;;;:::i;47699:190::-;;;;;;;;;;-1:-1:-1;47699:190:0;;;;;:::i;:::-;;:::i;32662:667::-;;;;;;;;;;-1:-1:-1;32662:667:0;;;;;:::i;:::-;;:::i;44357:807::-;;;;;;;;;;-1:-1:-1;44357:807:0;;;;;:::i;:::-;;:::i;7452:36::-;;;;;;;;;;-1:-1:-1;7452:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;19059:190;19141:4;19164:10;19177:22;19191:7;19177:13;:22::i;:::-;19164:35;-1:-1:-1;19164:35:0;19217:18;:11;19230:4;19217:18;:::i;:::-;:24;;;;:::i;:::-;19210:31;;;19059:190;;;;;:::o;45376:191::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;;;;;;;;;45487:1:::1;45477:7;:11;45469:56;;;::::0;-1:-1:-1;;;45469:56:0;;11842:2:1;45469:56:0::1;::::0;::::1;11824:21:1::0;;;11861:18;;;11854:30;11920:34;11900:18;;;11893:62;11972:18;;45469:56:0::1;11640:356:1::0;45469:56:0::1;45536:23;::::0;-1:-1:-1;;;;;45536:14:0;::::1;::::0;:23;::::1;;;::::0;45551:7;;45536:23:::1;::::0;;;45551:7;45536:14;:23;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;45376:191:::0;;:::o;15214:106::-;15268:13;15307:5;15300:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15214:106;:::o;19256:309::-;19316:4;19352:16;19342:7;:26;19338:220;;;19430:6;19420:9;19422:7;19420:1;:9;:::i;:::-;:16;;;;:::i;:::-;19409:28;;19410:7;19409:28;:::i;:::-;19392:46;;:15;:46;:::i;19338:220::-;19486:7;19476;:18;;:70;;19530:16;;19476:70;;;19522:7;19495:16;;19513:7;19495:26;;;;:::i;:::-;:34;;;;:::i;15680:169::-;15763:4;15780:39;1029:10;15803:7;15812:6;15780:8;:39::i;:::-;-1:-1:-1;15837:4:0;15680:169;;;;:::o;18741:128::-;18800:4;18848:13;:11;:13::i;:::-;18829:18;:11;18842:4;18829:18;:::i;42628:491::-;42683:23;;:::i;:::-;42708:28;;:::i;:::-;42738:25;;:::i;:::-;-1:-1:-1;;;;;42798:12:0;;42776:19;42798:12;;;:5;:12;;;;;;42821:198;42842:2;42838:1;:6;;;42821:198;;;42876:24;;;;;;;:21;;;:24;;;;;;;42866:4;;:7;;;;;;;:::i;:::-;;;;:34;;;;;42930:6;:26;;:29;42957:1;42930:29;;;;;;;;;;;;;;;;42915:9;42925:1;42915:12;;;;;;;;;:::i;:::-;;;;:44;;;;;42986:6;:18;;:21;43005:1;42986:21;;;;;;;;;;;;;;;;42974:6;42981:1;42974:9;;;;;;;;;:::i;:::-;;;;:33;42846:3;;;;:::i;:::-;;;;42821:198;;;;43029:82;42628:491;;;;;:::o;13608:280::-;13725:9;;-1:-1:-1;;;;;13725:9:0;13736:10;13725:21;13722:159;;;13758:13;:30;;;;13799:13;:25;13835:15;:33;13608:280::o;45903:157::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;45974:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;45974:17:0::1;-1:-1:-1::0;;;;45974:17:0;;::::1;;::::0;;46011:37:::1;::::0;46029:10:::1;::::0;-1:-1:-1;;;;;;;;;;;46011:37:0;::::1;::::0;45985:6;9446:14:1;9439:22;9421:41;;9409:2;9394:18;;9281:187;46011:37:0::1;;;;;;;;45903:157:::0;:::o;15865:422::-;15971:4;15988:36;15998:6;16006:9;16017:6;15988:9;:36::i;:::-;-1:-1:-1;;;;;16064:19:0;;16037:24;16064:19;;;:11;:19;;;;;;;;1029:10;16064:33;;;;;;;;16116:26;;;;16108:79;;;;-1:-1:-1;;;16108:79:0;;13985:2:1;16108:79:0;;;13967:21:1;14024:2;14004:18;;;13997:30;14063:34;14043:18;;;14036:62;-1:-1:-1;;;14114:18:1;;;14107:38;14162:19;;16108:79:0;13783:404:1;16108:79:0;16198:57;16207:6;1029:10;16229:25;16248:6;16229:16;:25;:::i;:::-;16198:8;:57::i;:::-;-1:-1:-1;16275:4:0;;15865:422;-1:-1:-1;;;;15865:422:0:o;13910:263::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;14047:13:::1;:30:::0;;;;14088:13:::1;:25:::0;14124:15:::1;:33:::0;13910:263::o;45736:160::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;45814:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;45814:17:0::1;-1:-1:-1::0;;;;45814:17:0;;::::1;;::::0;;45851:37:::1;::::0;45869:10:::1;::::0;-1:-1:-1;;;;;;;;;;;45851:37:0;::::1;::::0;45825:6;9446:14:1;9439:22;9421:41;;9409:2;9394:18;;9281:187;18878:168:0;18934:4;18957:10;18970;:8;:10::i;:::-;18957:23;-1:-1:-1;19029:8:0;19000:26;18957:23;19000:15;:7;19012:2;19000:11;:15::i;:::-;:19;;:26::i;:::-;18999:39;;;;:::i;:::-;18992:46;18878:168;-1:-1:-1;;;18878:168:0:o;47099:190::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47218:20:0;;;::::1;47188:27;47218:20:::0;;;:10:::1;:20;::::0;;;;47251:30;;-1:-1:-1;;47251:30:0::1;;::::0;;::::1;::::0;;;::::1;::::0;;47099:190::o;47901:407::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47989:22:0;::::1;47981:65;;;;-1:-1:-1::0;;;47981:65:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;48087:18:0;::::1;48058:26;48087:18:::0;;;:8:::1;:18;::::0;;;;48120:21:::1;::::0;::::1;::::0;::::1;;48117:178;;48177:21;::::0;::::1;:23:::0;;-1:-1:-1;;48177:23:0::1;48199:1;48177:23:::0;;::::1;::::0;;;48235:7:::1;::::0;48219:23;;48270:8:::1;::::0;:10:::1;::::0;::::1;:::i;:::-;48261:8;:19:::0;48117:178:::1;47969:339;47901:407:::0;:::o;46070:157::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;46141:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;46141:17:0::1;-1:-1:-1::0;;;;46141:17:0;;::::1;;::::0;;46178:37:::1;::::0;46196:10:::1;::::0;-1:-1:-1;;;;;;;;;;;46178:37:0;::::1;::::0;46152:6;9446:14:1;9439:22;9421:41;;9409:2;9394:18;;9281:187;3357:27:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3357:27:0;;-1:-1:-1;3357:27:0;:::o;30883:1551::-;30957:10;30931:17;30951;;;:5;:17;;;;;;;;31015:13;:25;;;;;31081:10;:22;;;;;31132:20;;;;31124:48;;;;-1:-1:-1;;;31124:48:0;;;;;;;:::i;:::-;31192:9;;-1:-1:-1;;;31192:9:0;;;;31191:10;31183:31;;;;-1:-1:-1;;;31183:31:0;;;;;;;:::i;:::-;31244:10;31233:22;;;;:10;:22;;;;;:35;;;;;;:38;31225:64;;;;-1:-1:-1;;;31225:64:0;;;;;;;:::i;:::-;31300:18;31351:1;31322:12;:28;;;:30;31321:106;;31401:10;31392:20;;;;:8;:20;;;;;:23;;:20;;;:23;;;;:::i;:::-;;;;;;;;;;;:35;;;31321:106;;;31354:28;;;;:37;;31385:6;31354:37;:::i;:::-;31300:127;;31465:10;31446:15;:29;;31438:67;;;;-1:-1:-1;;;31438:67:0;;;;;;;:::i;:::-;31524:19;31532:10;31524:7;:19::i;:::-;31592:10;31554:26;31583:20;;;:8;:20;;;;;31633:7;;31614:18;;;;:26;;;;31669:8;;;;31733:24;;;;31583:20;;31669:8;;31721:37;;31669:8;;31721:11;:37::i;:::-;31698:60;;31792:4;31777:12;:19;31769:49;;;;-1:-1:-1;;;31769:49:0;;;;;;;:::i;:::-;31855:12;31829;:24;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;31878:18:0;;;:20;;;:18;:20;;;:::i;:::-;;;;-1:-1:-1;31909:18:0;;-1:-1:-1;31930:29:0;31955:3;31930:20;:12;31947:2;31930:16;:20::i;:::-;:24;;:29::i;:::-;31909:50;;31988:12;31970:16;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;32042:15:0;32011:28;;;:46;;;32079:10;32068:22;;;;:10;:22;;;;;;;;32096:79;;;;;;;;;;;;;;;;;32068:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32215:28;32122:12;32232:10;32215:16;:28::i;:::-;32271:10;;32263:47;;32187:56;;-1:-1:-1;;;;;;32271:10:0;;32263:47;;;;;32187:56;;32271:10;32263:47;32271:10;32263:47;32187:56;32271:10;32263:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32321:40:0;;32329:10;;32321:40;;;;;32350:10;;32321:40;;;;32350:10;32329;32321:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32378:37:0;;;32391:10;8361:51:1;;8443:2;8428:18;;8421:34;;;32378:37:0;;8334:18:1;32378:37:0;;;;;;;30920:1514;;;;;;;;;30883:1551::o;37176:2341::-;37244:10;37218:17;37238;;;:5;:17;;;;;;;;37302:13;:25;;;;;;37347:9;;-1:-1:-1;;;37347:9:0;;;;37346:10;37338:29;;;;-1:-1:-1;;;37338:29:0;;;;;;;:::i;:::-;37407:1;37386:4;:20;;;:22;37378:48;;;;-1:-1:-1;;;37378:48:0;;;;;;;:::i;:::-;37437:13;37453:4;:20;;;37476:1;37453:24;;;;:::i;:::-;37437:40;;37488:22;37564:12;:24;;;37538:12;:25;;;37511:12;:26;;;:52;;;;:::i;:::-;:77;;;;:::i;:::-;37488:100;;37613:14;37607:5;:20;37599:64;;;;-1:-1:-1;;;37599:64:0;;17413:2:1;37599:64:0;;;17395:21:1;17452:2;17432:18;;;17425:30;17491:33;17471:18;;;17464:61;17542:18;;37599:64:0;17211:355:1;37599:64:0;37693:10;37682:22;;;;:10;:22;;;;;:36;;;:39;37674:65;;;;-1:-1:-1;;;37674:65:0;;;;;;;:::i;:::-;37759:10;;-1:-1:-1;;;37759:10:0;;;;37758:11;37750:30;;;;-1:-1:-1;;;37750:30:0;;;;;;;:::i;:::-;37791:18;37848:1;37813:12;:34;;;:36;37812:122;;37908:10;37899:20;;;;:8;:20;;;;;:23;;:20;;;:23;;;;:::i;:::-;;;;;;;;;;;:35;;;37812:122;;;37888:9;;37851:12;:34;;;:46;;;;:::i;:::-;37791:143;;37972:10;37953:15;:29;;37945:67;;;;-1:-1:-1;;;37945:67:0;;;;;;;:::i;:::-;38098:10;;38038:1;;38063:2;;38023:12;;38098:29;;38123:3;;38098:20;;38038:1;38098:14;:20::i;:29::-;38156:10;38146:9;:21;;;;;;;;;;;38076:51;;-1:-1:-1;38146:34:0;-1:-1:-1;38146:34:0;38138:74;;;;-1:-1:-1;;;38138:74:0;;;;;;;:::i;:::-;38223:17;38243:24;38255:11;38243;:24::i;:::-;38223:44;;38278:15;38296:14;38308:1;38296:11;:14::i;:::-;38278:32;;38352:9;38329:21;:32;;38321:75;;;;-1:-1:-1;;;38321:75:0;;;;;;;:::i;:::-;38408:21;38431;38454:33;38470:9;38480:6;38454:15;:33::i;:::-;38509:10;38498:22;;;;:10;:22;;;;;:32;;:34;;38407:80;;-1:-1:-1;38407:80:0;;-1:-1:-1;38498:34:0;;;:::i;:::-;;;;;;38580:15;38543:12;:34;;:52;;;;38636:9;38606:12;:26;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;38656:23:0;;38668:11;;38656:4;;:10;;:23;;38668:11;;38656:23;:::i;:::-;;;;;;;;38705:11;38690:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;38740:13:0;;:24;-1:-1:-1;38737:155:0;;38805:9;38790:13;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;38737:155:0;;-1:-1:-1;38737:155:0;;38879:1;38865:13;:15;38737:155;38921:9;38902:17;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;38941:12:0;;-1:-1:-1;38956:13:0;:11;:13::i;:::-;38988:10;38980:19;;;;:7;:19;;;;;;;;39005:129;;;;;;;;;;;38941:28;;-1:-1:-1;39005:129:0;;39052:19;39028:9;38941:28;39052:13;:19::i;:::-;39005:129;;;;;;;;;39108:15;39005:129;;;;;38980:155;;;;;;;;-1:-1:-1;38980:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39148:30;39154:10;39166:11;39148:5;:30::i;:::-;39189:43;;39197:10;;39189:43;;;;;39218:13;;39189:43;;;;39218:13;39197:10;39189:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39243:21:0;39266:30;39292:3;39266:21;:13;39284:2;39266:17;:21::i;:30::-;39243:53;-1:-1:-1;39307:21:0;39330:32;:13;39243:53;39330:17;:32::i;:::-;39307:55;;39373:28;39387:13;39373;:28::i;:::-;39420:10;;39412:43;;-1:-1:-1;;;;;39420:10:0;;;;39412:43;;;;;39441:13;;39420:10;39412:43;39420:10;39412:43;39441:13;39420:10;39412:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39471:38:0;;;39484:10;8361:51:1;;8443:2;8428:18;;8421:34;;;39471:38:0;;8334:18:1;39471:38:0;;;;;;;37207:2310;;;;;;;;;;;;;;;37176:2341::o;46246:159::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;46315:17:::1;:24:::0;;-1:-1:-1;;;;46315:24:0::1;-1:-1:-1::0;;;46315:24:0::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;46359:34:::1;::::0;24229:36:1;;;46374:10:0::1;::::0;46359:34:::1;::::0;24217:2:1;24202:18;46359:34:0::1;24087:184:1::0;3924:99:0;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3924:99:0;:::o;46905:184::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46989:22:0;::::1;46981:65;;;;-1:-1:-1::0;;;46981:65:0::1;;;;;;;:::i;:::-;47057:15;:24:::0;;-1:-1:-1;;;;;;47057:24:0::1;-1:-1:-1::0;;;;;47057:24:0;;;::::1;::::0;;;::::1;::::0;;46905:184::o;33610:583::-;-1:-1:-1;;;;;33727:21:0;;33672:7;33727:21;;;:8;:21;;;;;33770:15;;33825:4;33672:7;;33910:237;33920:7;;33916:1;:11;33910:237;;;33945:18;33966:7;;;:4;:7;;;;;34041:14;;;;34000:12;;:56;;34041:14;34000:36;;34017:18;34000:16;:36::i;:56::-;33988:68;-1:-1:-1;34084:33:0;33988:68;34098:18;34084:13;:33::i;:::-;34071:46;;;;:::i;:::-;;-1:-1:-1;34132:3:0;;;;:::i;:::-;;;;33928:219;33910:237;;;-1:-1:-1;34166:9:0;33610:583;-1:-1:-1;;;;;33610:583:0:o;46422:105::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;46489:9:::1;:13:::0;46422:105::o;45573:155::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;45643:9:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;45643:16:0::1;-1:-1:-1::0;;;;45643:16:0;;::::1;;::::0;;45679:37:::1;::::0;45697:10:::1;::::0;-1:-1:-1;;;;;;;;;;;45679:37:0;::::1;::::0;45653:6;9446:14:1;9439:22;9421:41;;9409:2;9394:18;;9281:187;7234:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7234:57:0;-1:-1:-1;7234:57:0;:::o;48317:408::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;48406:22:0;::::1;48398:65;;;;-1:-1:-1::0;;;48398:65:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;48504:18:0;::::1;48475:26;48504:18:::0;;;:8:::1;:18;::::0;;;;48537:21:::1;::::0;::::1;::::0;::::1;;::::0;:24:::1;48534:178;;;48594:21;::::0;::::1;:23:::0;;-1:-1:-1;;48594:23:0::1;::::0;;48652:7:::1;::::0;48636:23;;48687:8:::1;::::0;:10:::1;::::0;48594:23;;48687:10:::1;:::i;7173:53::-:0;;;;;;;;;;;;;;;;;;;;35545:1076;35645:10;35610:24;35637:19;;;:7;:19;;;;;;;;35703:13;:25;;;;;35769:10;:22;;;;;35820:20;;;;35812:48;;;;-1:-1:-1;;;35812:48:0;;;;;;;:::i;:::-;35880:9;;-1:-1:-1;;;35880:9:0;;;;35879:10;35871:31;;;;-1:-1:-1;;;35871:31:0;;;;;;;:::i;:::-;35933:20;;;;36000:30;;;;35915:15;;35988:43;;35933:20;;35988:11;:43::i;:::-;35964:67;;36065:7;36050:13;:22;;36042:52;;;;-1:-1:-1;;;36042:52:0;;;;;;;:::i;:::-;36137:7;36105:12;:30;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;36155:21:0;;;:23;;;:21;:23;;;:::i;:::-;;;;-1:-1:-1;36189:18:0;;-1:-1:-1;36210:24:0;36230:3;36210:15;:7;36222:2;36210:11;:15::i;:24::-;36189:45;;36266:7;36245:19;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;;36298:10:0;36284:25;;;;:13;:25;;;;;;;;36315:77;;;;;;;;;;;36366:15;36315:77;;;;;;36284:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36432:23;36344:7;36444:10;36432:11;:23::i;:::-;36466:40;;36404:51;;-1:-1:-1;36474:10:0;;36466:40;;;;;36495:10;;36466:40;;;;36495:10;36474;36466:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36525:10:0;;36517:47;;-1:-1:-1;;;;;36525:10:0;;;;36517:47;;;;;36546:17;;36525:10;36517:47;36525:10;36517:47;36546:17;36525:10;36517:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;36580:32:0;;;36593:10;8361:51:1;;8443:2;8428:18;;8421:34;;;36580:32:0;;8334:18:1;36580:32:0;;;;;;;;35599:1022;;;;;;;35545:1076;:::o;34204:1330::-;34278:10;34252:17;34272;;;:5;:17;;;;;;;;34336:13;:25;;;;;34402:10;:22;;;;;34453:20;;;;34445:48;;;;-1:-1:-1;;;34445:48:0;;;;;;;:::i;:::-;34513:9;;-1:-1:-1;;;34513:9:0;;;;34512:10;34504:31;;;;-1:-1:-1;;;34504:31:0;;;;;;;:::i;:::-;34565:10;34554:22;;;;:10;:22;;;;;:36;;;;;;:39;34546:65;;;;-1:-1:-1;;;34546:65:0;;;;;;;:::i;:::-;34622:20;34631:10;34622:8;:20::i;:::-;34691:10;34653:26;34682:20;;;:8;:20;;;;;34729:7;;34713:23;;34765:16;;;;34837:25;;;;34682:20;;34765:16;;34825:38;;34765:16;;34825:11;:38::i;:::-;34802:61;;34897:4;34882:12;:19;34874:49;;;;-1:-1:-1;;;34874:49:0;;;;;;;:::i;:::-;34961:12;34934;:25;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;34984:19:0;;;:21;;;:19;:21;;;:::i;:::-;;;;-1:-1:-1;35016:18:0;;-1:-1:-1;35037:29:0;35062:3;35037:20;:12;35054:2;35037:16;:20::i;:29::-;35016:50;;35096:12;35077:17;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;35150:15:0;35119:28;;;:46;;;35188:10;35176:23;;;;:11;:23;;;;;;;;35205:80;;;;;;;;;;;;;;;;;35176:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35325:28;35232:12;35342:10;35325:16;:28::i;:::-;35381:10;;35373:47;;35297:56;;-1:-1:-1;;;;;;35381:10:0;;35373:47;;;;;35297:56;;35381:10;35373:47;35381:10;35373:47;35297:56;35381:10;35373:47;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35431:40:0;;35439:10;;35431:40;;;;;35460:10;;35431:40;;;;35460:10;35439;35431:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35488:37:0;;;35501:10;8361:51:1;;8443:2;8428:18;;8421:34;;;35488:37:0;;8334:18:1;35488:37:0;8187:274:1;7055:51:0;;;;;;;;;;;;;;;;;;;;29738:1132;29827:10;29801:17;29821;;;:5;:17;;;;;;;;29885:13;:25;;;;;29951:10;:22;;;;;30002:20;;;;29994:48;;;;-1:-1:-1;;;29994:48:0;;;;;;;:::i;:::-;30062:9;;-1:-1:-1;;;30062:9:0;;;;30061:10;30053:31;;;;-1:-1:-1;;;30053:31:0;;;;;;;:::i;:::-;30116:10;30105:22;;;;:10;:22;;;;;:36;;;;;;:39;30097:65;;;;-1:-1:-1;;;30097:65:0;;;;;;;:::i;:::-;30193:15;;;;30269:25;;30255:8;;;;30175:15;;30243:52;;:21;;30193:15;;30243:11;:21::i;:::-;:25;;:52::i;:::-;30219:76;;30329:7;30314:13;:22;;30306:52;;;;-1:-1:-1;;;30306:52:0;;;;;;;:::i;:::-;30396:7;30369:12;:25;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;30414:23:0;;:9;:21;:23;;;:::i;:::-;;;;-1:-1:-1;30448:18:0;;-1:-1:-1;30469:24:0;30489:3;30469:15;:7;30481:2;30469:11;:15::i;:24::-;30448:45;;30519:7;30504:13;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;30549:10:0;30537:23;;;;:11;:23;;;;;;;;30566:75;;;;;;;;;;;30615:15;30566:75;;;;;;30537:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30681:23;30593:7;30693:10;30681:11;:23::i;43131:1213::-;-1:-1:-1;;;;;43305:12:0;;43207:22;43305:12;;;:5;:12;;;;;43346:20;;;;43207:22;;;;43338:48;;;;-1:-1:-1;;;43338:48:0;;;;;;;:::i;:::-;43400:5;43409:1;43400:10;:26;;;;43414:5;43423:3;43414:12;43400:26;43397:921;;;43495:17;;43461:5;;-1:-1:-1;;;43495:17:0;;;;43540:1;43533:8;;43530:83;;;-1:-1:-1;43591:2:0;43530:83;43649:10;;43627:19;;43649:29;;43674:3;;43649:20;;43664:4;43649:14;:20::i;:29::-;-1:-1:-1;;;;;43701:16:0;;:9;:16;;;;;;;;;;;43627:51;;-1:-1:-1;43701:29:0;-1:-1:-1;43701:29:0;43693:69;;;;-1:-1:-1;;;43693:69:0;;;;;;;:::i;:::-;43777:17;43797:24;43809:11;43797;:24::i;:::-;43777:44;;43867:9;43844:21;:32;;43836:75;;;;-1:-1:-1;;;43836:75:0;;;;;;;:::i;:::-;43949:9;43926:20;43998:34;44028:3;43998:25;43949:9;43998:25;;;:16;:25::i;:34::-;43975:57;-1:-1:-1;44047:21:0;44071:27;43975:57;44071:12;:27;:::i;:::-;44144:9;;-1:-1:-1;44180:13:0;;-1:-1:-1;44047:51:0;;-1:-1:-1;44253:43:0;;-1:-1:-1;;;;;;44253:43:0;43397:921;43273:1071;43131:1213;;;;;;:::o;15332:110::-;15388:13;15427:7;15420:14;;;;;:::i;4027:168::-;;;;;;;;;;;;7003:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7003:45:0;-1:-1:-1;7003:45:0;:::o;16652:175::-;16738:4;16755:42;1029:10;16779:9;16790:6;16755:9;:42::i;46535:175::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46616:22:0;::::1;46608:65;;;;-1:-1:-1::0;;;46608:65:0::1;;;;;;;:::i;:::-;46684:9;:18:::0;;-1:-1:-1;;;;;;46684:18:0::1;-1:-1:-1::0;;;;;46684:18:0;;;::::1;::::0;;;::::1;::::0;;46535:175::o;25957:2155::-;26031:6;26018:9;:19;;26010:68;;;;-1:-1:-1;;;26010:68:0;;;;;;;:::i;:::-;26098:9;;-1:-1:-1;;;26098:9:0;;;;26097:10;26089:31;;;;-1:-1:-1;;;26089:31:0;;;;;;;:::i;:::-;26157:10;26131:17;26151;;;:5;:17;;;;;26187;;;;26179:54;;;;-1:-1:-1;;;26179:54:0;;15848:2:1;26179:54:0;;;15830:21:1;15887:2;15867:18;;;15860:30;-1:-1:-1;;;15906:18:1;;;15899:50;15966:18;;26179:54:0;15646:344:1;26179:54:0;26267:9;26244:20;26302:10;:8;:10::i;:::-;26287:25;-1:-1:-1;26323:19:0;26373:10;26287:25;26345:17;:12;26360:2;26345:17;:::i;:::-;:24;;;;:::i;:::-;:39;;;;:::i;:::-;26323:61;-1:-1:-1;26395:20:0;26438:3;26418:17;:12;26433:2;26418:17;:::i;:::-;:23;;;;:::i;:::-;26395:46;;26466:11;26452:4;:10;;;:25;;;;;;;:::i;:::-;;;;;;;;26507:12;26488:15;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;26530:14:0;:26;;;26567:17;;;:19;;;:17;:19;;;:::i;:::-;;;;;;26614:11;26597:13;;:28;;;;;;;:::i;:::-;;;;;;;;26653:12;26636:13;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;26682:13:0;;;;-1:-1:-1;;;;;26682:13:0;26676:20;;;;:5;:20;;;;;:34;;:50;;26714:12;;26676:20;:50;;26714:12;;26676:50;:::i;:::-;;;;;;;;26756:12;26737:15;;:31;;;;;;;:::i;:::-;;;;;;;;26803:12;26779:4;:20;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;;26830:20:0;;;;26852:8;-1:-1:-1;26827:388:0;;26932:10;26894:26;26923:20;;;:8;:20;;;;;26983;;;;26962:18;:41;;26923:20;;26983;;26962:18;;26894:26;26962:41;;26983:20;;26962:41;:::i;:::-;;;;-1:-1:-1;;27025:14:0;;;;;;27022:178;;27095:1;27083:8;;:13;;;;;;;:::i;:::-;;;;-1:-1:-1;;27136:7:0;;27117:18;;;;:26;;;;27164:14;;;:16;;-1:-1:-1;;27164:16:0;;;;;;27022:178;26875:340;26827:388;27225:30;27231:10;27243:11;27225:5;:30::i;:::-;27266:15;27284:14;27296:1;27284:11;:14::i;:::-;27318:10;27309:20;;;;:8;:20;;;;;;;;27335:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;27459:15;27335:150;;;;;;27309:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27538:13;;;27266:32;;-1:-1:-1;27309:20:0;27523:43;;-1:-1:-1;;;;;27538:13:0;27357:12;27523:14;:43::i;:::-;27501:65;-1:-1:-1;27581:20:0;27602:29;27627:3;27602:20;:12;27619:2;27602:16;:20::i;:29::-;27581:50;-1:-1:-1;27646:20:0;27667:24;27680:11;27581:50;27667:24;:::i;:::-;27732:7;;27706:18;27727:13;;;:4;:13;;;;;27646:45;;-1:-1:-1;27768:29:0;27793:3;27768:20;27646:45;27785:2;27768:16;:20::i;:29::-;27755:42;;27827:8;;27812:14;;;;:23;;;;27860:7;;:9;;;:::i;:::-;27850:7;:19;27888:15;;-1:-1:-1;;;;;27888:15:0;27880:57;27933:3;27914:16;:12;27929:1;27914:16;:::i;:::-;:22;;;;:::i;:::-;27880:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27948:10:0;;-1:-1:-1;;;;;27948:10:0;:43;27987:3;27968:16;:12;27983:1;27968:16;:::i;:::-;:22;;;;:::i;:::-;27948:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28010:9:0;;-1:-1:-1;;;;;28010:9:0;28002:52;28050:3;28030:17;:12;28045:2;28030:17;:::i;:::-;:23;;;;:::i;:::-;28002:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28070:34:0;;;28079:10;8361:51:1;;8443:2;8428:18;;8421:34;;;28070::0;;8334:18:1;28070:34:0;;;;;;;25999:2113;;;;;;;;;;25957:2155::o;7113:53::-;;;;;;;;;;;;;;;;;;;;8584:385;8648:9;;-1:-1:-1;;;;;8648:9:0;8659:10;8648:21;8645:314;;;-1:-1:-1;;;;;8709:15:0;;8689:17;8709:15;;;:5;:15;;;;;8749:17;;;;8746:177;;8825:23;8839:8;8825:13;:23::i;:::-;8879:21;8891:8;8879:11;:21::i;8645:314::-;8584:385;:::o;36631:535::-;-1:-1:-1;;;;;36800:12:0;;36692:18;36800:12;;;:5;:12;;;;;;;;36859:13;:20;;;;;36901;;;;;36692:18;;;;;36800:12;36941:24;36901:20;36964:1;36941:24;:::i;:::-;36932:33;;37040:12;:24;;;37014:12;:25;;;36987:12;:26;;;:52;;;;:::i;:::-;:77;;;;:::i;:::-;36976:88;-1:-1:-1;37083:18:0;36976:88;37083:7;:18;:::i;:::-;37075:26;;37112:46;;36631:535;;;;;:::o;47499:187::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47616:20:0;;::::1;47586:27;47616:20:::0;;;:10:::1;:20;::::0;;;;47649:29;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;47649:29:0;;::::1;::::0;;;::::1;::::0;;47499:187::o;46719:178::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;46802:22:0;::::1;46794:65;;;;-1:-1:-1::0;;;46794:65:0::1;;;;;;;:::i;:::-;46870:10;:19:::0;;-1:-1:-1;;;;;;46870:19:0::1;-1:-1:-1::0;;;;;46870:19:0;;;::::1;::::0;;;::::1;::::0;;46719:178::o;39530:2407::-;39598:10;39572:17;39592;;;:5;:17;;;;;;;;39656:13;:25;;;;;;39701:9;;-1:-1:-1;;;39701:9:0;;;;39700:10;39692:29;;;;-1:-1:-1;;;39692:29:0;;;;;;;:::i;:::-;39761:1;39740:4;:20;;;:22;39732:48;;;;-1:-1:-1;;;39732:48:0;;;;;;;:::i;:::-;39791:13;39807:4;:20;;;39830:1;39807:24;;;;:::i;:::-;39791:40;;39842:22;39918:12;:24;;;39892:12;:25;;;39865:12;:26;;;:52;;;;:::i;:::-;:77;;;;:::i;:::-;39842:100;;39967:14;39961:5;:20;39953:64;;;;-1:-1:-1;;;39953:64:0;;17413:2:1;39953:64:0;;;17395:21:1;17452:2;17432:18;;;17425:30;17491:33;17471:18;;;17464:61;17542:18;;39953:64:0;17211:355:1;39953:64:0;40047:10;40036:22;;;;:10;:22;;;;;:36;;;:39;40028:65;;;;-1:-1:-1;;;40028:65:0;;;;;;;:::i;:::-;40113:10;;-1:-1:-1;;;40113:10:0;;;;40112:11;40104:30;;;;-1:-1:-1;;;40104:30:0;;;;;;;:::i;:::-;40145:18;40202:1;40167:12;:34;;;:36;40166:122;;40262:10;40253:20;;;;:8;:20;;;;;:23;;:20;;;:23;;;;:::i;:::-;;;;;;;;;;;:35;;;40166:122;;;40242:9;;40205:12;:34;;;:46;;;;:::i;:::-;40145:143;;40326:10;40307:15;:29;;40299:67;;;;-1:-1:-1;;;40299:67:0;;;;;;;:::i;:::-;40419:17;;40469:10;;40392:3;;-1:-1:-1;;;40419:17:0;;;;;40377:12;;40469:29;;40392:3;;40469:20;;40392:3;40469:14;:20::i;:29::-;40527:10;40517:9;:21;;;;;;;;;;;40447:51;;-1:-1:-1;40517:34:0;-1:-1:-1;40517:34:0;40509:74;;;;-1:-1:-1;;;40509:74:0;;;;;;;:::i;:::-;40594:17;40614:24;40626:11;40614;:24::i;:::-;40594:44;;40649:15;40667:14;40679:1;40667:11;:14::i;:::-;40649:32;;40723:9;40700:21;:32;;40692:75;;;;-1:-1:-1;;;40692:75:0;;;;;;;:::i;:::-;40779:21;40802;40825:33;40841:9;40851:6;40825:15;:33::i;:::-;40880:10;40869:22;;;;:10;:22;;;;;:32;;:34;;40778:80;;-1:-1:-1;40778:80:0;;-1:-1:-1;40869:34:0;;;:::i;:::-;;;;;;40951:15;40914:12;:34;;:52;;;;41007:9;40977:12;:26;;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;41027:23:0;;41039:11;;41027:4;;:10;;:23;;41039:11;;41027:23;:::i;:::-;;;;;;;;41076:11;41061:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;41111:13:0;;:24;-1:-1:-1;41108:155:0;;41176:9;41161:13;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;41108:155:0;;-1:-1:-1;41108:155:0;;41250:1;41236:13;:15;41108:155;41292:9;41273:17;;:28;;;;;;;:::i;:::-;;;;-1:-1:-1;41312:12:0;;-1:-1:-1;41327:13:0;:11;:13::i;:::-;41359:10;41351:19;;;;:7;:19;;;;;;;;41376:129;;;;;;;;;;;41312:28;;-1:-1:-1;41376:129:0;;41423:19;41399:9;41312:28;41423:13;:19::i;:::-;41376:129;;;;;;;;;41479:15;41376:129;;;;;41351:155;;;;;;;;-1:-1:-1;41351:155:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;41519:30;41525:10;41537:11;41519:5;:30::i;:::-;41560:43;;41568:10;;41560:43;;;;;41589:13;;41560:43;;;;41589:13;41568:10;41560:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41614:21:0;41637:30;41663:3;41637:21;:13;41655:2;41637:17;:21::i;:30::-;41614:53;-1:-1:-1;41678:21:0;41701:32;:13;41614:53;41701:17;:32::i;:::-;41678:55;;41744:28;41758:13;41744;:28::i;:::-;41783:21;41806:15;41820:1;41806:13;:15;:::i;:::-;41840:10;;41832:43;;41783:38;;-1:-1:-1;;;;;;41840:10:0;;41832:43;;;;;41783:38;;41840:10;41832:43;41840:10;41832:43;41783:38;41840:10;41832:43;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41891:38:0;;;41904:10;8361:51:1;;8443:2;8428:18;;8421:34;;;41891:38:0;;8334:18:1;41891:38:0;;;;;;;39561:2376;;;;;;;;;;;;;;;;39530:2407::o;47297:190::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47416:20:0;;::::1;47386:27;47416:20:::0;;;:10:::1;:20;::::0;;;;47449:30;;::::1;::::0;;::::1;;;-1:-1:-1::0;;47449:30:0;;::::1;::::0;;;::::1;::::0;;47297:190::o;19897:119::-;19940:4;19962:10;19975;:8;:10::i;6951:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6951:45:0;;-1:-1:-1;6951:45:0;;;:::o;22379:3571::-;22471:6;22458:9;:19;;22450:68;;;;-1:-1:-1;;;22450:68:0;;;;;;;:::i;:::-;22542:9;;-1:-1:-1;;;22542:9:0;;;;22541:10;22533:31;;;;-1:-1:-1;;;22533:31:0;;;;;;;:::i;:::-;22605:10;22579:17;22599;;;:5;:17;;;;;22639;;;;:22;22631:52;;;;-1:-1:-1;;;22631:52:0;;18478:2:1;22631:52:0;;;18460:21:1;18517:2;18497:18;;;18490:30;-1:-1:-1;;;18536:18:1;;;18529:47;18593:18;;22631:52:0;18276:341:1;22631:52:0;-1:-1:-1;;;;;22702:15:0;;22733:1;22702:15;;;:5;:15;;;;;:28;;;:32;22698:155;;;;;22835:1;22816:21;;22698:155;22890:9;22867:20;22929:10;:8;:10::i;:::-;22914:25;-1:-1:-1;22954:19:0;23004:10;22914:25;22976:17;:12;22991:2;22976:17;:::i;:::-;:24;;;;:::i;:::-;:39;;;;:::i;:::-;22954:61;-1:-1:-1;23030:20:0;23073:3;23053:17;:12;23068:2;23053:17;:::i;:::-;:23;;;;:::i;:::-;23030:46;;23105:11;23091:4;:10;;;:25;;;;;;;:::i;:::-;;;;;;;;23150:12;23131:15;;:31;;;;;;;:::i;:::-;;;;-1:-1:-1;;23177:14:0;:26;;;23218:9;:26;;;;;;;;-1:-1:-1;23218:26:0;;;;;;;;;23233:10;-1:-1:-1;;;;;;23218:26:0;;;;;;;;23259:13;;;:24;;;;;-1:-1:-1;;;;;23259:24:0;;;;;;23320:48;;23259:24;23355:12;23320;:48::i;:::-;23298:70;-1:-1:-1;23383:20:0;23404:29;23429:3;23404:20;:12;23421:2;23404:16;:20::i;:29::-;23383:50;-1:-1:-1;23448:20:0;23469:24;23482:11;23383:50;23469:24;:::i;:::-;23534:7;;23508:18;23529:13;;;:4;:13;;;;;23448:45;;-1:-1:-1;23570:29:0;23595:3;23570:20;23448:45;23587:2;23570:16;:20::i;:29::-;23557:42;;23629:8;;23614:14;;;;:23;;;;23662:7;;:9;;;:::i;:::-;23652:7;:19;;;23686:17;;:19;;;:17;:19;;;:::i;:::-;;;;;;23737:11;23720:13;;:28;;;;;;;:::i;:::-;;;;;;;;23780:12;23763:13;;:29;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;23807:15:0;;;;;;:5;:15;;;;;:29;;:45;;23840:12;;23807:15;:45;;23840:12;;23807:45;:::i;:::-;;;;;;;;23886:12;23867:15;;:31;;;;;;;:::i;:::-;;;;;;;;23937:12;23913:4;:20;;;:36;;;;;;;:::i;:::-;;;;-1:-1:-1;23964:30:0;;-1:-1:-1;23970:10:0;23982:11;23964:5;:30::i;:::-;24009:15;24027:14;24039:1;24027:11;:14::i;:::-;24009:32;;24073:8;24059:12;:22;24056:1406;;24139:10;24101:26;24130:20;;;:8;:20;;;;;24169:14;;;:16;;-1:-1:-1;;24169:16:0;24184:1;24169:16;;;;;;24223:7;;:9;;;:::i;:::-;24204:18;;;;:28;;;;24262:8;;:10;;;:::i;:::-;24251:8;:21;24311:18;;:31;;24330:12;;24311:31;:::i;:::-;24291:18;:51;-1:-1:-1;;;;;24364:17:0;;;;;;:7;:17;;;;;:25;;;24361:1083;;-1:-1:-1;;;;;24434:17:0;;;;;;:7;:17;;;;;24463:15;24434:44;;;;24529:24;;24547:6;24529:24;:::i;:::-;-1:-1:-1;;;;;24502:17:0;;;;;;:7;:17;;;;;:25;;;;:51;;;;24576:29;;:32;;-1:-1:-1;;24630:26:0;;;;;;24361:1083;;;-1:-1:-1;;;;;24701:17:0;;;;;;:7;:17;;;;;:25;;;24729:15;-1:-1:-1;24698:746:0;;;-1:-1:-1;;;;;24785:17:0;;;;;;:7;:17;;;;;:29;;:33;;24817:1;;24785:17;:33;;24817:1;;24785:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24843:17:0;;-1:-1:-1;24843:17:0;;;:7;:17;;;;;:29;;;-1:-1:-1;24843:29:0;;:33;;-1:-1:-1;24843:65:0;;;;-1:-1:-1;;;;;;24881:17:0;;;;;;:7;:17;;;;;:24;;;;;;;;:27;24843:65;24840:226;;;-1:-1:-1;;;;;24955:17:0;;;;;;:7;:17;;;;;:29;;:37;;24986:6;;24955:17;:37;;24986:6;;24955:37;:::i;:::-;;;;-1:-1:-1;;;;;;;25017:17:0;;;;;;:7;:17;;;;;:24;;:26;;-1:-1:-1;;25017:26:0;;;;;24840:226;24698:746;;;-1:-1:-1;;;;;25112:17:0;;;;;;:7;:17;;;;;:25;;;25141:15;-1:-1:-1;25109:335:0;;-1:-1:-1;;;;;25198:17:0;;;;;;:7;:17;;;;;25227:15;25198:44;;;;25294:24;;25312:6;25294:24;:::i;:::-;-1:-1:-1;;;;;25267:17:0;;;;;;:7;:17;;;;;:25;;;;:51;;;;25342:29;;:32;;-1:-1:-1;;25397:26:0;;;;;;25109:335;24082:1380;24056:1406;25485:10;25476:20;;;;:8;:20;;;;;;;;25502:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;25646:15;25502:174;;;;;;25476:201;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25714:15;;-1:-1:-1;;;;;25714:15:0;;25706:57;;25759:3;;25740:16;;25528:12;;25740:16;:::i;:::-;:22;;;;:::i;:::-;25706:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25778:10:0;;-1:-1:-1;;;;;25778:10:0;:43;25817:3;25798:16;:12;25813:1;25798:16;:::i;:::-;:22;;;;:::i;:::-;25778:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25844:9:0;;-1:-1:-1;;;;;25844:9:0;25836:52;25884:3;25864:17;:12;25879:2;25864:17;:::i;:::-;:23;;;;:::i;:::-;25836:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25908:34:0;;;25917:10;8361:51:1;;8443:2;8428:18;;8421:34;;;25908::0;;8334:18:1;25908:34:0;;;;;;;22435:3515;;;;;;;;;;22379:3571;:::o;19574:313::-;19614:4;19656:16;19640:13;;:32;19636:244;;;19740:6;19726:13;;19724:1;:15;;;;:::i;:::-;:22;;;;:::i;:::-;19713:34;;19714:7;19713:34;:::i;:::-;19696:52;;:15;:52;:::i;:::-;19689:59;;19574:313;:::o;19636:244::-;19802:7;19786:13;;:24;;:82;;-1:-1:-1;19852:16:0;;;19574:313::o;19786:82::-;19838:13;;19811:16;;:26;;19829:7;19811:26;:::i;:::-;:40;;;;:::i;47699:190::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;47818:20:0;;::::1;47788:27;47818:20:::0;;;:10:::1;:20;::::0;;;;47851:30;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;47851:30:0;;::::1;::::0;;;::::1;::::0;;47699:190::o;32662:667::-;-1:-1:-1;;;;;32836:21:0;;32723:7;32836:21;;;:8;:21;;;;;;;;32888:5;:18;;;;;32928;;;;32778:4;;32836:21;32888:18;32723:7;;33011:273;33021:7;;33017:1;:11;33011:273;;;33046:22;33071:9;;;:6;:9;;;;;33155:19;;;;33106:20;;;;:69;;33155:19;33106:44;;33131:18;33106:24;:44::i;:69::-;33202:14;;33095:80;;-1:-1:-1;33202:52:0;;33235:18;;33202:28;;33095:80;33202:18;:28::i;:52::-;33190:64;;;;:::i;:::-;;-1:-1:-1;33269:3:0;;;;:::i;:::-;;;;33029:255;33011:273;;;33303:8;32662:667;-1:-1:-1;;;;;;;32662:667:0:o;44357:807::-;8113:9;;-1:-1:-1;;;;;8113:9:0;8099:10;:23;8091:57;;;;-1:-1:-1;;;8091:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;44437:22:0;::::1;44429:65;;;;-1:-1:-1::0;;;44429:65:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;44533:15:0;::::1;44513:17;44533:15:::0;;;:5:::1;:15;::::0;;;;44570:10;;44567:569:::1;;44628:20;::::0;::::1;::::0;:23;44625:472:::1;;44715:20;::::0;::::1;::::0;;44700:14:::1;44761:22:::0;;;44809:14:::1;::::0;::::1;:16:::0;;-1:-1:-1;;44809:16:0::1;::::0;;44860:8:::1;::::0;:10:::1;::::0;-1:-1:-1;;44860:10:0::1;:::i;:::-;44851:8;:19:::0;44915:18:::1;::::0;:25:::1;::::0;44934:6;;44915:25:::1;:::i;:::-;44896:18;:44:::0;-1:-1:-1;;;;;;;44995:18:0::1;44966:26;44995:18:::0;;;:8:::1;:18;::::0;;;;45060:7:::1;::::0;45039:18:::1;::::0;;::::1;:28:::0;44357:807::o;16295:346::-;-1:-1:-1;;;;;16397:19:0;;16389:68;;;;-1:-1:-1;;;16389:68:0;;17008:2:1;16389:68:0;;;16990:21:1;17047:2;17027:18;;;17020:30;17086:34;17066:18;;;17059:62;-1:-1:-1;;;17137:18:1;;;17130:34;17181:19;;16389:68:0;16806:400:1;16389:68:0;-1:-1:-1;;;;;16476:21:0;;16468:68;;;;-1:-1:-1;;;16468:68:0;;11439:2:1;16468:68:0;;;11421:21:1;11478:2;11458:18;;;11451:30;11517:34;11497:18;;;11490:62;-1:-1:-1;;;11568:18:1;;;11561:32;11610:19;;16468:68:0;11237:398:1;16468:68:0;-1:-1:-1;;;;;16549:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16601:32;;19128:25:1;;;16601:32:0;;19101:18:1;16601:32:0;;;;;;;16295:346;;;:::o;17247:821::-;-1:-1:-1;;;;;17353:20:0;;17345:70;;;;-1:-1:-1;;;17345:70:0;;16197:2:1;17345:70:0;;;16179:21:1;16236:2;16216:18;;;16209:30;16275:34;16255:18;;;16248:62;-1:-1:-1;;;16326:18:1;;;16319:35;16371:19;;17345:70:0;15995:401:1;17345:70:0;-1:-1:-1;;;;;17434:23:0;;17426:71;;;;-1:-1:-1;;;17426:71:0;;10277:2:1;17426:71:0;;;10259:21:1;10316:2;10296:18;;;10289:30;10355:34;10335:18;;;10328:62;-1:-1:-1;;;10406:18:1;;;10399:33;10449:19;;17426:71:0;10075:399:1;17426:71:0;17517:10;;-1:-1:-1;;;17517:10:0;;;;17516:11;17508:44;;;;-1:-1:-1;;;17508:44:0;;13636:2:1;17508:44:0;;;13618:21:1;13675:2;13655:18;;;13648:30;-1:-1:-1;;;13694:18:1;;;13687:50;13754:18;;17508:44:0;13434:344:1;17508:44:0;-1:-1:-1;;;;;17649:17:0;;17625:21;17649:17;;;;;;;;;;;17685:23;;;;17677:74;;;;-1:-1:-1;;;17677:74:0;;12539:2:1;17677:74:0;;;12521:21:1;12578:2;12558:18;;;12551:30;12617:34;12597:18;;;12590:62;-1:-1:-1;;;12668:18:1;;;12661:36;12714:19;;17677:74:0;12337:402:1;17677:74:0;17782:22;17798:6;17782:13;:22;:::i;:::-;-1:-1:-1;;;;;17762:17:0;;;:9;:17;;;;;;;;;;;:42;;;;17815:20;;;;;;;;:30;;17839:6;;17762:9;17815:30;;17839:6;;17815:30;:::i;:::-;;;;-1:-1:-1;;;;;;;17876:13:0;;17856:17;17876:13;;;:5;:13;;;;;17900:20;;17876:13;;17914:6;;17876:13;;17856:17;17900:20;;17914:6;;17900:20;:::i;:::-;;;;-1:-1:-1;;;;;;;17952:16:0;;17931:18;17952:16;;;:5;:16;;;;;17979:21;;17952:16;;17994:6;;17952:16;;17931:18;17979:21;;17994:6;;17979:21;:::i;:::-;;;;;;;;18042:9;-1:-1:-1;;;;;18025:35:0;18034:6;-1:-1:-1;;;;;18025:35:0;;18053:6;18025:35;;;;19128:25:1;;19116:2;19101:18;;18982:177;18025:35:0;;;;;;;;17334:734;;;17247:821;;;:::o;1200:187::-;1258:7;1282:6;1278:25;;-1:-1:-1;1299:1:0;1292:8;;1278:25;1313:9;1325:5;1329:1;1325;:5;:::i;:::-;1313:17;-1:-1:-1;1358:1:0;1349:5;1353:1;1313:17;1349:5;:::i;:::-;:10;1341:19;;;;;32442:208;-1:-1:-1;;;;;32513:12:0;;32493:17;32513:12;;;:5;:12;;;;;32540:14;;;;;;:17;32537:103;;32583:31;32596:17;32607:5;32596:10;:17::i;:::-;32583:8;;;;;:12;:31::i;:::-;32573:8;;;:41;32482:168;32442:208;:::o;1546:148::-;1604:7;1637:1;1632;:6;;1624:15;;;;;;1650:9;1662:5;1666:1;1662;:5;:::i;1393:147::-;1451:7;1483:1;1479;:5;1471:14;;;;;;1496:9;1508:5;1512:1;1508;:5;:::i;41946:411::-;42021:7;42029;42049:24;42076:9;42049:36;;42113:16;42096:15;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;42163:9:0;;-1:-1:-1;42140:20:0;42206:33;42235:3;42206:24;42163:9;42206:24;;;:16;:24::i;:33::-;42183:56;-1:-1:-1;42250:21:0;42274:27;42183:56;42274:12;:27;:::i;:::-;42319:13;;;;-1:-1:-1;41946:411:0;;-1:-1:-1;;;;;;41946:411:0:o;18185:401::-;-1:-1:-1;;;;;18274:21:0;;18266:67;;;;-1:-1:-1;;;18266:67:0;;15087:2:1;18266:67:0;;;15069:21:1;15126:2;15106:18;;;15099:30;15165:34;15145:18;;;15138:62;-1:-1:-1;;;15216:18:1;;;15209:31;15257:19;;18266:67:0;14885:397:1;18266:67:0;-1:-1:-1;;;;;18371:18:0;;18346:22;18371:18;;;;;;;;;;;18408:24;;;;18400:71;;;;-1:-1:-1;;;18400:71:0;;10681:2:1;18400:71:0;;;10663:21:1;10720:2;10700:18;;;10693:30;10759:34;10739:18;;;10732:62;-1:-1:-1;;;10810:18:1;;;10803:32;10852:19;;18400:71:0;10479:398:1;18400:71:0;18512:23;18529:6;18512:14;:23;:::i;:::-;-1:-1:-1;;;;;18491:18:0;;:9;:18;;;;;;;;;;:44;;;;18556:12;:22;;18572:6;;18491:9;18556:22;;18572:6;;18556:22;:::i;:::-;;;;-1:-1:-1;;;;;18185:401:0:o;42365:251::-;42467:7;;42435:22;42460:15;;;:6;:15;;;;;;42501:9;;42509:1;42501:9;:::i;:::-;42491:7;:19;42526:28;;;42590:18;;42570:19;;;;:38;42365:251::o;33353:245::-;-1:-1:-1;;;;;33434:15:0;;33405:26;33434:15;;;:8;:15;;;;;33464:21;;;;;;;:24;33461:127;;;33522:40;33543:18;33555:5;33543:11;:18::i;1700:148::-;1758:7;;1790:5;1794:1;1790;:5;:::i;:::-;1778:17;;1819:1;1814;:6;;1806:15;;;;;16998:241;-1:-1:-1;;;;;17088:21:0;;17080:65;;;;-1:-1:-1;;;17080:65:0;;18824:2:1;17080:65:0;;;18806:21:1;18863:2;18843:18;;;18836:30;18902:33;18882:18;;;18875:61;18953:18;;17080:65:0;18622:355:1;17080:65:0;17174:6;17158:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;17191:18:0;;:9;:18;;;;;;;;;;:28;;17213:6;;17191:9;:28;;17213:6;;17191:28;:::i;:::-;;;;-1:-1:-1;;;;16998:241:0:o;28127:1602::-;28204:7;;-1:-1:-1;;;;;28263:23:0;;;28259:1443;;28427:14;:21;28322:9;;28299:20;;;;;28480:1215;28491:11;28487:1;:15;;;28480:1215;;;-1:-1:-1;;;;;28556:19:0;;28528:25;28556:19;;;:5;:19;;;;;;;;28590:35;;;;;:32;;;:35;;;;;:46;;28556:19;;28629:7;;28590:46;;28629:7;;28590:46;:::i;:::-;;;;;;;;28678:7;28651:12;:25;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;28718:14:0;:17;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;28764:39:0;28797:5;28764:28;:7;28718:17;28764:11;:28::i;:39::-;28750:53;;28874:12;28887:1;28874:15;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28835:35;;;;;:32;;;:35;;;;;;;;:54;28831:713;;28910:27;;;;;;;:24;;;:27;;;;;:42;;28941:11;;28910:27;:42;;28941:11;;28910:42;:::i;:::-;;;;;;;;28998:11;28971:12;:23;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;29028:19:0;;-1:-1:-1;29036:11:0;29028:19;;:::i;:::-;-1:-1:-1;;;;;29095:22:0;;29066:26;29095:22;;;:8;:22;;;;;29140:21;;;;29028:19;;-1:-1:-1;29095:22:0;29140:21;;29137:389;;29214:11;29228:38;29253:12;29228:24;:38::i;:::-;29213:53;;29295:6;29292:211;;;29355:21;;;:23;;-1:-1:-1;;29355:23:0;29377:1;29355:23;;;;;;29422:7;;29406:23;;29466:8;;:10;;;:::i;:::-;29457:8;:19;29292:211;29187:339;29137:389;28891:653;28831:713;-1:-1:-1;;;;;29586:19:0;;;;;;;:5;:19;;;;;:28;;;;;;;29632:26;29629:36;;29660:5;;;29629:36;29680:3;;;;:::i;:::-;;;;28513:1182;28480:1215;;;28288:1414;;;;;29716:6;-1:-1:-1;28127:1602:0;;;;:::o;8977:1292::-;9259:12;;:28;;-1:-1:-1;;;9259:28:0;;-1:-1:-1;;;;;8143:32:1;;;9259:28:0;;;8125:51:1;9048:13:0;;;;;;;;;;;;;;;;;;;;;;9259:12;;;:18;;8098::1;;9259:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9047:240;;;;;;;;;;;;;;;;;;;;;;9308:17;9328:5;:15;9334:8;-1:-1:-1;;;;;9328:15:0;-1:-1:-1;;;;;9328:15:0;;;;;;;;;;;;9308:35;;9375:5;9362:4;:10;;:18;;;;9415:8;9399:4;:13;;;:24;;;;;-1:-1:-1;;;;;9399:24:0;;;;;-1:-1:-1;;;;;9399:24:0;;;;;;9453:4;9442;:8;;:15;;;;9487:1;9476:4;:8;;:12;;;;9522:9;9507:4;:14;;;:24;;;;;;;;;;;;;;;;;;9553:9;:12;;9564:1;9553:12;9550:176;;;9646:16;9627:18;;:35;;;;:::i;:::-;9607:18;:55;9696:8;;:10;;9705:1;9696:10;:::i;:::-;9685:8;:21;9550:176;9744:15;;;:27;;;9790:20;;;;:39;;;9848:17;;;:30;;;9897:18;;;:34;;;9950:17;;;:32;;;10001:15;;;:28;;;10048:24;;;;;;;-1:-1:-1;10048:24:0;;;;;;;;-1:-1:-1;;;;;;10048:24:0;-1:-1:-1;;;;;10048:24:0;;;;;10091:39;10048:24;9848:30;10091:16;:39::i;:::-;10149:23;10163:8;10149:13;:23::i;:::-;10191:24;10206:8;10191:14;:24::i;:::-;10234:21;10240:8;10249:5;10234;:21::i;:::-;9027:1242;;;;;;;;;;;;8977:1292;:::o;10273:541::-;10428:12;;:31;;-1:-1:-1;;;10428:31:0;;-1:-1:-1;;;;;8143:32:1;;;10428:31:0;;;8125:51:1;10347:22:0;;;;;;10428:12;;;;:21;;8098:18:1;;10428:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10510:15:0;;10488:19;10510:15;;;:5;:15;;;;;10346:113;;-1:-1:-1;10346:113:0;;-1:-1:-1;10346:113:0;-1:-1:-1;10552:249:0;10573:1;10569;:5;;;10552:249;;;10635:4;10640:1;10635:7;;;;;;;;;:::i;:::-;;;;;;;;;;10608:24;;;;;;;:21;;;:24;;;;;;;:34;10701:9;;:12;;;;;;;:::i;:::-;;;;;;;;;;10669:29;;;;;;;:26;;;:29;;;;;;;:44;10764:6;;:9;;;;;;;:::i;:::-;;;;;;;;;;10740:21;;;;;;;:18;;;:21;;;;;;;:33;10759:1;10576:3;10759:1;10576:3;:::i;:::-;;;;10552:249;;;;10325:489;;;;10273:541;:::o;20028:1879::-;-1:-1:-1;;;;;20177:12:0;;;20118:7;20177:12;;;:5;:12;;;;;:21;;;20118:7;;;;20177:21;:35;20173:1702;;20380:14;:21;20262:9;;20239:20;;;;;20454:1410;20465:11;20461:1;:15;;;20454:1410;;;-1:-1:-1;;;;;20538:19:0;;20510:25;20538:19;;;:5;:19;;;;;;;;20576:35;;;;;:32;;;:35;;;;;:46;;20538:19;;20615:7;;20576:46;;20615:7;;20576:46;:::i;:::-;;;;-1:-1:-1;;20641:30:0;;;;;;;:27;;;:30;;;;;:32;;;;;;:::i;:::-;;;;-1:-1:-1;;20710:23:0;;;:25;;;:23;:25;;;:::i;:::-;;;;;;20781:7;20754:12;:25;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20827:14:0;:17;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;20877:39:0;20910:5;20877:28;:7;20827:17;20877:11;:28::i;:39::-;20863:53;;20992:12;21005:1;20992:15;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;20953:35;;;;;:32;;;:35;;;;;;;;:54;20949:739;;21032:27;;;;;;;:24;;;:27;;;;;:42;;21063:11;;21032:27;:42;;21063:11;;21032:42;:::i;:::-;;;;;;;;21124:11;21097:12;:23;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;21158:19:0;;-1:-1:-1;21166:11:0;21158:19;;:::i;:::-;-1:-1:-1;;;;;21229:22:0;;21200:26;21229:22;;;:8;:22;;;;;21277:21;;;;21158:19;;-1:-1:-1;21229:22:0;21277:21;;21274:388;;21351:11;21365:38;21390:12;21365:24;:38::i;:::-;21350:53;;21432:6;21429:210;;;21491:21;;;:23;;-1:-1:-1;;21491:23:0;21513:1;21491:23;;;;;;21557:7;;:9;;;:::i;:::-;21541:25;;21602:8;;:10;;21611:1;21602:10;:::i;:::-;21593:8;:19;21429:210;21324:338;21274:388;21009:679;20949:739;-1:-1:-1;;;;;21743:19:0;;;;;;;:5;:19;;;;;:28;;;;;;;21793:26;21790:36;;21821:5;;;21790:36;21845:3;;;;:::i;:::-;;;;20491:1373;20454:1410;;;20224:1651;;;;;20173:1702;21893:6;20028:1879;-1:-1:-1;;;;20028:1879:0:o;21919:454::-;-1:-1:-1;;;;;22038:18:0;;21996:4;22038:18;;;:5;:18;;;;;22125:14;:21;21996:4;;;22156:170;22178:11;22174:1;:15;;;22156:170;;;22252:12;22265:1;22252:15;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;22221:27;;;;;:24;;;:27;;;;;;;;:46;22217:98;;22284:17;;;;:::i;:::-;;;;22217:98;22191:3;;;;:::i;:::-;;;;22156:170;;;-1:-1:-1;;22362:2:0;-1:-1:-1;22343:21:0;;21919:454;-1:-1:-1;;;21919:454:0:o;11885:656::-;11986:7;11982:548;12003:13;11999:1;:17;;;11982:548;;;12140:12;;:33;;-1:-1:-1;;;12140:33:0;;-1:-1:-1;;;;;8656:32:1;;;12140:33:0;;;8638:51:1;8737:4;8725:17;;8705:18;;;8698:45;12045:14:0;;;;;;;;;;12140:12;;;:21;;8611:18:1;;12140:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12202:18:0;;;;;;:8;:18;;;;;;;;12226:256;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12202:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12018:3:0;;-1:-1:-1;12018:3:0;;-1:-1:-1;12018:3:0;;-1:-1:-1;12018:3:0;;-1:-1:-1;12018:3:0:i;:::-;;;;11982:548;;10826:1045;10997:12;;:36;;-1:-1:-1;;;10997:36:0;;-1:-1:-1;;;;;8143:32:1;;;10997:36:0;;;8125:51:1;10893:21:0;;;;;;;;10997:12;;:26;;8098:18:1;;10997:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11084:23:0;;11048:33;11084:23;;;:13;:23;;;;;11122:41;;;11178:24;;;:28;;;11221:26;;;:42;;;11278:34;;;:58;;;11351:13;:29;;10891:142;;-1:-1:-1;10891:142:0;;-1:-1:-1;10891:142:0;;-1:-1:-1;10891:142:0;;-1:-1:-1;11084:23:0;;10891:142;;11351:13;11048:33;11351:29;;10891:142;;11351:29;:::i;:::-;;;;;;;;11414:12;11395:16;;:31;;;;;;;:::i;:::-;;;;;;;;11461:14;11441:17;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;11558:12:0;;:33;;-1:-1:-1;;;11558:33:0;;-1:-1:-1;;;;;8143:32:1;;;11558:33:0;;;8125:51:1;11494:20:0;;;;;;11558:12;;;;:23;;8098:18:1;;11558:33:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11636:20:0;;11606:27;11636:20;;;:10;:20;;;;;11671:25;;;11711:19;;;:32;;;11758:18;;;:22;;;;11492:99;;-1:-1:-1;11492:99:0;;-1:-1:-1;11492:99:0;-1:-1:-1;11809:37:0;11647:8;11492:99;11809:16;:37::i;:::-;10876:995;;;;;;;;;10826:1045;:::o;12549:386::-;12674:12;;:34;;-1:-1:-1;;;12674:34:0;;-1:-1:-1;;;;;8143:32:1;;;12674:34:0;;;8125:51:1;12609:20:0;;;;;;12674:12;;;;:23;;8098:18:1;;12674:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12759:21:0;;;12729:27;12759:21;;;:10;:21;;;;;12791:38;;;12889:36;;;;;-1:-1:-1;;12840:38:0;;;12791;12840;-1:-1:-1;;12840:38:0;;;12791;;;;12840;;;;;;;;12889:36;;;;;-1:-1:-1;;;12549:386:0:o;12944:654::-;13042:7;13038:549;13059:10;13055:1;:14;;;13038:549;;;13174:12;;:32;;-1:-1:-1;;;13174:32:0;;-1:-1:-1;;;;;8656:32:1;;;13174::0;;;8638:51:1;8737:4;8725:17;;8705:18;;;8698:45;13098:14:0;;;;;;;;13174:12;;:20;;8611:18:1;;13174:32:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;13225:17:0;;;;;;:7;:17;;;;;;;13248:293;;;;;;;;;;;;;;;;;;;;;;;;;;;;13225:317;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13071:3:0;;-1:-1:-1;13071:3:0;;-1:-1:-1;13071:3:0;;-1:-1:-1;13071:3:0;:::i;:::-;;;;13038:549;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:805:1:-;75:5;128:3;121:4;113:6;109:17;105:27;95:55;;146:1;143;136:12;95:55;179:2;173:9;201:3;243:2;235:6;231:15;312:6;300:10;297:22;276:18;264:10;261:34;258:62;255:185;;;362:10;357:3;353:20;350:1;343:31;397:4;394:1;387:15;425:4;422:1;415:15;255:185;456:2;449:22;491:6;517;538:15;;;535:24;-1:-1:-1;532:44:1;;;572:1;569;562:12;532:44;594:1;585:10;;604:185;618:4;615:1;612:11;604:185;;;677:10;;665:23;;638:1;631:9;;;;;711:4;735:12;;;;767;604:185;;;-1:-1:-1;807:6:1;;14:805;-1:-1:-1;;;;;14:805:1:o;824:247::-;883:6;936:2;924:9;915:7;911:23;907:32;904:52;;;952:1;949;942:12;904:52;991:9;978:23;1010:31;1035:5;1010:31;:::i;1076:323::-;1152:6;1160;1213:2;1201:9;1192:7;1188:23;1184:32;1181:52;;;1229:1;1226;1219:12;1181:52;1268:9;1255:23;1287:31;1312:5;1287:31;:::i;:::-;1337:5;1389:2;1374:18;;;;1361:32;;-1:-1:-1;;;1076:323:1:o;1404:388::-;1472:6;1480;1533:2;1521:9;1512:7;1508:23;1504:32;1501:52;;;1549:1;1546;1539:12;1501:52;1588:9;1575:23;1607:31;1632:5;1607:31;:::i;:::-;1657:5;-1:-1:-1;1714:2:1;1699:18;;1686:32;1727:33;1686:32;1727:33;:::i;:::-;1779:7;1769:17;;;1404:388;;;;;:::o;1797:456::-;1874:6;1882;1890;1943:2;1931:9;1922:7;1918:23;1914:32;1911:52;;;1959:1;1956;1949:12;1911:52;1998:9;1985:23;2017:31;2042:5;2017:31;:::i;:::-;2067:5;-1:-1:-1;2124:2:1;2109:18;;2096:32;2137:33;2096:32;2137:33;:::i;:::-;1797:456;;2189:7;;-1:-1:-1;;;2243:2:1;2228:18;;;;2215:32;;1797:456::o;2578:384::-;2644:6;2652;2705:2;2693:9;2684:7;2680:23;2676:32;2673:52;;;2721:1;2718;2711:12;2673:52;2760:9;2747:23;2779:31;2804:5;2779:31;:::i;:::-;2829:5;-1:-1:-1;2886:2:1;2871:18;;2858:32;2899:31;2858:32;2899:31;:::i;2967:495::-;3124:6;3132;3140;3193:3;3181:9;3172:7;3168:23;3164:33;3161:53;;;3210:1;3207;3200:12;3161:53;3233:55;3280:7;3269:9;3233:55;:::i;:::-;3223:65;;3307;3364:7;3358:3;3347:9;3343:19;3307:65;:::i;:::-;3297:75;;3391:65;3448:7;3442:3;3431:9;3427:19;3391:65;:::i;:::-;3381:75;;2967:495;;;;;:::o;3467:273::-;3523:6;3576:2;3564:9;3555:7;3551:23;3547:32;3544:52;;;3592:1;3589;3582:12;3544:52;3631:9;3618:23;3684:5;3677:13;3670:21;3663:5;3660:32;3650:60;;3706:1;3703;3696:12;3745:180;3804:6;3857:2;3845:9;3836:7;3832:23;3828:32;3825:52;;;3873:1;3870;3863:12;3825:52;-1:-1:-1;3896:23:1;;3745:180;-1:-1:-1;3745:180:1:o;3930:315::-;3998:6;4006;4059:2;4047:9;4038:7;4034:23;4030:32;4027:52;;;4075:1;4072;4065:12;4027:52;4111:9;4098:23;4088:33;;4171:2;4160:9;4156:18;4143:32;4184:31;4209:5;4184:31;:::i;4250:940::-;4408:6;4416;4424;4432;4440;4448;4456;4464;4472;4480;4488:7;4542:3;4530:9;4521:7;4517:23;4513:33;4510:53;;;4559:1;4556;4549:12;4510:53;4588:9;4582:16;4572:26;;4641:2;4630:9;4626:18;4620:25;4654:31;4679:5;4654:31;:::i;:::-;4704:5;4694:15;;;4749:2;4738:9;4734:18;4728:25;4718:35;;4793:2;4782:9;4778:18;4772:25;4762:35;;4842:3;4831:9;4827:19;4821:26;4856:31;4879:7;4856:31;:::i;:::-;4906:7;4896:17;;;4953:3;4942:9;4938:19;4932:26;4922:36;;4998:3;4987:9;4983:19;4977:26;4967:36;;5043:3;5032:9;5028:19;5022:26;5012:36;;5088:3;5077:9;5073:19;5067:26;5057:36;;5133:3;5122:9;5118:19;5112:26;5102:36;;5179:3;5168:9;5164:19;5158:26;5147:37;;4250:940;;;;;;;;;;;;;;:::o;5195:248::-;5263:6;5271;5324:2;5312:9;5303:7;5299:23;5295:32;5292:52;;;5340:1;5337;5330:12;5292:52;-1:-1:-1;;5363:23:1;;;5433:2;5418:18;;;5405:32;;-1:-1:-1;5195:248:1:o;5448:316::-;5525:6;5533;5541;5594:2;5582:9;5573:7;5569:23;5565:32;5562:52;;;5610:1;5607;5600:12;5562:52;-1:-1:-1;;5633:23:1;;;5703:2;5688:18;;5675:32;;-1:-1:-1;5754:2:1;5739:18;;;5726:32;;5448:316;-1:-1:-1;5448:316:1:o;5769:306::-;5857:6;5865;5873;5926:2;5914:9;5905:7;5901:23;5897:32;5894:52;;;5942:1;5939;5932:12;5894:52;5971:9;5965:16;5955:26;;6021:2;6010:9;6006:18;6000:25;5990:35;;6065:2;6054:9;6050:18;6044:25;6034:35;;5769:306;;;;;:::o;6080:368::-;6177:6;6185;6193;6201;6254:3;6242:9;6233:7;6229:23;6225:33;6222:53;;;6271:1;6268;6261:12;6222:53;-1:-1:-1;;6294:16:1;;6350:2;6335:18;;6329:25;6394:2;6379:18;;6373:25;6438:2;6423:18;;;6417:25;6294:16;;6329:25;;-1:-1:-1;6417:25:1;;-1:-1:-1;6080:368:1;-1:-1:-1;6080:368:1:o;6453:430::-;6559:6;6567;6575;6583;6591;6644:3;6632:9;6623:7;6619:23;6615:33;6612:53;;;6661:1;6658;6651:12;6612:53;-1:-1:-1;;6684:16:1;;6740:2;6725:18;;6719:25;6784:2;6769:18;;6763:25;6828:2;6813:18;;6807:25;6872:3;6857:19;;;6851:26;6684:16;;6719:25;;-1:-1:-1;6763:25:1;6807;-1:-1:-1;6851:26:1;;-1:-1:-1;6453:430:1;-1:-1:-1;6453:430:1:o;6888:243::-;6945:6;6998:2;6986:9;6977:7;6973:23;6969:32;6966:52;;;7014:1;7011;7004:12;6966:52;7053:9;7040:23;7072:29;7095:5;7072:29;:::i;7136:507::-;7218:6;7226;7234;7287:2;7275:9;7266:7;7262:23;7258:32;7255:52;;;7303:1;7300;7293:12;7255:52;7335:9;7329:16;7354:29;7377:5;7354:29;:::i;:::-;7452:2;7437:18;;7431:25;7402:5;;-1:-1:-1;7465:31:1;7431:25;7465:31;:::i;:::-;7567:2;7552:18;;7546:25;7515:7;;-1:-1:-1;7580:31:1;7546:25;7580:31;:::i;:::-;7630:7;7620:17;;;7136:507;;;;;:::o;7648:326::-;7741:5;7764:1;7774:194;7788:4;7785:1;7782:11;7774:194;;;7847:13;;7835:26;;7884:4;7908:12;;;;7943:15;;;;7808:1;7801:9;7774:194;;;7778:3;;7648:326;;:::o;8754:522::-;9088:4;9073:20;;9102:43;9077:9;9127:6;9102:43;:::i;:::-;9154:53;9202:3;9191:9;9187:19;9179:6;9154:53;:::i;:::-;9216:54;9264:4;9253:9;9249:20;9241:6;9216:54;:::i;9473:597::-;9585:4;9614:2;9643;9632:9;9625:21;9675:6;9669:13;9718:6;9713:2;9702:9;9698:18;9691:34;9743:1;9753:140;9767:6;9764:1;9761:13;9753:140;;;9862:14;;;9858:23;;9852:30;9828:17;;;9847:2;9824:26;9817:66;9782:10;;9753:140;;;9911:6;9908:1;9905:13;9902:91;;;9981:1;9976:2;9967:6;9956:9;9952:22;9948:31;9941:42;9902:91;-1:-1:-1;10054:2:1;10033:15;-1:-1:-1;;10029:29:1;10014:45;;;;10061:2;10010:54;;9473:597;-1:-1:-1;;;9473:597:1:o;10882:350::-;11084:2;11066:21;;;11123:2;11103:18;;;11096:30;11162:28;11157:2;11142:18;;11135:56;11223:2;11208:18;;10882:350::o;12001:331::-;12203:2;12185:21;;;12242:1;12222:18;;;12215:29;-1:-1:-1;;;12275:2:1;12260:18;;12253:38;12323:2;12308:18;;12001:331::o;12744:329::-;12946:2;12928:21;;;12985:1;12965:18;;;12958:29;-1:-1:-1;;;13018:2:1;13003:18;;12996:36;13064:2;13049:18;;12744:329::o;13078:351::-;13280:2;13262:21;;;13319:2;13299:18;;;13292:30;13358:29;13353:2;13338:18;;13331:57;13420:2;13405:18;;13078:351::o;14192:337::-;14394:2;14376:21;;;14433:2;14413:18;;;14406:30;-1:-1:-1;;;14467:2:1;14452:18;;14445:43;14520:2;14505:18;;14192:337::o;14534:346::-;14736:2;14718:21;;;14775:2;14755:18;;;14748:30;-1:-1:-1;;;14809:2:1;14794:18;;14787:52;14871:2;14856:18;;14534:346::o;15287:354::-;15489:2;15471:21;;;15528:2;15508:18;;;15501:30;15567:32;15562:2;15547:18;;15540:60;15632:2;15617:18;;15287:354::o;16401:400::-;16603:2;16585:21;;;16642:2;16622:18;;;16615:30;16681:34;16676:2;16661:18;;16654:62;-1:-1:-1;;;16747:2:1;16732:18;;16725:34;16791:3;16776:19;;16401:400::o;17571:354::-;17773:2;17755:21;;;17812:2;17792:18;;;17785:30;17851:32;17846:2;17831:18;;17824:60;17916:2;17901:18;;17571:354::o;17930:341::-;18132:2;18114:21;;;18171:2;18151:18;;;18144:30;-1:-1:-1;;;18205:2:1;18190:18;;18183:47;18262:2;18247:18;;17930:341::o;24700:128::-;24740:3;24771:1;24767:6;24764:1;24761:13;24758:39;;;24777:18;;:::i;:::-;-1:-1:-1;24813:9:1;;24700:128::o;24833:204::-;24871:3;24907:4;24904:1;24900:12;24939:4;24936:1;24932:12;24974:3;24968:4;24964:14;24959:3;24956:23;24953:49;;;24982:18;;:::i;:::-;25018:13;;24833:204;-1:-1:-1;;;24833:204:1:o;25042:217::-;25082:1;25108;25098:132;;25152:10;25147:3;25143:20;25140:1;25133:31;25187:4;25184:1;25177:15;25215:4;25212:1;25205:15;25098:132;-1:-1:-1;25244:9:1;;25042:217::o;25264:168::-;25304:7;25370:1;25366;25362:6;25358:14;25355:1;25352:21;25347:1;25340:9;25333:17;25329:45;25326:71;;;25377:18;;:::i;:::-;-1:-1:-1;25417:9:1;;25264:168::o;25437:125::-;25477:4;25505:1;25502;25499:8;25496:34;;;25510:18;;:::i;:::-;-1:-1:-1;25547:9:1;;25437:125::o;25567:380::-;25646:1;25642:12;;;;25689;;;25710:61;;25764:4;25756:6;25752:17;25742:27;;25710:61;25817:2;25809:6;25806:14;25786:18;25783:38;25780:161;;;25863:10;25858:3;25854:20;25851:1;25844:31;25898:4;25895:1;25888:15;25926:4;25923:1;25916:15;25780:161;;25567:380;;;:::o;25952:135::-;25991:3;-1:-1:-1;;26012:17:1;;26009:43;;;26032:18;;:::i;:::-;-1:-1:-1;26079:1:1;26068:13;;25952:135::o;26092:175::-;26129:3;26173:4;26166:5;26162:16;26202:4;26193:7;26190:17;26187:43;;;26210:18;;:::i;:::-;26259:1;26246:15;;26092:175;-1:-1:-1;;26092:175:1:o;26272:127::-;26333:10;26328:3;26324:20;26321:1;26314:31;26364:4;26361:1;26354:15;26388:4;26385:1;26378:15;26404:127;26465:10;26460:3;26456:20;26453:1;26446:31;26496:4;26493:1;26486:15;26520:4;26517:1;26510:15;26536:131;-1:-1:-1;;;;;26611:31:1;;26601:42;;26591:70;;26657:1;26654;26647:12;26672:114;26756:4;26749:5;26745:16;26738:5;26735:27;26725:55;;26776:1;26773;26766:12

Swarm Source

ipfs://0149e5cea860bd50564542a6e0b9c0cba8385a7b566482d95e2c5cd6ed65f24a

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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