Contract 0x92e82497d42Acbd036D7F7328981eCA47cC6f045 2

 
 
Txn Hash
Method
Block
From
To
Value
0x69ed04c81f14111822426b183fc22cb7a928d19a5b063b37f86efa8903a60b6dClaim(pending)2023-01-16 12:38:0711 days 15 hrs ago0x9f956dffdf076607c397dee857ad2cf430bed251 IN 0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether(Pending)(Pending)
0xd90c3a9f77d3abdff200eb3f9748f1ff8763bff893342a66ba613be190086a28Claim(pending)2023-01-16 12:38:0711 days 15 hrs ago0x9f956dffdf076607c397dee857ad2cf430bed251 IN 0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether(Pending)(Pending)
0xd0d68ea13b10a579d20a6e6403b6b0e25aba02abed76b439db5239ee101182a1Claim(pending)2023-01-12 7:03:1615 days 20 hrs ago0x9f956dffdf076607c397dee857ad2cf430bed251 IN 0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether(Pending)(Pending)
0x01cb737ef117c71ec750fc82583c22670d1b3c0f2944086b67ca8a1e413ee828Claim164844102023-01-25 14:24:232 days 13 hrs agoENS Name razawallet.eth IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00263697 17.49420122
0xa857ca298c792e5afcd0e008f31629150a4d5879d48e23bb7cfdfcb5074968a8Claim164806202023-01-25 1:41:473 days 2 hrs ago0xd0d0292f3364fe6eeb2dbba95df8d751a821b049 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00338134 17.906036
0xb2c41d29a280f5768f9ce1e5412744b6d91c5d7958d8736a1f8335754830da64Claim164745752023-01-24 5:27:113 days 22 hrs ago0xfc1a3b1adc32d16b5fcddc270b524a0f09e66fb9 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.001914 13.91718378
0x60e9efc04e48f21fde3e581a1d8ee6c59c9d215089007091f0664d1a8c5ff44aClaim164745732023-01-24 5:26:473 days 22 hrs ago0x31156f0537db092cc7eb8cba35448ab44347ef7d IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.0025629 14.92334141
0xf3baa335e84e78c11f4132ababe025b88596d72bc8de817c91934f7a44ba759dClaim164743872023-01-24 4:49:233 days 22 hrs ago0xbdcc12d5b50576b5f1155984979daba6a4fe4c83 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00251634 13.89936821
0x741c3d1977ea0a447a62b542ec3be7a9067c1754e30120e4544531e2550fe8e8Claim164743812023-01-24 4:48:113 days 22 hrs ago0xcb57210161fef77ad9ae2ffda477db009bc07cef IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00236743 14.10580189
0x79555dd21d6ffa05abee01cef532d8a259f2c6b29ef7e11a4c92c7d14e13a41eClaim164711062023-01-23 17:49:594 days 9 hrs ago0xb6354dc70143f869a1ed0bc7ad4b65d83d67284f IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00586512 37.93053965
0xe0c233e2e2591e5f3ff9a7639c69183cfc69b6e4baea6ad3aa5b93ade19f56dcClaim164709912023-01-23 17:26:594 days 10 hrs ago0xb1d51b3e7270b0847cd95580117318978603f091 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00375736 27.32075739
0xacf8c86ba1098438da8c4859040be6368126283a8d0b919db6048983e6eb45eeClaim164707772023-01-23 16:43:474 days 10 hrs ago0x2e776f52cece1b1ce36c7a161b2104e350ce1f36 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00751564 36.91777135
0x48d950f7170666d82d3f7738b5a62366ed708be25546779ea4618959e01dff1fClaim164669482023-01-23 3:55:234 days 23 hrs ago0x8396d0e8b26831d287472a31dea15c4d563303e8 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00259066 15.08501128
0x69474572b9c6afa065493570d8fee67dac82a454317bb4a3497e8d7be7b8377fClaim164668842023-01-23 3:42:355 days ago0xef52d0013511c84f7e9e1d8370c7592a52adbc44 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00265443 14.66215607
0x4d37cb67e61b7ea39a2c92626f728ca51fd3e67952daa6c1c482c31e83960e50Claim164664422023-01-23 2:13:235 days 1 hr ago0xc6873bbd116079cdfca0806c26f87e246e117fab IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00266931 15.54296272
0xffa1ae63810f4a601d9713e2f2fbee6e27ab69a87d39dd22040fe254c430059fClaim164658632023-01-23 0:16:595 days 3 hrs ago0xc989a469efb61b00ce5b60dafab7a5218521454e IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00259526 14.33533785
0xf541a1c64e1ce8e8350563af7abc477ecb6cdca91d2443c6508d32618cedf3b3Claim164657692023-01-22 23:57:475 days 3 hrs ago0xbe9ae811f301369b8639ffe63958f9baaf2f7818 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00247914 14.77139311
0xdd063eef797e8b479bff609f6eb5c60bc61e2bd28629d93045a93bd6319ae891Claim164657482023-01-22 23:53:355 days 3 hrs ago0x1db4040c23db9620488b66a1bf8715fe4c2eaa39 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00189844 13.80403621
0xc17c5181be25d2a25868ecf576ab6deea2fb56e599a278ffc171fd7048345626Claim164656852023-01-22 23:40:595 days 4 hrs ago0xe4b1b192e1afe44124f50645a961263f618a24f8 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00040567 13.12813298
0xd0a8d01203bbbf8928405b6fbe74dcdba7d7d8f6ab6ebbddfa0f00851e18cc5eClaim164645112023-01-22 19:44:115 days 7 hrs ago0x4e36255eaabe18c7ee49aa92e812b675c3b32b57 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00277089 15.64186454
0xc41054760f3565f5c39495cd6639a2a722e38577f13255fa0fc170cc7706def4Claim164642492023-01-22 18:51:115 days 8 hrs ago0x8a9bc39b9cba96d05ba407e47d26e63092e5709c IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00232734 16.92272796
0x6bdbfcb2221c1f7e5180e830378332e5cdb1f022e0eb32623660d707acd74a9fClaim164637982023-01-22 17:20:235 days 10 hrs ago0x86856932e926eff736582a26b39c81c91cfae95e IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00312049 15.04200449
0xdb2e99c4db86e5d03d456bd2da1cb1d4a8fb5e14af0b129561f942e76f369b62Claim164637952023-01-22 17:19:475 days 10 hrs ago0x063f78173b3a37e4bad143084ab5e7c564665e97 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00297265 16.41987157
0xbcf8218f2be99b050afa6a4aad97c0952912ec64846b666ea4f20909ceee3a61Claim164631352023-01-22 15:07:355 days 12 hrs ago0x122e42a972fbd0aa8f3f541c4c47460361334192 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00378397 23.08143546
0x5fc0d04ea5943514a87177b57c2bd33a3ed58c79a1e06720fda509de8682d85cClaim164631112023-01-22 15:02:475 days 12 hrs ago0xfaff11968ced608e8a1e7eb17fa9cf3c9c490bc1 IN  0x92e82497d42acbd036d7f7328981eca47cc6f0450 Ether0.00369273 19.01059044
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RelyFund

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-16
*/

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

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

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }
    
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }
    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }
    
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }
    
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }
    
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }
    
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }
    
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}


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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    /**
    * @dev Returns the address of the current owner.
    */
    function owner() public view returns (address) {
      return _owner;
    }
    
    modifier onlyOwner() {
      require(_owner == _msgSender(), "Ownable: caller is not the owner");
      _;
    }

    function renounceOwnership() public onlyOwner {
      emit OwnershipTransferred(_owner, address(0));
      _owner = address(0);
    }

    function transferOwnership(address newOwner) public onlyOwner {
      _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
      require(newOwner != address(0), "Ownable: new owner is the zero address");
      emit OwnershipTransferred(_owner, newOwner);
      _owner = newOwner;
    }
}

library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

contract RelyFund is Context, Ownable {
    using SafeMath for uint256;
	using SafeERC20 for IERC20;

    IERC20 public USD;
    address public paymentTokenAddress;

    event _Deposit(address indexed addr, uint256 amount, uint40 tm);
    event _Payout(address indexed addr, uint256 amount);
    event _Refund(address indexed addr, uint256 amount);
	event ReinvestMade(address indexed addr, uint256 amount, uint40 tm);
		
	address payable public team;
    address payable public dev;   
   
    uint8 public isScheduled = 1;
    uint256 private constant DAY = 24 hours;
    uint256 private numDays = 7;    
	
	uint16 constant PERCENT_DIVIDER = 1000; 

    uint256 public invested;
    uint256 public reinvested;
    uint256 public withdrawn;
    uint256 public ref_bonus;
	uint256 public refunds;

    uint256 public launchTime;
	uint256 public sTime;

    struct Tarif {
        uint256 life_days;
        uint256 percent;
    }

    struct Depo {
        uint256 tarif;
        uint256 amount;
        uint40 time;
        uint256 depositTime;
        uint256 multiple;
    }

    struct Downline {
        uint8 level;    
        address invite;
    }

    struct Player {
        string email;
        string lastname;
        string firstname;
        string password;

        address upline;
        uint256 dividends;
                
        uint256 total_invested;
        uint256 total_withdrawn;
        uint256 total_ref_bonus;
        uint256 total_reinvested;
		uint256 total_refunded;
		
        uint40 lastWithdrawn;
        Depo[] deposits;
        Downline[] downlines1;
        uint256[1] structure; 
    }

    mapping(address => Player) public players;
    mapping(address => uint8) public banned;
    mapping(uint256 => Tarif) public tarifs;
    // white list wallets
    mapping(address => uint8) public whitelistWallets;

    uint public nextMemberNo;
    uint public decimals;

    constructor(address _token) {         
		dev = payable(msg.sender);		
	    team = payable(msg.sender);		
        
        tarifs[0] = Tarif(36135, 72270);
        
        paymentTokenAddress = _token;
		USD = IERC20(paymentTokenAddress);
        decimals = IERC20(paymentTokenAddress).decimals();
        launchTime = 0;
    }

    function launch() public onlyOwner() {
        require(launchTime == 0,"invalid state!");
        launchTime = block.timestamp;
    }
   
    function deposit(address _upline, uint256 amount) external {
        require(launchTime > 0,"not started!");
        require(amount >= 100 * (10**decimals), "Minimum Deposit is 100 USDT!");
        require(invested < 20000000 * (10**decimals) ,"Funds reach target!");
        USD.safeTransferFrom(msg.sender, address(this), amount);
    
        setRefrellink(msg.sender, _upline);
        if(invested + amount > 500000 * (10**decimals)){
            sTime = block.timestamp;
        }
        Player storage player = players[msg.sender];
        uint256 multiple = 0;
        if(whitelistWallets[msg.sender] == 1){
            whitelistWallets[msg.sender] = 0;
            multiple = 2;
        }else{
             if(invested < 200000 * (10**decimals)){
                multiple = 2;
            }else if(invested < 500000 * (10**decimals)){
                multiple = 1;
            }
        }
       

        player.deposits.push(Depo({
            tarif: 0,
            amount: amount,
            time: uint40(block.timestamp),
            depositTime: block.timestamp,
            multiple: multiple
        }));  
        emit _Deposit(msg.sender, amount, uint40(block.timestamp));
		
		uint256 teamFee = SafeMath.div(amount,100); 
		USD.safeTransfer(dev, teamFee/2);
		USD.safeTransfer(team, teamFee/2);

        player.total_invested += amount;
        
        invested += amount;
        withdrawn += teamFee;
        commissionPayouts(msg.sender, amount);
    }

    function redeposit() external {   
		require(banned[msg.sender] == 0,'Banned Wallet!');
        Player storage player = players[msg.sender];

        updateUserState(msg.sender);

        require(player.dividends >= 50 * (10**decimals), "Minimum reinvest is 50 USDT.");

        uint256 amount =  player.dividends;
        player.dividends = 0;
		
        player.total_withdrawn += amount;
        withdrawn += amount; 
		
        player.deposits.push(Depo({
            tarif: 0,
            amount: amount,
            time: uint40(block.timestamp),
            depositTime: 0,
            multiple: 0
        }));  
        emit ReinvestMade(msg.sender, amount, uint40(block.timestamp));

        player.total_invested += amount;
        player.total_reinvested += amount;
        
        invested += amount;
		reinvested += amount;    	
    }
	
    function claim() external {      
        require(banned[msg.sender] == 0,'Banned Wallet!');
        Player storage player = players[msg.sender];

        if(isScheduled == 1) {
            require (block.timestamp >= (player.lastWithdrawn + (DAY * numDays)), "Not due yet for next payout!");
        }     

        updateUserState(msg.sender);

        require(player.dividends >= 50 * (10**decimals), "Minimum payout is 50 USDT.");

        uint256 amount =  player.dividends;
        player.dividends = 0;
        
        player.total_withdrawn += amount;
        
		USD.safeTransfer(msg.sender, amount);
		emit _Payout(msg.sender, amount);
		
		uint256 teamFee = SafeMath.div(amount,100);
		USD.safeTransfer(team, teamFee/2);
        USD.safeTransfer(dev, teamFee/2);
        
		withdrawn += amount + teamFee;    
    }
	

    function pendingReward(address _addr) view external returns(uint256 value) {
		if(banned[_addr] == 1){ return 0; }
        Player storage player = players[_addr];

        for(uint256 i = 0; i < player.deposits.length; i++) {
            Depo storage dep = player.deposits[i];
            Tarif storage tarif = tarifs[dep.tarif];

            uint256 time_end = dep.time + tarif.life_days * 86400;
            uint40 from = player.lastWithdrawn > dep.time ? player.lastWithdrawn : dep.time;
            uint256 to = block.timestamp > time_end ? time_end : block.timestamp;

            uint256 multiple = 0;
            if(from < dep.time + 30 days){
                multiple = dep.multiple;
            }

            if(from < to) {
                value = value + dep.amount * (to - from)  * multiple / PERCENT_DIVIDER / 86400 + dep.amount * (to - from) * tarif.percent / tarif.life_days / 8640000 ;
            }
        }
        return value;
    }

 
    function updateUserState(address _addr) private {
        uint256 payout = this.pendingReward(_addr);

        if(payout > 0) {            
            players[_addr].lastWithdrawn = uint40(block.timestamp);
            players[_addr].dividends += payout;
        }
    }      


    function setRefrellink(address _addr, address _upline) private {
        if(players[_addr].upline == address(0) && _addr != owner()) {     
            
            if(players[_upline].total_invested <= 0) {
                _upline = owner();
            }
            
            players[_addr].upline = _upline;
            players[_upline].structure[0]++;

            Player storage up = players[_upline];
            up.downlines1.push(Downline({
                level: 1,
                invite: _addr
            }));  
        }
    }   
    
        
    function commissionPayouts(address _addr, uint256 _amount) private {
        address up = players[_addr].upline;

        if(up == address(0)) return;
        if(banned[up] == 0)
		{   
            uint256 ref_bonuses = 50;
            if(block.timestamp > launchTime + 30 days){
                ref_bonuses = 20;
            }

			uint256 bonus = _amount * ref_bonuses / PERCENT_DIVIDER;
		    
			USD.safeTransfer(up, bonus);
			
			players[up].total_ref_bonus += bonus;
			players[up].total_withdrawn += bonus;

			ref_bonus += bonus;
			withdrawn += bonus;
		}    
    }
    
    function relybot(uint256 amount) public onlyOwner returns (bool success) {
	    USD.safeTransfer(msg.sender, amount);
		withdrawn += amount;
        return true;
    }
	
    function nextWithdraw(address _addr) view external returns(uint40 next_sked) {
		if(banned[_addr] == 1) { return 0; }
        Player storage player = players[_addr];
        if(player.deposits.length > 0)
        {
          return uint40(player.lastWithdrawn + (DAY * numDays));
        }
        return 0;
    }

    function setPaymentToken(address newval) public onlyOwner returns (bool success) {
        paymentTokenAddress = newval;
        return true;
    }    

    function getContractBalance() public view returns (uint256) {
        return IERC20(paymentTokenAddress).balanceOf(address(this));
    }

    function setProfile(string memory _email, string memory _lname, string memory _fname, string memory _password) public returns (bool success) {
        players[msg.sender].email = _email;
        players[msg.sender].lastname = _lname;
        players[msg.sender].firstname = _fname;
        players[msg.sender].password = _password;
        return true;
    }

    function setNewUpline(address member, address newSP) public onlyOwner returns(bool success)
    {
        players[member].upline = newSP;
        return true;
    }

    function setTeam(address payable newval) public onlyOwner returns (bool success) {
        team = newval;
        return true;
    }    
	
    function setDev(address payable newval) public onlyOwner returns (bool success) {
        dev = newval;
        return true;
    }     
   
    function setScheduled(uint8 newval) public onlyOwner returns (bool success) {
        isScheduled = newval;
        return true;
    }   
   
    function setDays(uint newval) public onlyOwner returns (bool success) {    
        numDays = newval;
        return true;
    }    
    
	function banWallet(address wallet) public onlyOwner returns (bool success) {
        banned[wallet] = 1;
        return true;
    }
	
	function unbanWallet(address wallet) public onlyOwner returns (bool success) {
        banned[wallet] = 0;
        return true;
    }

    function refundWallets(address[] memory wallets) public onlyOwner returns (bool success) {
        for (uint256 i=0; i < wallets.length; i++) {
            refundWallet(wallets[i]);
        }
        return true;
    }
	
	function refundWallet(address wallet) internal returns (bool success) {
	       
        if(banned[wallet] == 1){ return false; }
        Player storage player = players[wallet]; 
        if(player.total_invested == 0){
            return false;
        }
        uint256 amount = 0;
        for(uint256 i = 0; i < player.deposits.length; i++) {
            Depo storage dep = player.deposits[i];
            if(dep.depositTime > 0 && (block.timestamp >= dep.depositTime + (15 days))){
                amount += dep.amount;
            }
        }
        if(amount == 0){
            return false;
        }
		player.total_refunded += amount;
		withdrawn += amount;
		refunds += amount;
        USD.safeTransfer(wallet, amount);
		emit _Refund(wallet, amount);
		banned[wallet] = 1;
        return true;
    }

    // add wallets to white list
    function addWhitelist(address[] calldata receivers) external onlyOwner {
        for (uint256 i = 0; i < receivers.length; i++) {
            whitelistWallets[receivers[i]] = 1;
        }
    }

    function userInfo(address _addr) view external returns(uint256 for_withdraw, 
                                                            uint256 numDeposits,  
                                                                uint256 downlines1,
																    uint256[1] memory structure) {
        Player storage player = players[_addr];

        uint256 payout = this.pendingReward(_addr);

        for(uint8 i = 0; i <1; i++) {
            structure[i] = player.structure[i];
        }

        return (
            payout + player.dividends,
            player.deposits.length,
            player.downlines1.length,
            structure
        );
    } 
    
    function memberDownline(address _addr, uint8 level, uint256 index) view external returns(address downline)
    {
        Player storage player = players[_addr];
        Downline storage dl = player.downlines1[0];
        if(level==1){
            dl  = player.downlines1[index];
        }
        return(dl.invite);
    }

    function memberDeposit(address _addr, uint256 index) view external returns(uint40 time, uint256 amount, uint256 lifedays, uint256 percent)
    {
        Player storage player = players[_addr];
        Depo storage dep = player.deposits[index];
        Tarif storage tarif = tarifs[dep.tarif];
        return(dep.time, dep.amount, tarif.life_days, tarif.percent);
    }

    function getBalance() public view returns(uint256) {
        return address(this).balance;
    }

    function getOwner() external view returns (address) {
        return owner();
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint40","name":"tm","type":"uint40"}],"name":"ReinvestMade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint40","name":"tm","type":"uint40"}],"name":"_Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_Payout","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"_Refund","type":"event"},{"inputs":[],"name":"USD","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"receivers","type":"address[]"}],"name":"addWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"banWallet","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"banned","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_upline","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getContractBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"invested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isScheduled","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"memberDeposit","outputs":[{"internalType":"uint40","name":"time","type":"uint40"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"lifedays","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint8","name":"level","type":"uint8"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"memberDownline","outputs":[{"internalType":"address","name":"downline","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextMemberNo","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"nextWithdraw","outputs":[{"internalType":"uint40","name":"next_sked","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paymentTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"players","outputs":[{"internalType":"string","name":"email","type":"string"},{"internalType":"string","name":"lastname","type":"string"},{"internalType":"string","name":"firstname","type":"string"},{"internalType":"string","name":"password","type":"string"},{"internalType":"address","name":"upline","type":"address"},{"internalType":"uint256","name":"dividends","type":"uint256"},{"internalType":"uint256","name":"total_invested","type":"uint256"},{"internalType":"uint256","name":"total_withdrawn","type":"uint256"},{"internalType":"uint256","name":"total_ref_bonus","type":"uint256"},{"internalType":"uint256","name":"total_reinvested","type":"uint256"},{"internalType":"uint256","name":"total_refunded","type":"uint256"},{"internalType":"uint40","name":"lastWithdrawn","type":"uint40"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ref_bonus","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"}],"name":"refundWallets","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reinvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"relybot","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newval","type":"uint256"}],"name":"setDays","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newval","type":"address"}],"name":"setDev","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"member","type":"address"},{"internalType":"address","name":"newSP","type":"address"}],"name":"setNewUpline","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newval","type":"address"}],"name":"setPaymentToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_email","type":"string"},{"internalType":"string","name":"_lname","type":"string"},{"internalType":"string","name":"_fname","type":"string"},{"internalType":"string","name":"_password","type":"string"}],"name":"setProfile","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newval","type":"uint8"}],"name":"setScheduled","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newval","type":"address"}],"name":"setTeam","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tarifs","outputs":[{"internalType":"uint256","name":"life_days","type":"uint256"},{"internalType":"uint256","name":"percent","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"team","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"unbanWallet","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"for_withdraw","type":"uint256"},{"internalType":"uint256","name":"numDeposits","type":"uint256"},{"internalType":"uint256","name":"downlines1","type":"uint256"},{"internalType":"uint256[1]","name":"structure","type":"uint256[1]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistWallets","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60806040526001600460146101000a81548160ff021916908360ff16021790555060076005553480156200003257600080fd5b5060405162005a1638038062005a16833981810160405281019062000058919062000364565b60006200006a6200032e60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280618d27815260200162011a4e815250600f6000808152602001908152602001600020600082015181600001556020820151816001015590505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620002db57600080fd5b505afa158015620002f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000316919062000390565b60ff166012819055506000600b819055505062000431565b600033905090565b6000815190506200034781620003fd565b92915050565b6000815190506200035e8162000417565b92915050565b6000602082840312156200037757600080fd5b6000620003878482850162000336565b91505092915050565b600060208284031215620003a357600080fd5b6000620003b3848285016200034d565b91505092915050565b6000620003c982620003d0565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060ff82169050919050565b6200040881620003bc565b81146200041457600080fd5b50565b6200042281620003f0565b81146200042e57600080fd5b50565b6155d580620004416000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c8063884aa2581161015c578063b58d2508116100ce578063e2eb41ff11610087578063e2eb41ff146107eb578063ebea381514610826578063edac985b14610856578063f2fde38b14610872578063f40f0f521461088e578063f7e78e9d146108be5761027f565b8063b58d2508146106fe578063c28f9c191461072e578063c7bc2a631461074c578063c80ec5221461077f578063cafb22021461079d578063d477f05f146107bb5761027f565b80638e098215116101205780638e0982151461062757806391cca3db1461065857806392cea859146106765780639c8d83bb146106a6578063ad923505146106d6578063afb18fe7146106e05761027f565b8063884aa2581461056d578063893d20e81461059d5780638afa46b1146105bb5780638cc72783146105d95780638da5cb5b146106095761027f565b806355509c8f116101f5578063715018a6116101b9578063715018a6146104bb578063790ca413146104c55780637e6c906d146104e35780637ee80d17146105015780637fd877721461051f57806385f2aef21461054f5761027f565b806355509c8f146103ef5780636391def51461041f5780636a326ab11461043d5780636a4aef021461046d5780636f9fb98a1461049d5761027f565b806321850bf01161024757806321850bf01461032d578063310e70b61461035d578063313ce5671461037b578063417230631461039957806347e7ef24146103c95780634e71d92d146103e55761027f565b806301339c2114610284578063095cf5c61461028e57806312065fe0146102be5780631959a002146102dc5780631bf6c21b1461030f575b600080fd5b61028c6108ee565b005b6102a860048036038101906102a391906141d8565b6109d1565b6040516102b5919061487a565b60405180910390f35b6102c6610ab2565b6040516102d39190614b48565b60405180910390f35b6102f660048036038101906102f191906141af565b610aba565b6040516103069493929190614b8c565b60405180910390f35b610317610c6f565b6040516103249190614895565b60405180910390f35b610347600480360381019061034291906141af565b610c95565b604051610354919061487a565b60405180910390f35b610365610d8e565b6040516103729190614b48565b60405180910390f35b610383610d94565b6040516103909190614b48565b60405180910390f35b6103b360048036038101906103ae919061443a565b610d9a565b6040516103c0919061487a565b60405180910390f35b6103e360048036038101906103de919061423d565b610ea0565b005b6103ed6113f2565b005b61040960048036038101906104049190614377565b6117be565b604051610416919061487a565b60405180910390f35b610427611928565b6040516104349190614b48565b60405180910390f35b610457600480360381019061045291906141af565b61192e565b604051610464919061487a565b60405180910390f35b610487600480360381019061048291906141af565b611a0f565b604051610494919061487a565b60405180910390f35b6104a5611b08565b6040516104b29190614b48565b60405180910390f35b6104c3611bba565b005b6104cd611d0d565b6040516104da9190614b48565b60405180910390f35b6104eb611d13565b6040516104f89190614b48565b60405180910390f35b610509611d19565b6040516105169190614c5a565b60405180910390f35b61053960048036038101906105349190614279565b611d2c565b60405161054691906147e4565b60405180910390f35b610557611e40565b60405161056491906147ff565b60405180910390f35b61058760048036038101906105829190614201565b611e66565b604051610594919061487a565b60405180910390f35b6105a5611f88565b6040516105b291906147e4565b60405180910390f35b6105c3611f97565b6040516105d09190614b48565b60405180910390f35b6105f360048036038101906105ee919061430d565b611f9d565b604051610600919061487a565b60405180910390f35b6106116120a7565b60405161061e91906147e4565b60405180910390f35b610641600480360381019061063c919061443a565b6120d0565b60405161064f929190614b63565b60405180910390f35b6106606120f4565b60405161066d91906147ff565b60405180910390f35b610690600480360381019061068b91906141af565b61211a565b60405161069d9190614bfa565b60405180910390f35b6106c060048036038101906106bb91906141af565b61221b565b6040516106cd9190614c5a565b60405180910390f35b6106de61223b565b005b6106e861252e565b6040516106f591906147e4565b60405180910390f35b6107186004803603810190610713919061448c565b612554565b604051610725919061487a565b60405180910390f35b61073661260f565b6040516107439190614b48565b60405180910390f35b6107666004803603810190610761919061423d565b612615565b6040516107769493929190614c15565b60405180910390f35b610787612700565b6040516107949190614b48565b60405180910390f35b6107a5612706565b6040516107b29190614b48565b60405180910390f35b6107d560048036038101906107d091906141d8565b61270c565b6040516107e2919061487a565b60405180910390f35b610805600480360381019061080091906141af565b6127ed565b60405161081d9c9b9a999897969594939291906148d2565b60405180910390f35b610840600480360381019061083b919061443a565b612a9e565b60405161084d919061487a565b60405180910390f35b610870600480360381019061086b91906142c8565b612b45565b005b61088c600480360381019061088791906141af565b612ca6565b005b6108a860048036038101906108a391906141af565b612d47565b6040516108b59190614b48565b60405180910390f35b6108d860048036038101906108d391906141af565b613053565b6040516108e59190614c5a565b60405180910390f35b6108f6613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a90614a48565b60405180910390fd5b6000600b54146109c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bf90614aa8565b60405180910390fd5b42600b81905550565b60006109db613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5f90614a48565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600047905090565b6000806000610ac7613f24565b6000600d60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060003073ffffffffffffffffffffffffffffffffffffffff1663f40f0f52886040518263ffffffff1660e01b8152600401610b4591906147e4565b60206040518083038186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190614463565b905060005b60018160ff161015610c3f5782600e018160ff1660018110610be5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0154848260ff1660018110610c23577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020020181815250508080610c37906151a1565b915050610b9a565b50816005015481610c509190614d56565b82600c018054905083600d018054905095509550955050509193509193565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c9f613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2390614a48565b60405180910390fd5b6001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060019050919050565b60075481565b60125481565b6000610da4613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2890614a48565b60405180910390fd5b610e7e3383600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b8160086000828254610e909190614d56565b9250508190555060019050919050565b6000600b5411610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc906149c8565b60405180910390fd5b601254600a610ef49190614e6b565b6064610f009190614f89565b811015610f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3990614a28565b60405180910390fd5b601254600a610f519190614e6b565b6301312d00610f609190614f89565b60065410610fa3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9a90614ac8565b60405180910390fd5b610ff2333083600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613101909392919063ffffffff16565b610ffc338361318a565b601254600a61100b9190614e6b565b6207a1206110199190614f89565b816006546110279190614d56565b11156110355742600c819055505b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060006001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415611134576000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060029050611190565b601254600a6111439190614e6b565b62030d406111519190614f89565b6006541015611163576002905061118f565b601254600a6111729190614e6b565b6207a1206111809190614f89565b600654101561118e57600190505b5b5b81600c016040518060a00160405280600081526020018581526020014264ffffffffff168152602001428152602001838152509080600181540180825580915050600190039060005260206000209060050201600090919091909150600082015181600001556020820151816001015560408201518160020160006101000a81548164ffffffffff021916908364ffffffffff160217905550606082015181600301556080820151816004015550503373ffffffffffffffffffffffffffffffffffffffff167fa24a5eebc50be1f0c92dbb186114b7392d43ecb101113f1972839255e166ebd78442604051611287929190614bd1565b60405180910390a2600061129c8460646134d3565b9050611319600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002836112d19190614de7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b611394600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028361134c9190614de7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b838360060160008282546113a89190614d56565b9250508190555083600660008282546113c19190614d56565b9250508190555080600860008282546113da9190614d56565b925050819055506113eb33856134e9565b5050505050565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff1614611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b906149a8565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506001600460149054906101000a900460ff1660ff16141561155d57600554620151806114f39190614f89565b81600b0160009054906101000a900464ffffffffff1664ffffffffff1661151a9190614d56565b42101561155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390614b08565b60405180910390fd5b5b61156633613761565b601254600a6115759190614e6b565b60326115819190614f89565b816005015410156115c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115be90614a68565b60405180910390fd5b60008160050154905060008260050181905550808260070160008282546115ee9190614d56565b925050819055506116423382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167fdb7dac28243f4ebd92a2cc9b5f632941d79587e5a648c8b52f797db8336ac200826040516116889190614b48565b60405180910390a2600061169d8260646134d3565b905061171a600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002836116d29190614de7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b611795600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028361174d9190614de7565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b80826117a19190614d56565b600860008282546117b29190614d56565b92505081905550505050565b600084600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000019080519060200190611816929190613f46565b5083600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101908051906020019061186d929190613f46565b5082600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020190805190602001906118c4929190613f46565b5081600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301908051906020019061191b929190613f46565b5060019050949350505050565b60115481565b6000611938613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc90614a48565b60405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000611a19613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9d90614a48565b60405180910390fd5b6000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060019050919050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611b6591906147e4565b60206040518083038186803b158015611b7d57600080fd5b505afa158015611b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bb59190614463565b905090565b611bc2613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690614a48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600b5481565b600c5481565b600460149054906101000a900460ff1681565b600080600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600d01600081548110611daf577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001905060018560ff161415611e105781600d018481548110611e03577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200190505b8060000160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050509392505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611e70613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef490614a48565b60405180910390fd5b81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001905092915050565b6000611f926120a7565b905090565b600a5481565b6000611fa7613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202b90614a48565b60405180910390fd5b60005b825181101561209d5761208983828151811061207c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60200260200101516138b8565b50808061209590615158565b915050612037565b5060019050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f6020528060005260406000206000915090508060000154908060010154905082565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141561217d5760009050612216565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600c0180549050111561221057600554620151806121e19190614f89565b81600b0160009054906101000a900464ffffffffff1664ffffffffff166122089190614d56565b915050612216565b60009150505b919050565b600e6020528060005260406000206000915054906101000a900460ff1681565b6000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16146122cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c4906149a8565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905061231933613761565b601254600a6123289190614e6b565b60326123349190614f89565b8160050154101561237a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237190614a88565b60405180910390fd5b60008160050154905060008260050181905550808260070160008282546123a19190614d56565b9250508190555080600860008282546123ba9190614d56565b9250508190555081600c016040518060a00160405280600081526020018381526020014264ffffffffff1681526020016000815260200160008152509080600181540180825580915050600190039060005260206000209060050201600090919091909150600082015181600001556020820151816001015560408201518160020160006101000a81548164ffffffffff021916908364ffffffffff160217905550606082015181600301556080820151816004015550503373ffffffffffffffffffffffffffffffffffffffff167fbb96fd8fd566700a198e69659abc731daf3cbdeb5f946192c09d3034673f2d0382426040516124ba929190614bd1565b60405180910390a2808260060160008282546124d69190614d56565b92505081905550808260090160008282546124f19190614d56565b92505081905550806006600082825461250a9190614d56565b9250508190555080600760008282546125239190614d56565b925050819055505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061255e613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e290614a48565b60405180910390fd5b81600460146101000a81548160ff021916908360ff16021790555060019050919050565b60095481565b6000806000806000600d60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600c01878154811061269c577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906005020190506000600f60008360000154815260200190815260200160002090508160020160009054906101000a900464ffffffffff16826001015482600001548360010154965096509650965050505092959194509250565b60085481565b60065481565b6000612716613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161279a90614a48565b60405180910390fd5b81600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600d602052806000526040600020600091509050806000018054612810906150f5565b80601f016020809104026020016040519081016040528092919081815260200182805461283c906150f5565b80156128895780601f1061285e57610100808354040283529160200191612889565b820191906000526020600020905b81548152906001019060200180831161286c57829003601f168201915b50505050509080600101805461289e906150f5565b80601f01602080910402602001604051908101604052809291908181526020018280546128ca906150f5565b80156129175780601f106128ec57610100808354040283529160200191612917565b820191906000526020600020905b8154815290600101906020018083116128fa57829003601f168201915b50505050509080600201805461292c906150f5565b80601f0160208091040260200160405190810160405280929190818152602001828054612958906150f5565b80156129a55780601f1061297a576101008083540402835291602001916129a5565b820191906000526020600020905b81548152906001019060200180831161298857829003601f168201915b5050505050908060030180546129ba906150f5565b80601f01602080910402602001604051908101604052809291908181526020018280546129e6906150f5565b8015612a335780601f10612a0857610100808354040283529160200191612a33565b820191906000526020600020905b815481529060010190602001808311612a1657829003601f168201915b5050505050908060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b0160009054906101000a900464ffffffffff1690508c565b6000612aa8613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b2c90614a48565b60405180910390fd5b8160058190555060019050919050565b612b4d613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd190614a48565b60405180910390fd5b60005b82829050811015612ca157600160106000858585818110612c27577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190612c3c91906141af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055508080612c9990615158565b915050612bdd565b505050565b612cae613073565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3290614a48565b60405180910390fd5b612d4481613b8a565b50565b60006001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff161415612daa576000905061304e565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b81600c018054905081101561304b57600082600c018281548110612e3d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020906005020190506000600f60008360000154815260200190815260200160002090506000620151808260000154612e7d9190614f89565b8360020160009054906101000a900464ffffffffff1664ffffffffff16612ea49190614d56565b905060008360020160009054906101000a900464ffffffffff1664ffffffffff1686600b0160009054906101000a900464ffffffffff1664ffffffffff1611612f02578360020160009054906101000a900464ffffffffff16612f19565b85600b0160009054906101000a900464ffffffffff165b90506000824211612f2a5742612f2c565b825b9050600062278d008660020160009054906101000a900464ffffffffff16612f549190614dac565b64ffffffffff168364ffffffffff161015612f7157856004015490505b818364ffffffffff161015613032576283d600856000015486600101548564ffffffffff1685612fa19190614fe3565b8960010154612fb09190614f89565b612fba9190614f89565b612fc49190614de7565b612fce9190614de7565b620151806103e861ffff16838664ffffffffff1686612fed9190614fe3565b8a60010154612ffc9190614f89565b6130069190614f89565b6130109190614de7565b61301a9190614de7565b8a6130259190614d56565b61302f9190614d56565b98505b505050505050808061304390615158565b915050612df0565b50505b919050565b60106020528060005260406000206000915054906101000a900460ff1681565b600033905090565b6130fc8363a9059cbb60e01b848460405160240161309a929190614851565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613cb7565b505050565b613184846323b872dd60e01b8585856040516024016131229392919061481a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613cb7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff16600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561325b575061322b6120a7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156134cf576000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154116132b5576132b26120a7565b90505b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600e016000600181106133b1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b0160008154809291906133c390615158565b91905055506000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600d016040518060400160405280600160ff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505b5050565b600081836134e19190614de7565b905092915050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561358b575061375d565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141561375b5760006032905062278d00600b546135fa9190614d56565b42111561360657601490505b60006103e861ffff16828561361b9190614f89565b6136259190614de7565b90506136748382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080160008282546136c69190614d56565b9250508190555080600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701600082825461371f9190614d56565b9250508190555080600960008282546137389190614d56565b9250508190555080600860008282546137519190614d56565b9250508190555050505b505b5050565b60003073ffffffffffffffffffffffffffffffffffffffff1663f40f0f52836040518263ffffffff1660e01b815260040161379c91906147e4565b60206040518083038186803b1580156137b457600080fd5b505afa1580156137c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137ec9190614463565b905060008111156138b45742600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0160006101000a81548164ffffffffff021916908364ffffffffff16021790555080600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282546138ac9190614d56565b925050819055505b5050565b60006001600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1660ff16141561391b5760009050613b85565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600081600601541415613975576000915050613b85565b6000805b82600c0180549050811015613a2857600083600c0182815481106139c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002090600502019050600081600301541180156139fc57506213c68081600301546139f89190614d56565b4210155b15613a1457806001015483613a119190614d56565b92505b508080613a2090615158565b915050613979565b506000811415613a3d57600092505050613b85565b8082600a016000828254613a519190614d56565b925050819055508060086000828254613a6a9190614d56565b9250508190555080600a6000828254613a839190614d56565b92505081905550613ad78482600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661307b9092919063ffffffff16565b8373ffffffffffffffffffffffffffffffffffffffff167f5a8b23b6708800de8ffd6d2398cde024a6031d67c18648c347636e31d0fec45982604051613b1d9190614b48565b60405180910390a26001600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506001925050505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613bfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bf1906149e8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000613d19826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d7e9092919063ffffffff16565b9050600081511115613d795780806020019051810190613d39919061434e565b613d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6f90614b28565b60405180910390fd5b5b505050565b6060613d8d8484600085613d96565b90509392505050565b606082471015613ddb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dd290614a08565b60405180910390fd5b613de485613eaa565b613e23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e1a90614ae8565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613e4c91906147cd565b60006040518083038185875af1925050503d8060008114613e89576040519150601f19603f3d011682016040523d82523d6000602084013e613e8e565b606091505b5091509150613e9e828286613ebd565b92505050949350505050565b600080823b905060008111915050919050565b60608315613ecd57829050613f1d565b600083511115613ee05782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613f1491906148b0565b60405180910390fd5b9392505050565b6040518060200160405280600190602082028036833780820191505090505090565b828054613f52906150f5565b90600052602060002090601f016020900481019282613f745760008555613fbb565b82601f10613f8d57805160ff1916838001178555613fbb565b82800160010185558215613fbb579182015b82811115613fba578251825591602001919060010190613f9f565b5b509050613fc89190613fcc565b5090565b5b80821115613fe5576000816000905550600101613fcd565b5090565b6000613ffc613ff784614c9a565b614c75565b9050808382526020820190508285602086028201111561401b57600080fd5b60005b8581101561404b57816140318882614093565b84526020840193506020830192505060018101905061401e565b5050509392505050565b600061406861406384614cc6565b614c75565b90508281526020810184848401111561408057600080fd5b61408b8482856150b3565b509392505050565b6000813590506140a28161552c565b92915050565b6000813590506140b781615543565b92915050565b60008083601f8401126140cf57600080fd5b8235905067ffffffffffffffff8111156140e857600080fd5b60208301915083602082028301111561410057600080fd5b9250929050565b600082601f83011261411857600080fd5b8135614128848260208601613fe9565b91505092915050565b6000815190506141408161555a565b92915050565b600082601f83011261415757600080fd5b8135614167848260208601614055565b91505092915050565b60008135905061417f81615571565b92915050565b60008151905061419481615571565b92915050565b6000813590506141a981615588565b92915050565b6000602082840312156141c157600080fd5b60006141cf84828501614093565b91505092915050565b6000602082840312156141ea57600080fd5b60006141f8848285016140a8565b91505092915050565b6000806040838503121561421457600080fd5b600061422285828601614093565b925050602061423385828601614093565b9150509250929050565b6000806040838503121561425057600080fd5b600061425e85828601614093565b925050602061426f85828601614170565b9150509250929050565b60008060006060848603121561428e57600080fd5b600061429c86828701614093565b93505060206142ad8682870161419a565b92505060406142be86828701614170565b9150509250925092565b600080602083850312156142db57600080fd5b600083013567ffffffffffffffff8111156142f557600080fd5b614301858286016140bd565b92509250509250929050565b60006020828403121561431f57600080fd5b600082013567ffffffffffffffff81111561433957600080fd5b61434584828501614107565b91505092915050565b60006020828403121561436057600080fd5b600061436e84828501614131565b91505092915050565b6000806000806080858703121561438d57600080fd5b600085013567ffffffffffffffff8111156143a757600080fd5b6143b387828801614146565b945050602085013567ffffffffffffffff8111156143d057600080fd5b6143dc87828801614146565b935050604085013567ffffffffffffffff8111156143f957600080fd5b61440587828801614146565b925050606085013567ffffffffffffffff81111561442257600080fd5b61442e87828801614146565b91505092959194509250565b60006020828403121561444c57600080fd5b600061445a84828501614170565b91505092915050565b60006020828403121561447557600080fd5b600061448384828501614185565b91505092915050565b60006020828403121561449e57600080fd5b60006144ac8482850161419a565b91505092915050565b60006144c18383614791565b60208301905092915050565b6144d681615029565b82525050565b6144e581615017565b82525050565b6144f481614d01565b6144fe8184614d2f565b925061450982614cf7565b8060005b8381101561453a57815161452187826144b5565b965061452c83614d22565b92505060018101905061450d565b505050505050565b61454b8161503b565b82525050565b600061455c82614d0c565b6145668185614d3a565b93506145768185602086016150c2565b80840191505092915050565b61458b8161508f565b82525050565b600061459c82614d17565b6145a68185614d45565b93506145b68185602086016150c2565b6145bf81615287565b840191505092915050565b60006145d7600e83614d45565b91506145e2826152a5565b602082019050919050565b60006145fa600c83614d45565b9150614605826152ce565b602082019050919050565b600061461d602683614d45565b9150614628826152f7565b604082019050919050565b6000614640602683614d45565b915061464b82615346565b604082019050919050565b6000614663601c83614d45565b915061466e82615395565b602082019050919050565b6000614686602083614d45565b9150614691826153be565b602082019050919050565b60006146a9601a83614d45565b91506146b4826153e7565b602082019050919050565b60006146cc601c83614d45565b91506146d782615410565b602082019050919050565b60006146ef600e83614d45565b91506146fa82615439565b602082019050919050565b6000614712601383614d45565b915061471d82615462565b602082019050919050565b6000614735601d83614d45565b91506147408261548b565b602082019050919050565b6000614758601c83614d45565b9150614763826154b4565b602082019050919050565b600061477b602a83614d45565b9150614786826154dd565b604082019050919050565b61479a81615067565b82525050565b6147a981615067565b82525050565b6147b881615071565b82525050565b6147c781615082565b82525050565b60006147d98284614551565b915081905092915050565b60006020820190506147f960008301846144dc565b92915050565b600060208201905061481460008301846144cd565b92915050565b600060608201905061482f60008301866144dc565b61483c60208301856144dc565b61484960408301846147a0565b949350505050565b600060408201905061486660008301856144dc565b61487360208301846147a0565b9392505050565b600060208201905061488f6000830184614542565b92915050565b60006020820190506148aa6000830184614582565b92915050565b600060208201905081810360008301526148ca8184614591565b905092915050565b60006101808201905081810360008301526148ed818f614591565b90508181036020830152614901818e614591565b90508181036040830152614915818d614591565b90508181036060830152614929818c614591565b9050614938608083018b6144dc565b61494560a083018a6147a0565b61495260c08301896147a0565b61495f60e08301886147a0565b61496d6101008301876147a0565b61497b6101208301866147a0565b6149896101408301856147a0565b6149976101608301846147af565b9d9c50505050505050505050505050565b600060208201905081810360008301526149c1816145ca565b9050919050565b600060208201905081810360008301526149e1816145ed565b9050919050565b60006020820190508181036000830152614a0181614610565b9050919050565b60006020820190508181036000830152614a2181614633565b9050919050565b60006020820190508181036000830152614a4181614656565b9050919050565b60006020820190508181036000830152614a6181614679565b9050919050565b60006020820190508181036000830152614a818161469c565b9050919050565b60006020820190508181036000830152614aa1816146bf565b9050919050565b60006020820190508181036000830152614ac1816146e2565b9050919050565b60006020820190508181036000830152614ae181614705565b9050919050565b60006020820190508181036000830152614b0181614728565b9050919050565b60006020820190508181036000830152614b218161474b565b9050919050565b60006020820190508181036000830152614b418161476e565b9050919050565b6000602082019050614b5d60008301846147a0565b92915050565b6000604082019050614b7860008301856147a0565b614b8560208301846147a0565b9392505050565b6000608082019050614ba160008301876147a0565b614bae60208301866147a0565b614bbb60408301856147a0565b614bc860608301846144eb565b95945050505050565b6000604082019050614be660008301856147a0565b614bf360208301846147af565b9392505050565b6000602082019050614c0f60008301846147af565b92915050565b6000608082019050614c2a60008301876147af565b614c3760208301866147a0565b614c4460408301856147a0565b614c5160608301846147a0565b95945050505050565b6000602082019050614c6f60008301846147be565b92915050565b6000614c7f614c90565b9050614c8b8282615127565b919050565b6000604051905090565b600067ffffffffffffffff821115614cb557614cb4615258565b5b602082029050602081019050919050565b600067ffffffffffffffff821115614ce157614ce0615258565b5b614cea82615287565b9050602081019050919050565b6000819050919050565b600060019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600081905092915050565b600081905092915050565b600082825260208201905092915050565b6000614d6182615067565b9150614d6c83615067565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614da157614da06151cb565b5b828201905092915050565b6000614db782615071565b9150614dc283615071565b92508264ffffffffff03821115614ddc57614ddb6151cb565b5b828201905092915050565b6000614df282615067565b9150614dfd83615067565b925082614e0d57614e0c6151fa565b5b828204905092915050565b6000808291508390505b6001851115614e6257808604811115614e3e57614e3d6151cb565b5b6001851615614e4d5780820291505b8081029050614e5b85615298565b9450614e22565b94509492505050565b6000614e7682615067565b9150614e8183615067565b9250614eae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614eb6565b905092915050565b600082614ec65760019050614f82565b81614ed45760009050614f82565b8160018114614eea5760028114614ef457614f23565b6001915050614f82565b60ff841115614f0657614f056151cb565b5b8360020a915084821115614f1d57614f1c6151cb565b5b50614f82565b5060208310610133831016604e8410600b8410161715614f585782820a905083811115614f5357614f526151cb565b5b614f82565b614f658484846001614e18565b92509050818404811115614f7c57614f7b6151cb565b5b81810290505b9392505050565b6000614f9482615067565b9150614f9f83615067565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614fd857614fd76151cb565b5b828202905092915050565b6000614fee82615067565b9150614ff983615067565b92508282101561500c5761500b6151cb565b5b828203905092915050565b600061502282615047565b9050919050565b600061503482615047565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600064ffffffffff82169050919050565b600060ff82169050919050565b600061509a826150a1565b9050919050565b60006150ac82615047565b9050919050565b82818337600083830152505050565b60005b838110156150e05780820151818401526020810190506150c5565b838111156150ef576000848401525b50505050565b6000600282049050600182168061510d57607f821691505b6020821081141561512157615120615229565b5b50919050565b61513082615287565b810181811067ffffffffffffffff8211171561514f5761514e615258565b5b80604052505050565b600061516382615067565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415615196576151956151cb565b5b600182019050919050565b60006151ac82615082565b915060ff8214156151c0576151bf6151cb565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f42616e6e65642057616c6c657421000000000000000000000000000000000000600082015250565b7f6e6f742073746172746564210000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f4d696e696d756d204465706f7369742069732031303020555344542100000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4d696e696d756d207061796f757420697320353020555344542e000000000000600082015250565b7f4d696e696d756d207265696e7665737420697320353020555344542e00000000600082015250565b7f696e76616c696420737461746521000000000000000000000000000000000000600082015250565b7f46756e6473207265616368207461726765742100000000000000000000000000600082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f4e6f74206475652079657420666f72206e657874207061796f75742100000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b61553581615017565b811461554057600080fd5b50565b61554c81615029565b811461555757600080fd5b50565b6155638161503b565b811461556e57600080fd5b50565b61557a81615067565b811461558557600080fd5b50565b61559181615082565b811461559c57600080fd5b5056fea2646970667358221220e1ccec6e6c1664329bf6af0570fb2ed7035da780c80b407fdfe32e008911713a64736f6c63430008040033000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

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

000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

-----Decoded View---------------
Arg [0] : _token (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48


Deployed ByteCode Sourcemap

10774:13382:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13106:136;;;:::i;:::-;;20361:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23960:98;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22547:681;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;10884:17;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20953:134;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11481:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12732:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18996:171;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13253:1518;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15663:850;;;:::i;:::-;;19813:364;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12701:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19505:150;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21093:136;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19667:138;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7641:136;;;:::i;:::-;;11603:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11632:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11284:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23241:329;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11209:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20185:168;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24066:85;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11572:22;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21237:223;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7429:77;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12570:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;11243:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19176:321;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12524:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14779:875;;;:::i;:::-;;10908:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20658:137;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11544:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23578:374;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;11513:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11451:23;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20509:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12476:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;20809:131;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22342:197;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7785:107;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16524:976;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12643:49;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13106:136;7566:12;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13176:1:::1;13162:10;;:15;13154:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;13219:15;13206:10;:28;;;;13106:136::o:0;20361:135::-;20428:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20460:6:::1;20453:4;;:13;;;;;;;;;;;;;;;;;;20484:4;20477:11;;20361:135:::0;;;:::o;23960:98::-;24002:7;24029:21;24022:28;;23960:98;:::o;22547:681::-;22602:20;22686:19;22774:18;22815:27;;:::i;:::-;22855:21;22879:7;:14;22887:5;22879:14;;;;;;;;;;;;;;;22855:38;;22906:14;22923:4;:18;;;22942:5;22923:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22906:42;;22965:7;22961:89;22981:1;22978;:4;;;22961:89;;;23019:6;:16;;23036:1;23019:19;;;;;;;;;;;;;;;;;;;23004:9;23014:1;23004:12;;;;;;;;;;;;;;;;;;;;:34;;;;;22984:3;;;;;:::i;:::-;;;;22961:89;;;;23093:6;:16;;;23084:6;:25;;;;:::i;:::-;23124:6;:15;;:22;;;;23161:6;:17;;:24;;;;23062:158;;;;;;;;22547:681;;;;;:::o;10884:17::-;;;;;;;;;;;;;:::o;20953:134::-;21014:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21056:1:::1;21039:6;:14;21046:6;21039:14;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;21075:4;21068:11;;20953:134:::0;;;:::o;11481:25::-;;;;:::o;12732:20::-;;;;:::o;18996:171::-;19055:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19077:36:::1;19094:10;19106:6;19077:3;;;;;;;;;;;:16;;;;:36;;;;;:::i;:::-;19131:6;19118:9;;:19;;;;;;;:::i;:::-;;;;;;;;19155:4;19148:11;;18996:171:::0;;;:::o;13253:1518::-;13344:1;13331:10;;:14;13323:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13401:8;;13397:2;:12;;;;:::i;:::-;13390:3;:20;;;;:::i;:::-;13380:6;:30;;13372:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13489:8;;13485:2;:12;;;;:::i;:::-;13473:8;:25;;;;:::i;:::-;13462:8;;:36;13454:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13533:55;13554:10;13574:4;13581:6;13533:3;;;;;;;;;;;:20;;;;:55;;;;;;:::i;:::-;13605:34;13619:10;13631:7;13605:13;:34::i;:::-;13687:8;;13683:2;:12;;;;:::i;:::-;13673:6;:23;;;;:::i;:::-;13664:6;13653:8;;:17;;;;:::i;:::-;:43;13650:97;;;13720:15;13712:5;:23;;;;13650:97;13757:21;13781:7;:19;13789:10;13781:19;;;;;;;;;;;;;;;13757:43;;13811:16;13877:1;13845:16;:28;13862:10;13845:28;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;13842:329;;;13925:1;13894:16;:28;13911:10;13894:28;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;13952:1;13941:12;;13842:329;;;14013:8;;14009:2;:12;;;;:::i;:::-;13999:6;:23;;;;:::i;:::-;13988:8;;:34;13985:175;;;14053:1;14042:12;;13985:175;;;14103:8;;14099:2;:12;;;;:::i;:::-;14089:6;:23;;;;:::i;:::-;14078:8;;:34;14075:85;;;14143:1;14132:12;;14075:85;13985:175;13842:329;14192:6;:15;;14213:189;;;;;;;;14240:1;14213:189;;;;14264:6;14213:189;;;;14298:15;14213:189;;;;;;14342:15;14213:189;;;;14382:8;14213:189;;;14192:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14430:10;14421:53;;;14442:6;14457:15;14421:53;;;;;;;:::i;:::-;;;;;;;;14483:15;14501:24;14514:6;14521:3;14501:12;:24::i;:::-;14483:42;;14531:32;14548:3;;;;;;;;;;;14561:1;14553:7;:9;;;;:::i;:::-;14531:3;;;;;;;;;;;:16;;;;:32;;;;;:::i;:::-;14568:33;14585:4;;;;;;;;;;;14599:1;14591:7;:9;;;;:::i;:::-;14568:3;;;;;;;;;;;:16;;;;:33;;;;;:::i;:::-;14639:6;14614;:21;;;:31;;;;;;;:::i;:::-;;;;;;;;14678:6;14666:8;;:18;;;;;;;:::i;:::-;;;;;;;;14708:7;14695:9;;:20;;;;;;;:::i;:::-;;;;;;;;14726:37;14744:10;14756:6;14726:17;:37::i;:::-;13253:1518;;;;;:::o;15663:850::-;15736:1;15714:6;:18;15721:10;15714:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;15706:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;15766:21;15790:7;:19;15798:10;15790:19;;;;;;;;;;;;;;;15766:43;;15840:1;15825:11;;;;;;;;;;;:16;;;15822:149;;;15917:7;;11350:8;15911:13;;;;:::i;:::-;15887:6;:20;;;;;;;;;;;;:38;;;;;;:::i;:::-;15867:15;:59;;15858:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;15822:149;15988:27;16004:10;15988:15;:27::i;:::-;16066:8;;16062:2;:12;;;;:::i;:::-;16056:2;:19;;;;:::i;:::-;16036:6;:16;;;:39;;16028:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;16119:14;16137:6;:16;;;16119:34;;16183:1;16164:6;:16;;:20;;;;16231:6;16205;:22;;;:32;;;;;;;:::i;:::-;;;;;;;;16252:36;16269:10;16281:6;16252:3;;;;;;;;;;;:16;;;;:36;;;;;:::i;:::-;16306:10;16298:27;;;16318:6;16298:27;;;;;;:::i;:::-;;;;;;;;16334:15;16352:24;16365:6;16372:3;16352:12;:24::i;:::-;16334:42;;16381:33;16398:4;;;;;;;;;;;16412:1;16404:7;:9;;;;:::i;:::-;16381:3;;;;;;;;;;;:16;;;;:33;;;;;:::i;:::-;16425:32;16442:3;;;;;;;;;;;16455:1;16447:7;:9;;;;:::i;:::-;16425:3;;;;;;;;;;;:16;;;;:32;;;;;:::i;:::-;16494:7;16485:6;:16;;;;:::i;:::-;16472:9;;:29;;;;;;;:::i;:::-;;;;;;;;15663:850;;;:::o;19813:364::-;19940:12;19993:6;19965:7;:19;19973:10;19965:19;;;;;;;;;;;;;;;:25;;:34;;;;;;;;;;;;:::i;:::-;;20041:6;20010:7;:19;20018:10;20010:19;;;;;;;;;;;;;;;:28;;:37;;;;;;;;;;;;:::i;:::-;;20090:6;20058:7;:19;20066:10;20058:19;;;;;;;;;;;;;;;:29;;:38;;;;;;;;;;;;:::i;:::-;;20138:9;20107:7;:19;20115:10;20107:19;;;;;;;;;;;;;;;:28;;:40;;;;;;;;;;;;:::i;:::-;;20165:4;20158:11;;19813:364;;;;;;:::o;12701:24::-;;;;:::o;19505:150::-;19572:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19619:6:::1;19597:19;;:28;;;;;;;;;;;;;;;;;;19643:4;19636:11;;19505:150:::0;;;:::o;21093:136::-;21156:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21198:1:::1;21181:6;:14;21188:6;21181:14;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;21217:4;21210:11;;21093:136:::0;;;:::o;19667:138::-;19718:7;19752:19;;;;;;;;;;;19745:37;;;19791:4;19745:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19738:59;;19667:138;:::o;7641:136::-;7566:12;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7738:1:::1;7701:40;;7722:6;::::0;::::1;;;;;;;;7701:40;;;;;;;;;;;;7767:1;7750:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;7641:136::o:0;11603:25::-;;;;:::o;11632:20::-;;;;:::o;11284:28::-;;;;;;;;;;;;;:::o;23241:329::-;23330:16;23364:21;23388:7;:14;23396:5;23388:14;;;;;;;;;;;;;;;23364:38;;23413:19;23435:6;:17;;23453:1;23435:20;;;;;;;;;;;;;;;;;;;;;;;23413:42;;23476:1;23469:5;:8;;;23466:69;;;23499:6;:17;;23517:5;23499:24;;;;;;;;;;;;;;;;;;;;;;;23493:30;;23466:69;23552:2;:9;;;;;;;;;;;;23545:17;;;;23241:329;;;;;:::o;11209:27::-;;;;;;;;;;;;;:::o;20185:168::-;20263:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20318:5:::1;20293:7;:15;20301:6;20293:15;;;;;;;;;;;;;;;:22;;;:30;;;;;;;;;;;;;;;;;;20341:4;20334:11;;20185:168:::0;;;;:::o;24066:85::-;24109:7;24136;:5;:7::i;:::-;24129:14;;24066:85;:::o;11572:22::-;;;;:::o;21237:223::-;21312:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;21342:9:::1;21337:94;21359:7;:14;21355:1;:18;21337:94;;;21395:24;21408:7;21416:1;21408:10;;;;;;;;;;;;;;;;;;;;;;21395:12;:24::i;:::-;;21375:3;;;;;:::i;:::-;;;;21337:94;;;;21448:4;21441:11;;21237:223:::0;;;:::o;7429:77::-;7467:7;7492:6;;;;;;;;;;;7485:13;;7429:77;:::o;12570:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11243:26::-;;;;;;;;;;;;;:::o;19176:321::-;19235:16;19278:1;19261:6;:13;19268:5;19261:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;19258:36;;;19290:1;19283:8;;;;19258:36;19304:21;19328:7;:14;19336:5;19328:14;;;;;;;;;;;;;;;19304:38;;19381:1;19356:6;:15;;:22;;;;:26;19353:118;;;19450:7;;11350:8;19444:13;;;;:::i;:::-;19420:6;:20;;;;;;;;;;;;:38;;;;;;:::i;:::-;19406:53;;;;;19353:118;19488:1;19481:8;;;19176:321;;;;:::o;12524:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;14779:875::-;14847:1;14825:6;:18;14832:10;14825:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;14817:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;14877:21;14901:7;:19;14909:10;14901:19;;;;;;;;;;;;;;;14877:43;;14933:27;14949:10;14933:15;:27::i;:::-;15011:8;;15007:2;:12;;;;:::i;:::-;15001:2;:19;;;;:::i;:::-;14981:6;:16;;;:39;;14973:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;15066:14;15084:6;:16;;;15066:34;;15130:1;15111:6;:16;;:20;;;;15172:6;15146;:22;;;:32;;;;;;;:::i;:::-;;;;;;;;15202:6;15189:9;;:19;;;;;;;:::i;:::-;;;;;;;;15224:6;:15;;15245:168;;;;;;;;15272:1;15245:168;;;;15296:6;15245:168;;;;15330:15;15245:168;;;;;;15374:1;15245:168;;;;15400:1;15245:168;;;15224:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15445:10;15432:57;;;15457:6;15472:15;15432:57;;;;;;;:::i;:::-;;;;;;;;15527:6;15502;:21;;;:31;;;;;;;:::i;:::-;;;;;;;;15571:6;15544;:23;;;:33;;;;;;;:::i;:::-;;;;;;;;15610:6;15598:8;;:18;;;;;;;:::i;:::-;;;;;;;;15635:6;15621:10;;:20;;;;;;;:::i;:::-;;;;;;;;14779:875;;:::o;10908:34::-;;;;;;;;;;;;;:::o;20658:137::-;20720:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20759:6:::1;20745:11;;:20;;;;;;;;;;;;;;;;;;20783:4;20776:11;;20658:137:::0;;;:::o;11544:24::-;;;;:::o;23578:374::-;23653:11;23666:14;23682:16;23700:15;23733:21;23757:7;:14;23765:5;23757:14;;;;;;;;;;;;;;;23733:38;;23782:16;23801:6;:15;;23817:5;23801:22;;;;;;;;;;;;;;;;;;;;;;;;;;23782:41;;23834:19;23856:6;:17;23863:3;:9;;;23856:17;;;;;;;;;;;23834:39;;23891:3;:8;;;;;;;;;;;;23901:3;:10;;;23913:5;:15;;;23930:5;:13;;;23884:60;;;;;;;;;;;23578:374;;;;;;;:::o;11513:24::-;;;;:::o;11451:23::-;;;;:::o;20509:133::-;20575:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20606:6:::1;20600:3;;:12;;;;;;;;;;;;;;;;;;20630:4;20623:11;;20509:133:::0;;;:::o;12476:41::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20809:131::-;20865:12;7566;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20904:6:::1;20894:7;:16;;;;20928:4;20921:11;;20809:131:::0;;;:::o;22342:197::-;7566:12;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22429:9:::1;22424:108;22448:9;;:16;;22444:1;:20;22424:108;;;22519:1;22486:16;:30;22503:9;;22513:1;22503:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22486:30;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22466:3;;;;;:::i;:::-;;;;22424:108;;;;22342:197:::0;;:::o;7785:107::-;7566:12;:10;:12::i;:::-;7556:22;;:6;;;;;;;;;;:22;;;7548:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7856:28:::1;7875:8;7856:18;:28::i;:::-;7785:107:::0;:::o;16524:976::-;16584:13;16624:1;16607:6;:13;16614:5;16607:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;16604:35;;;16635:1;16628:8;;;;16604:35;16649:21;16673:7;:14;16681:5;16673:14;;;;;;;;;;;;;;;16649:38;;16704:9;16700:770;16723:6;:15;;:22;;;;16719:1;:26;16700:770;;;16767:16;16786:6;:15;;16802:1;16786:18;;;;;;;;;;;;;;;;;;;;;;;;;;16767:37;;16819:19;16841:6;:17;16848:3;:9;;;16841:17;;;;;;;;;;;16819:39;;16875:16;16923:5;16905;:15;;;:23;;;;:::i;:::-;16894:3;:8;;;;;;;;;;;;:34;;;;;;:::i;:::-;16875:53;;16943:11;16980:3;:8;;;;;;;;;;;;16957:31;;:6;:20;;;;;;;;;;;;:31;;;:65;;17014:3;:8;;;;;;;;;;;;16957:65;;;16991:6;:20;;;;;;;;;;;;16957:65;16943:79;;17037:10;17068:8;17050:15;:26;:55;;17090:15;17050:55;;;17079:8;17050:55;17037:68;;17122:16;17178:7;17167:3;:8;;;;;;;;;;;;:18;;;;:::i;:::-;17160:25;;:4;:25;;;17157:87;;;17216:3;:12;;;17205:23;;17157:87;17270:2;17263:4;:9;;;17260:199;;;17435:7;17417:5;:15;;;17401:5;:13;;;17393:4;17388:9;;:2;:9;;;;:::i;:::-;17374:3;:10;;;:24;;;;:::i;:::-;:40;;;;:::i;:::-;:58;;;;:::i;:::-;:68;;;;:::i;:::-;17366:5;11437:4;17309:54;;17337:8;17328:4;17323:9;;:2;:9;;;;:::i;:::-;17309:3;:10;;;:24;;;;:::i;:::-;:36;;;;:::i;:::-;:54;;;;:::i;:::-;:62;;;;:::i;:::-;17301:5;:70;;;;:::i;:::-;:141;;;;:::i;:::-;17293:149;;17260:199;16700:770;;;;;;16747:3;;;;;:::i;:::-;;;;16700:770;;;;17480:12;16524:976;;;;:::o;12643:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;6733:98::-;6786:7;6813:10;6806:17;;6733:98;:::o;4617:211::-;4734:86;4754:5;4784:23;;;4809:2;4813:5;4761:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4734:19;:86::i;:::-;4617:211;;;:::o;4836:248::-;4980:96;5000:5;5030:27;;;5059:4;5065:2;5069:5;5007:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:19;:96::i;:::-;4836:248;;;;:::o;17805:559::-;17915:1;17882:35;;:7;:14;17890:5;17882:14;;;;;;;;;;;;;;;:21;;;;;;;;;;;;:35;;;:55;;;;;17930:7;:5;:7::i;:::-;17921:16;;:5;:16;;;;17882:55;17879:478;;;18011:1;17976:7;:16;17984:7;17976:16;;;;;;;;;;;;;;;:31;;;:36;17973:93;;18043:7;:5;:7::i;:::-;18033:17;;17973:93;18118:7;18094;:14;18102:5;18094:14;;;;;;;;;;;;;;;:21;;;:31;;;;;;;;;;;;;;;;;;18140:7;:16;18148:7;18140:16;;;;;;;;;;;;;;;:26;;18167:1;18140:29;;;;;;;;;;;;;;;;;:31;;;;;;;;;:::i;:::-;;;;;;18188:17;18208:7;:16;18216:7;18208:16;;;;;;;;;;;;;;;18188:36;;18239:2;:13;;18258:84;;;;;;;;18293:1;18258:84;;;;;;18321:5;18258:84;;;;;18239:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17879:478;;17805:559;;:::o;9821:98::-;9879:7;9910:1;9906;:5;;;;:::i;:::-;9899:12;;9821:98;;;;:::o;18389:595::-;18467:10;18480:7;:14;18488:5;18480:14;;;;;;;;;;;;;;;:21;;;;;;;;;;;;18467:34;;18531:1;18517:16;;:2;:16;;;18514:28;;;18535:7;;;18514:28;18569:1;18555:6;:10;18562:2;18555:10;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;18552:421;;;18593:19;18615:2;18593:24;;18666:7;18653:10;;:20;;;;:::i;:::-;18635:15;:38;18632:93;;;18707:2;18693:16;;18632:93;18732:13;11437:4;18748:39;;18758:11;18748:7;:21;;;;:::i;:::-;:39;;;;:::i;:::-;18732:55;;18801:27;18818:2;18822:5;18801:3;;;;;;;;;;;:16;;;;:27;;;;;:::i;:::-;18870:5;18839:7;:11;18847:2;18839:11;;;;;;;;;;;;;;;:27;;;:36;;;;;;;:::i;:::-;;;;;;;;18912:5;18881:7;:11;18889:2;18881:11;;;;;;;;;;;;;;;:27;;;:36;;;;;;;:::i;:::-;;;;;;;;18938:5;18925:9;;:18;;;;;;;:::i;:::-;;;;;;;;18962:5;18949:9;;:18;;;;;;;:::i;:::-;;;;;;;;18552:421;;;18389:595;;;;:::o;17511:278::-;17570:14;17587:4;:18;;;17606:5;17587:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17570:42;;17637:1;17628:6;:10;17625:157;;;17705:15;17667:7;:14;17675:5;17667:14;;;;;;;;;;;;;;;:28;;;:54;;;;;;;;;;;;;;;;;;17764:6;17736:7;:14;17744:5;17736:14;;;;;;;;;;;;;;;:24;;;:34;;;;;;;:::i;:::-;;;;;;;;17625:157;17511:278;;:::o;21466:834::-;21522:12;21578:1;21560:6;:14;21567:6;21560:14;;;;;;;;;;;;;;;;;;;;;;;;;:19;;;21557:40;;;21589:5;21582:12;;;;21557:40;21607:21;21631:7;:15;21639:6;21631:15;;;;;;;;;;;;;;;21607:39;;21686:1;21661:6;:21;;;:26;21658:69;;;21710:5;21703:12;;;;;21658:69;21737:14;21770:9;21766:260;21789:6;:15;;:22;;;;21785:1;:26;21766:260;;;21833:16;21852:6;:15;;21868:1;21852:18;;;;;;;;;;;;;;;;;;;;;;;;;;21833:37;;21906:1;21888:3;:15;;;:19;:71;;;;;21950:7;21931:3;:15;;;:27;;;;:::i;:::-;21912:15;:46;;21888:71;21885:130;;;21989:3;:10;;;21979:20;;;;;:::i;:::-;;;21885:130;21766:260;21813:3;;;;;:::i;:::-;;;;21766:260;;;;22049:1;22039:6;:11;22036:54;;;22073:5;22066:12;;;;;;22036:54;22119:6;22094;:21;;;:31;;;;;;;:::i;:::-;;;;;;;;22143:6;22130:9;;:19;;;;;;;:::i;:::-;;;;;;;;22165:6;22154:7;;:17;;;;;;;:::i;:::-;;;;;;;;22182:32;22199:6;22207;22182:3;;;;;;;;;;;:16;;;;:32;;;;;:::i;:::-;22232:6;22224:23;;;22240:6;22224:23;;;;;;:::i;:::-;;;;;;;;22269:1;22252:6;:14;22259:6;22252:14;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;;;;;;;22288:4;22281:11;;;;21466:834;;;;:::o;7900:223::-;7992:1;7972:22;;:8;:22;;;;7964:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8080:8;8051:38;;8072:6;;;;;;;;;;8051:38;;;;;;;;;;;;8107:8;8098:6;;:17;;;;;;;;;;;;;;;;;;7900:223;:::o;6344:347::-;6425:23;6451:69;6479:4;6451:69;;;;;;;;;;;;;;;;;6459:5;6451:27;;;;:69;;;;;:::i;:::-;6425:95;;6555:1;6535:10;:17;:21;6531:153;;;6606:10;6595:30;;;;;;;;;;;;:::i;:::-;6587:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6531:153;6344:347;;;:::o;1694:229::-;1831:12;1863:52;1885:6;1893:4;1899:1;1902:12;1863:21;:52::i;:::-;1856:59;;1694:229;;;;;:::o;2207:510::-;2377:12;2435:5;2410:21;:30;;2402:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;2502:18;2513:6;2502:10;:18::i;:::-;2494:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;2568:12;2582:23;2609:6;:11;;2628:5;2635:4;2609:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2567:73;;;;2658:51;2675:7;2684:10;2696:12;2658:16;:51::i;:::-;2651:58;;;;2207:510;;;;;;:::o;972:196::-;1032:4;1049:12;1116:7;1104:20;1096:28;;1159:1;1152:4;:8;1145:15;;;972:196;;;:::o;3967:584::-;4117:12;4146:7;4142:402;;;4177:10;4170:17;;;;4142:402;4258:1;4238:10;:17;:21;4234:299;;;4361:10;4355:17;4422:15;4409:10;4405:2;4401:19;4394:44;4309:148;4504:12;4497:20;;;;;;;;;;;:::i;:::-;;;;;;;;3967:584;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:345::-;763:5;788:66;804:49;846:6;804:49;:::i;:::-;788:66;:::i;:::-;779:75;;877:6;870:5;863:21;915:4;908:5;904:16;953:3;944:6;939:3;935:16;932:25;929:2;;;970:1;967;960:12;929:2;983:41;1017:6;1012:3;1007;983:41;:::i;:::-;769:261;;;;;;:::o;1036:139::-;1082:5;1120:6;1107:20;1098:29;;1136:33;1163:5;1136:33;:::i;:::-;1088:87;;;;:::o;1181:155::-;1235:5;1273:6;1260:20;1251:29;;1289:41;1324:5;1289:41;:::i;:::-;1241:95;;;;:::o;1359:367::-;1432:8;1442:6;1492:3;1485:4;1477:6;1473:17;1469:27;1459:2;;1510:1;1507;1500:12;1459:2;1546:6;1533:20;1523:30;;1576:18;1568:6;1565:30;1562:2;;;1608:1;1605;1598:12;1562:2;1645:4;1637:6;1633:17;1621:29;;1699:3;1691:4;1683:6;1679:17;1669:8;1665:32;1662:41;1659:2;;;1716:1;1713;1706:12;1659:2;1449:277;;;;;:::o;1749:303::-;1820:5;1869:3;1862:4;1854:6;1850:17;1846:27;1836:2;;1887:1;1884;1877:12;1836:2;1927:6;1914:20;1952:94;2042:3;2034:6;2027:4;2019:6;2015:17;1952:94;:::i;:::-;1943:103;;1826:226;;;;;:::o;2058:137::-;2112:5;2143:6;2137:13;2128:22;;2159:30;2183:5;2159:30;:::i;:::-;2118:77;;;;:::o;2215:273::-;2271:5;2320:3;2313:4;2305:6;2301:17;2297:27;2287:2;;2338:1;2335;2328:12;2287:2;2378:6;2365:20;2403:79;2478:3;2470:6;2463:4;2455:6;2451:17;2403:79;:::i;:::-;2394:88;;2277:211;;;;;:::o;2494:139::-;2540:5;2578:6;2565:20;2556:29;;2594:33;2621:5;2594:33;:::i;:::-;2546:87;;;;:::o;2639:143::-;2696:5;2727:6;2721:13;2712:22;;2743:33;2770:5;2743:33;:::i;:::-;2702:80;;;;:::o;2788:135::-;2832:5;2870:6;2857:20;2848:29;;2886:31;2911:5;2886:31;:::i;:::-;2838:85;;;;:::o;2929:262::-;2988:6;3037:2;3025:9;3016:7;3012:23;3008:32;3005:2;;;3053:1;3050;3043:12;3005:2;3096:1;3121:53;3166:7;3157:6;3146:9;3142:22;3121:53;:::i;:::-;3111:63;;3067:117;2995:196;;;;:::o;3197:278::-;3264:6;3313:2;3301:9;3292:7;3288:23;3284:32;3281:2;;;3329:1;3326;3319:12;3281:2;3372:1;3397:61;3450:7;3441:6;3430:9;3426:22;3397:61;:::i;:::-;3387:71;;3343:125;3271:204;;;;:::o;3481:407::-;3549:6;3557;3606:2;3594:9;3585:7;3581:23;3577:32;3574:2;;;3622:1;3619;3612:12;3574:2;3665:1;3690:53;3735:7;3726:6;3715:9;3711:22;3690:53;:::i;:::-;3680:63;;3636:117;3792:2;3818:53;3863:7;3854:6;3843:9;3839:22;3818:53;:::i;:::-;3808:63;;3763:118;3564:324;;;;;:::o;3894:407::-;3962:6;3970;4019:2;4007:9;3998:7;3994:23;3990:32;3987:2;;;4035:1;4032;4025:12;3987:2;4078:1;4103:53;4148:7;4139:6;4128:9;4124:22;4103:53;:::i;:::-;4093:63;;4049:117;4205:2;4231:53;4276:7;4267:6;4256:9;4252:22;4231:53;:::i;:::-;4221:63;;4176:118;3977:324;;;;;:::o;4307:548::-;4382:6;4390;4398;4447:2;4435:9;4426:7;4422:23;4418:32;4415:2;;;4463:1;4460;4453:12;4415:2;4506:1;4531:53;4576:7;4567:6;4556:9;4552:22;4531:53;:::i;:::-;4521:63;;4477:117;4633:2;4659:51;4702:7;4693:6;4682:9;4678:22;4659:51;:::i;:::-;4649:61;;4604:116;4759:2;4785:53;4830:7;4821:6;4810:9;4806:22;4785:53;:::i;:::-;4775:63;;4730:118;4405:450;;;;;:::o;4861:425::-;4947:6;4955;5004:2;4992:9;4983:7;4979:23;4975:32;4972:2;;;5020:1;5017;5010:12;4972:2;5091:1;5080:9;5076:17;5063:31;5121:18;5113:6;5110:30;5107:2;;;5153:1;5150;5143:12;5107:2;5189:80;5261:7;5252:6;5241:9;5237:22;5189:80;:::i;:::-;5171:98;;;;5034:245;4962:324;;;;;:::o;5292:405::-;5376:6;5425:2;5413:9;5404:7;5400:23;5396:32;5393:2;;;5441:1;5438;5431:12;5393:2;5512:1;5501:9;5497:17;5484:31;5542:18;5534:6;5531:30;5528:2;;;5574:1;5571;5564:12;5528:2;5602:78;5672:7;5663:6;5652:9;5648:22;5602:78;:::i;:::-;5592:88;;5455:235;5383:314;;;;:::o;5703:278::-;5770:6;5819:2;5807:9;5798:7;5794:23;5790:32;5787:2;;;5835:1;5832;5825:12;5787:2;5878:1;5903:61;5956:7;5947:6;5936:9;5932:22;5903:61;:::i;:::-;5893:71;;5849:125;5777:204;;;;:::o;5987:1150::-;6113:6;6121;6129;6137;6186:3;6174:9;6165:7;6161:23;6157:33;6154:2;;;6203:1;6200;6193:12;6154:2;6274:1;6263:9;6259:17;6246:31;6304:18;6296:6;6293:30;6290:2;;;6336:1;6333;6326:12;6290:2;6364:63;6419:7;6410:6;6399:9;6395:22;6364:63;:::i;:::-;6354:73;;6217:220;6504:2;6493:9;6489:18;6476:32;6535:18;6527:6;6524:30;6521:2;;;6567:1;6564;6557:12;6521:2;6595:63;6650:7;6641:6;6630:9;6626:22;6595:63;:::i;:::-;6585:73;;6447:221;6735:2;6724:9;6720:18;6707:32;6766:18;6758:6;6755:30;6752:2;;;6798:1;6795;6788:12;6752:2;6826:63;6881:7;6872:6;6861:9;6857:22;6826:63;:::i;:::-;6816:73;;6678:221;6966:2;6955:9;6951:18;6938:32;6997:18;6989:6;6986:30;6983:2;;;7029:1;7026;7019:12;6983:2;7057:63;7112:7;7103:6;7092:9;7088:22;7057:63;:::i;:::-;7047:73;;6909:221;6144:993;;;;;;;:::o;7143:262::-;7202:6;7251:2;7239:9;7230:7;7226:23;7222:32;7219:2;;;7267:1;7264;7257:12;7219:2;7310:1;7335:53;7380:7;7371:6;7360:9;7356:22;7335:53;:::i;:::-;7325:63;;7281:117;7209:196;;;;:::o;7411:284::-;7481:6;7530:2;7518:9;7509:7;7505:23;7501:32;7498:2;;;7546:1;7543;7536:12;7498:2;7589:1;7614:64;7670:7;7661:6;7650:9;7646:22;7614:64;:::i;:::-;7604:74;;7560:128;7488:207;;;;:::o;7701:258::-;7758:6;7807:2;7795:9;7786:7;7782:23;7778:32;7775:2;;;7823:1;7820;7813:12;7775:2;7866:1;7891:51;7934:7;7925:6;7914:9;7910:22;7891:51;:::i;:::-;7881:61;;7837:115;7765:194;;;;:::o;7965:179::-;8034:10;8055:46;8097:3;8089:6;8055:46;:::i;:::-;8133:4;8128:3;8124:14;8110:28;;8045:99;;;;:::o;8150:142::-;8253:32;8279:5;8253:32;:::i;:::-;8248:3;8241:45;8231:61;;:::o;8298:118::-;8385:24;8403:5;8385:24;:::i;:::-;8380:3;8373:37;8363:53;;:::o;8454:694::-;8590:52;8636:5;8590:52;:::i;:::-;8658:84;8735:6;8730:3;8658:84;:::i;:::-;8651:91;;8766:54;8814:5;8766:54;:::i;:::-;8843:7;8874:1;8859:282;8884:6;8881:1;8878:13;8859:282;;;8960:6;8954:13;8987:63;9046:3;9031:13;8987:63;:::i;:::-;8980:70;;9073:58;9124:6;9073:58;:::i;:::-;9063:68;;8919:222;8906:1;8903;8899:9;8894:14;;8859:282;;;8863:14;8566:582;;;;;:::o;9154:109::-;9235:21;9250:5;9235:21;:::i;:::-;9230:3;9223:34;9213:50;;:::o;9269:373::-;9373:3;9401:38;9433:5;9401:38;:::i;:::-;9455:88;9536:6;9531:3;9455:88;:::i;:::-;9448:95;;9552:52;9597:6;9592:3;9585:4;9578:5;9574:16;9552:52;:::i;:::-;9629:6;9624:3;9620:16;9613:23;;9377:265;;;;;:::o;9648:157::-;9748:50;9792:5;9748:50;:::i;:::-;9743:3;9736:63;9726:79;;:::o;9811:364::-;9899:3;9927:39;9960:5;9927:39;:::i;:::-;9982:71;10046:6;10041:3;9982:71;:::i;:::-;9975:78;;10062:52;10107:6;10102:3;10095:4;10088:5;10084:16;10062:52;:::i;:::-;10139:29;10161:6;10139:29;:::i;:::-;10134:3;10130:39;10123:46;;9903:272;;;;;:::o;10181:366::-;10323:3;10344:67;10408:2;10403:3;10344:67;:::i;:::-;10337:74;;10420:93;10509:3;10420:93;:::i;:::-;10538:2;10533:3;10529:12;10522:19;;10327:220;;;:::o;10553:366::-;10695:3;10716:67;10780:2;10775:3;10716:67;:::i;:::-;10709:74;;10792:93;10881:3;10792:93;:::i;:::-;10910:2;10905:3;10901:12;10894:19;;10699:220;;;:::o;10925:366::-;11067:3;11088:67;11152:2;11147:3;11088:67;:::i;:::-;11081:74;;11164:93;11253:3;11164:93;:::i;:::-;11282:2;11277:3;11273:12;11266:19;;11071:220;;;:::o;11297:366::-;11439:3;11460:67;11524:2;11519:3;11460:67;:::i;:::-;11453:74;;11536:93;11625:3;11536:93;:::i;:::-;11654:2;11649:3;11645:12;11638:19;;11443:220;;;:::o;11669:366::-;11811:3;11832:67;11896:2;11891:3;11832:67;:::i;:::-;11825:74;;11908:93;11997:3;11908:93;:::i;:::-;12026:2;12021:3;12017:12;12010:19;;11815:220;;;:::o;12041:366::-;12183:3;12204:67;12268:2;12263:3;12204:67;:::i;:::-;12197:74;;12280:93;12369:3;12280:93;:::i;:::-;12398:2;12393:3;12389:12;12382:19;;12187:220;;;:::o;12413:366::-;12555:3;12576:67;12640:2;12635:3;12576:67;:::i;:::-;12569:74;;12652:93;12741:3;12652:93;:::i;:::-;12770:2;12765:3;12761:12;12754:19;;12559:220;;;:::o;12785:366::-;12927:3;12948:67;13012:2;13007:3;12948:67;:::i;:::-;12941:74;;13024:93;13113:3;13024:93;:::i;:::-;13142:2;13137:3;13133:12;13126:19;;12931:220;;;:::o;13157:366::-;13299:3;13320:67;13384:2;13379:3;13320:67;:::i;:::-;13313:74;;13396:93;13485:3;13396:93;:::i;:::-;13514:2;13509:3;13505:12;13498:19;;13303:220;;;:::o;13529:366::-;13671:3;13692:67;13756:2;13751:3;13692:67;:::i;:::-;13685:74;;13768:93;13857:3;13768:93;:::i;:::-;13886:2;13881:3;13877:12;13870:19;;13675:220;;;:::o;13901:366::-;14043:3;14064:67;14128:2;14123:3;14064:67;:::i;:::-;14057:74;;14140:93;14229:3;14140:93;:::i;:::-;14258:2;14253:3;14249:12;14242:19;;14047:220;;;:::o;14273:366::-;14415:3;14436:67;14500:2;14495:3;14436:67;:::i;:::-;14429:74;;14512:93;14601:3;14512:93;:::i;:::-;14630:2;14625:3;14621:12;14614:19;;14419:220;;;:::o;14645:366::-;14787:3;14808:67;14872:2;14867:3;14808:67;:::i;:::-;14801:74;;14884:93;14973:3;14884:93;:::i;:::-;15002:2;14997:3;14993:12;14986:19;;14791:220;;;:::o;15017:108::-;15094:24;15112:5;15094:24;:::i;:::-;15089:3;15082:37;15072:53;;:::o;15131:118::-;15218:24;15236:5;15218:24;:::i;:::-;15213:3;15206:37;15196:53;;:::o;15255:115::-;15340:23;15357:5;15340:23;:::i;:::-;15335:3;15328:36;15318:52;;:::o;15376:112::-;15459:22;15475:5;15459:22;:::i;:::-;15454:3;15447:35;15437:51;;:::o;15494:271::-;15624:3;15646:93;15735:3;15726:6;15646:93;:::i;:::-;15639:100;;15756:3;15749:10;;15628:137;;;;:::o;15771:222::-;15864:4;15902:2;15891:9;15887:18;15879:26;;15915:71;15983:1;15972:9;15968:17;15959:6;15915:71;:::i;:::-;15869:124;;;;:::o;15999:254::-;16108:4;16146:2;16135:9;16131:18;16123:26;;16159:87;16243:1;16232:9;16228:17;16219:6;16159:87;:::i;:::-;16113:140;;;;:::o;16259:442::-;16408:4;16446:2;16435:9;16431:18;16423:26;;16459:71;16527:1;16516:9;16512:17;16503:6;16459:71;:::i;:::-;16540:72;16608:2;16597:9;16593:18;16584:6;16540:72;:::i;:::-;16622;16690:2;16679:9;16675:18;16666:6;16622:72;:::i;:::-;16413:288;;;;;;:::o;16707:332::-;16828:4;16866:2;16855:9;16851:18;16843:26;;16879:71;16947:1;16936:9;16932:17;16923:6;16879:71;:::i;:::-;16960:72;17028:2;17017:9;17013:18;17004:6;16960:72;:::i;:::-;16833:206;;;;;:::o;17045:210::-;17132:4;17170:2;17159:9;17155:18;17147:26;;17183:65;17245:1;17234:9;17230:17;17221:6;17183:65;:::i;:::-;17137:118;;;;:::o;17261:248::-;17367:4;17405:2;17394:9;17390:18;17382:26;;17418:84;17499:1;17488:9;17484:17;17475:6;17418:84;:::i;:::-;17372:137;;;;:::o;17515:313::-;17628:4;17666:2;17655:9;17651:18;17643:26;;17715:9;17709:4;17705:20;17701:1;17690:9;17686:17;17679:47;17743:78;17816:4;17807:6;17743:78;:::i;:::-;17735:86;;17633:195;;;;:::o;17834:1805::-;18315:4;18353:3;18342:9;18338:19;18330:27;;18403:9;18397:4;18393:20;18389:1;18378:9;18374:17;18367:47;18431:78;18504:4;18495:6;18431:78;:::i;:::-;18423:86;;18556:9;18550:4;18546:20;18541:2;18530:9;18526:18;18519:48;18584:78;18657:4;18648:6;18584:78;:::i;:::-;18576:86;;18709:9;18703:4;18699:20;18694:2;18683:9;18679:18;18672:48;18737:78;18810:4;18801:6;18737:78;:::i;:::-;18729:86;;18862:9;18856:4;18852:20;18847:2;18836:9;18832:18;18825:48;18890:78;18963:4;18954:6;18890:78;:::i;:::-;18882:86;;18978:73;19046:3;19035:9;19031:19;19022:6;18978:73;:::i;:::-;19061;19129:3;19118:9;19114:19;19105:6;19061:73;:::i;:::-;19144;19212:3;19201:9;19197:19;19188:6;19144:73;:::i;:::-;19227;19295:3;19284:9;19280:19;19271:6;19227:73;:::i;:::-;19310;19378:3;19367:9;19363:19;19354:6;19310:73;:::i;:::-;19393;19461:3;19450:9;19446:19;19437:6;19393:73;:::i;:::-;19476:74;19545:3;19534:9;19530:19;19520:7;19476:74;:::i;:::-;19560:72;19627:3;19616:9;19612:19;19602:7;19560:72;:::i;:::-;18320:1319;;;;;;;;;;;;;;;:::o;19645:419::-;19811:4;19849:2;19838:9;19834:18;19826:26;;19898:9;19892:4;19888:20;19884:1;19873:9;19869:17;19862:47;19926:131;20052:4;19926:131;:::i;:::-;19918:139;;19816:248;;;:::o;20070:419::-;20236:4;20274:2;20263:9;20259:18;20251:26;;20323:9;20317:4;20313:20;20309:1;20298:9;20294:17;20287:47;20351:131;20477:4;20351:131;:::i;:::-;20343:139;;20241:248;;;:::o;20495:419::-;20661:4;20699:2;20688:9;20684:18;20676:26;;20748:9;20742:4;20738:20;20734:1;20723:9;20719:17;20712:47;20776:131;20902:4;20776:131;:::i;:::-;20768:139;;20666:248;;;:::o;20920:419::-;21086:4;21124:2;21113:9;21109:18;21101:26;;21173:9;21167:4;21163:20;21159:1;21148:9;21144:17;21137:47;21201:131;21327:4;21201:131;:::i;:::-;21193:139;;21091:248;;;:::o;21345:419::-;21511:4;21549:2;21538:9;21534:18;21526:26;;21598:9;21592:4;21588:20;21584:1;21573:9;21569:17;21562:47;21626:131;21752:4;21626:131;:::i;:::-;21618:139;;21516:248;;;:::o;21770:419::-;21936:4;21974:2;21963:9;21959:18;21951:26;;22023:9;22017:4;22013:20;22009:1;21998:9;21994:17;21987:47;22051:131;22177:4;22051:131;:::i;:::-;22043:139;;21941:248;;;:::o;22195:419::-;22361:4;22399:2;22388:9;22384:18;22376:26;;22448:9;22442:4;22438:20;22434:1;22423:9;22419:17;22412:47;22476:131;22602:4;22476:131;:::i;:::-;22468:139;;22366:248;;;:::o;22620:419::-;22786:4;22824:2;22813:9;22809:18;22801:26;;22873:9;22867:4;22863:20;22859:1;22848:9;22844:17;22837:47;22901:131;23027:4;22901:131;:::i;:::-;22893:139;;22791:248;;;:::o;23045:419::-;23211:4;23249:2;23238:9;23234:18;23226:26;;23298:9;23292:4;23288:20;23284:1;23273:9;23269:17;23262:47;23326:131;23452:4;23326:131;:::i;:::-;23318:139;;23216:248;;;:::o;23470:419::-;23636:4;23674:2;23663:9;23659:18;23651:26;;23723:9;23717:4;23713:20;23709:1;23698:9;23694:17;23687:47;23751:131;23877:4;23751:131;:::i;:::-;23743:139;;23641:248;;;:::o;23895:419::-;24061:4;24099:2;24088:9;24084:18;24076:26;;24148:9;24142:4;24138:20;24134:1;24123:9;24119:17;24112:47;24176:131;24302:4;24176:131;:::i;:::-;24168:139;;24066:248;;;:::o;24320:419::-;24486:4;24524:2;24513:9;24509:18;24501:26;;24573:9;24567:4;24563:20;24559:1;24548:9;24544:17;24537:47;24601:131;24727:4;24601:131;:::i;:::-;24593:139;;24491:248;;;:::o;24745:419::-;24911:4;24949:2;24938:9;24934:18;24926:26;;24998:9;24992:4;24988:20;24984:1;24973:9;24969:17;24962:47;25026:131;25152:4;25026:131;:::i;:::-;25018:139;;24916:248;;;:::o;25170:222::-;25263:4;25301:2;25290:9;25286:18;25278:26;;25314:71;25382:1;25371:9;25367:17;25358:6;25314:71;:::i;:::-;25268:124;;;;:::o;25398:332::-;25519:4;25557:2;25546:9;25542:18;25534:26;;25570:71;25638:1;25627:9;25623:17;25614:6;25570:71;:::i;:::-;25651:72;25719:2;25708:9;25704:18;25695:6;25651:72;:::i;:::-;25524:206;;;;;:::o;25736:645::-;25959:4;25997:3;25986:9;25982:19;25974:27;;26011:71;26079:1;26068:9;26064:17;26055:6;26011:71;:::i;:::-;26092:72;26160:2;26149:9;26145:18;26136:6;26092:72;:::i;:::-;26174;26242:2;26231:9;26227:18;26218:6;26174:72;:::i;:::-;26256:118;26370:2;26359:9;26355:18;26346:6;26256:118;:::i;:::-;25964:417;;;;;;;:::o;26387:328::-;26506:4;26544:2;26533:9;26529:18;26521:26;;26557:71;26625:1;26614:9;26610:17;26601:6;26557:71;:::i;:::-;26638:70;26704:2;26693:9;26689:18;26680:6;26638:70;:::i;:::-;26511:204;;;;;:::o;26721:218::-;26812:4;26850:2;26839:9;26835:18;26827:26;;26863:69;26929:1;26918:9;26914:17;26905:6;26863:69;:::i;:::-;26817:122;;;;:::o;26945:549::-;27120:4;27158:3;27147:9;27143:19;27135:27;;27172:69;27238:1;27227:9;27223:17;27214:6;27172:69;:::i;:::-;27251:72;27319:2;27308:9;27304:18;27295:6;27251:72;:::i;:::-;27333;27401:2;27390:9;27386:18;27377:6;27333:72;:::i;:::-;27415;27483:2;27472:9;27468:18;27459:6;27415:72;:::i;:::-;27125:369;;;;;;;:::o;27500:214::-;27589:4;27627:2;27616:9;27612:18;27604:26;;27640:67;27704:1;27693:9;27689:17;27680:6;27640:67;:::i;:::-;27594:120;;;;:::o;27720:129::-;27754:6;27781:20;;:::i;:::-;27771:30;;27810:33;27838:4;27830:6;27810:33;:::i;:::-;27761:88;;;:::o;27855:75::-;27888:6;27921:2;27915:9;27905:19;;27895:35;:::o;27936:311::-;28013:4;28103:18;28095:6;28092:30;28089:2;;;28125:18;;:::i;:::-;28089:2;28175:4;28167:6;28163:17;28155:25;;28235:4;28229;28225:15;28217:23;;28018:229;;;:::o;28253:308::-;28315:4;28405:18;28397:6;28394:30;28391:2;;;28427:18;;:::i;:::-;28391:2;28465:29;28487:6;28465:29;:::i;:::-;28457:37;;28549:4;28543;28539:15;28531:23;;28320:241;;;:::o;28567:98::-;28632:4;28655:3;28647:11;;28637:28;;;:::o;28671:104::-;28736:6;28764:4;28754:14;;28743:32;;;:::o;28781:98::-;28832:6;28866:5;28860:12;28850:22;;28839:40;;;:::o;28885:99::-;28937:6;28971:5;28965:12;28955:22;;28944:40;;;:::o;28990:111::-;29058:4;29090;29085:3;29081:14;29073:22;;29063:38;;;:::o;29107:143::-;29204:11;29241:3;29226:18;;29216:34;;;;:::o;29256:147::-;29357:11;29394:3;29379:18;;29369:34;;;;:::o;29409:169::-;29493:11;29527:6;29522:3;29515:19;29567:4;29562:3;29558:14;29543:29;;29505:73;;;;:::o;29584:305::-;29624:3;29643:20;29661:1;29643:20;:::i;:::-;29638:25;;29677:20;29695:1;29677:20;:::i;:::-;29672:25;;29831:1;29763:66;29759:74;29756:1;29753:81;29750:2;;;29837:18;;:::i;:::-;29750:2;29881:1;29878;29874:9;29867:16;;29628:261;;;;:::o;29895:248::-;29934:3;29953:19;29970:1;29953:19;:::i;:::-;29948:24;;29986:19;30003:1;29986:19;:::i;:::-;29981:24;;30085:1;30071:12;30067:20;30064:1;30061:27;30058:2;;;30091:18;;:::i;:::-;30058:2;30135:1;30132;30128:9;30121:16;;29938:205;;;;:::o;30149:185::-;30189:1;30206:20;30224:1;30206:20;:::i;:::-;30201:25;;30240:20;30258:1;30240:20;:::i;:::-;30235:25;;30279:1;30269:2;;30284:18;;:::i;:::-;30269:2;30326:1;30323;30319:9;30314:14;;30191:143;;;;:::o;30340:848::-;30401:5;30408:4;30432:6;30423:15;;30456:5;30447:14;;30470:712;30491:1;30481:8;30478:15;30470:712;;;30586:4;30581:3;30577:14;30571:4;30568:24;30565:2;;;30595:18;;:::i;:::-;30565:2;30645:1;30635:8;30631:16;30628:2;;;31060:4;31053:5;31049:16;31040:25;;30628:2;31110:4;31104;31100:15;31092:23;;31140:32;31163:8;31140:32;:::i;:::-;31128:44;;30470:712;;;30413:775;;;;;;;:::o;31194:285::-;31254:5;31278:23;31296:4;31278:23;:::i;:::-;31270:31;;31322:27;31340:8;31322:27;:::i;:::-;31310:39;;31368:104;31405:66;31395:8;31389:4;31368:104;:::i;:::-;31359:113;;31260:219;;;;:::o;31485:1073::-;31539:5;31730:8;31720:2;;31751:1;31742:10;;31753:5;;31720:2;31779:4;31769:2;;31796:1;31787:10;;31798:5;;31769:2;31865:4;31913:1;31908:27;;;;31949:1;31944:191;;;;31858:277;;31908:27;31926:1;31917:10;;31928:5;;;31944:191;31989:3;31979:8;31976:17;31973:2;;;31996:18;;:::i;:::-;31973:2;32045:8;32042:1;32038:16;32029:25;;32080:3;32073:5;32070:14;32067:2;;;32087:18;;:::i;:::-;32067:2;32120:5;;;31858:277;;32244:2;32234:8;32231:16;32225:3;32219:4;32216:13;32212:36;32194:2;32184:8;32181:16;32176:2;32170:4;32167:12;32163:35;32147:111;32144:2;;;32300:8;32294:4;32290:19;32281:28;;32335:3;32328:5;32325:14;32322:2;;;32342:18;;:::i;:::-;32322:2;32375:5;;32144:2;32415:42;32453:3;32443:8;32437:4;32434:1;32415:42;:::i;:::-;32400:57;;;;32489:4;32484:3;32480:14;32473:5;32470:25;32467:2;;;32498:18;;:::i;:::-;32467:2;32547:4;32540:5;32536:16;32527:25;;31545:1013;;;;;;:::o;32564:348::-;32604:7;32627:20;32645:1;32627:20;:::i;:::-;32622:25;;32661:20;32679:1;32661:20;:::i;:::-;32656:25;;32849:1;32781:66;32777:74;32774:1;32771:81;32766:1;32759:9;32752:17;32748:105;32745:2;;;32856:18;;:::i;:::-;32745:2;32904:1;32901;32897:9;32886:20;;32612:300;;;;:::o;32918:191::-;32958:4;32978:20;32996:1;32978:20;:::i;:::-;32973:25;;33012:20;33030:1;33012:20;:::i;:::-;33007:25;;33051:1;33048;33045:8;33042:2;;;33056:18;;:::i;:::-;33042:2;33101:1;33098;33094:9;33086:17;;32963:146;;;;:::o;33115:96::-;33152:7;33181:24;33199:5;33181:24;:::i;:::-;33170:35;;33160:51;;;:::o;33217:104::-;33262:7;33291:24;33309:5;33291:24;:::i;:::-;33280:35;;33270:51;;;:::o;33327:90::-;33361:7;33404:5;33397:13;33390:21;33379:32;;33369:48;;;:::o;33423:126::-;33460:7;33500:42;33493:5;33489:54;33478:65;;33468:81;;;:::o;33555:77::-;33592:7;33621:5;33610:16;;33600:32;;;:::o;33638:95::-;33674:7;33714:12;33707:5;33703:24;33692:35;;33682:51;;;:::o;33739:86::-;33774:7;33814:4;33807:5;33803:16;33792:27;;33782:43;;;:::o;33831:152::-;33894:9;33927:50;33971:5;33927:50;:::i;:::-;33914:63;;33904:79;;;:::o;33989:126::-;34052:9;34085:24;34103:5;34085:24;:::i;:::-;34072:37;;34062:53;;;:::o;34121:154::-;34205:6;34200:3;34195;34182:30;34267:1;34258:6;34253:3;34249:16;34242:27;34172:103;;;:::o;34281:307::-;34349:1;34359:113;34373:6;34370:1;34367:13;34359:113;;;34458:1;34453:3;34449:11;34443:18;34439:1;34434:3;34430:11;34423:39;34395:2;34392:1;34388:10;34383:15;;34359:113;;;34490:6;34487:1;34484:13;34481:2;;;34570:1;34561:6;34556:3;34552:16;34545:27;34481:2;34330:258;;;;:::o;34594:320::-;34638:6;34675:1;34669:4;34665:12;34655:22;;34722:1;34716:4;34712:12;34743:18;34733:2;;34799:4;34791:6;34787:17;34777:27;;34733:2;34861;34853:6;34850:14;34830:18;34827:38;34824:2;;;34880:18;;:::i;:::-;34824:2;34645:269;;;;:::o;34920:281::-;35003:27;35025:4;35003:27;:::i;:::-;34995:6;34991:40;35133:6;35121:10;35118:22;35097:18;35085:10;35082:34;35079:62;35076:2;;;35144:18;;:::i;:::-;35076:2;35184:10;35180:2;35173:22;34963:238;;;:::o;35207:233::-;35246:3;35269:24;35287:5;35269:24;:::i;:::-;35260:33;;35315:66;35308:5;35305:77;35302:2;;;35385:18;;:::i;:::-;35302:2;35432:1;35425:5;35421:13;35414:20;;35250:190;;;:::o;35446:167::-;35483:3;35506:22;35522:5;35506:22;:::i;:::-;35497:31;;35550:4;35543:5;35540:15;35537:2;;;35558:18;;:::i;:::-;35537:2;35605:1;35598:5;35594:13;35587:20;;35487:126;;;:::o;35619:180::-;35667:77;35664:1;35657:88;35764:4;35761:1;35754:15;35788:4;35785:1;35778:15;35805:180;35853:77;35850:1;35843:88;35950:4;35947:1;35940:15;35974:4;35971:1;35964:15;35991:180;36039:77;36036:1;36029:88;36136:4;36133:1;36126:15;36160:4;36157:1;36150:15;36177:180;36225:77;36222:1;36215:88;36322:4;36319:1;36312:15;36346:4;36343:1;36336:15;36363:102;36404:6;36455:2;36451:7;36446:2;36439:5;36435:14;36431:28;36421:38;;36411:54;;;:::o;36471:102::-;36513:8;36560:5;36557:1;36553:13;36532:34;;36522:51;;;:::o;36579:164::-;36719:16;36715:1;36707:6;36703:14;36696:40;36685:58;:::o;36749:162::-;36889:14;36885:1;36877:6;36873:14;36866:38;36855:56;:::o;36917:225::-;37057:34;37053:1;37045:6;37041:14;37034:58;37126:8;37121:2;37113:6;37109:15;37102:33;37023:119;:::o;37148:225::-;37288:34;37284:1;37276:6;37272:14;37265:58;37357:8;37352:2;37344:6;37340:15;37333:33;37254:119;:::o;37379:178::-;37519:30;37515:1;37507:6;37503:14;37496:54;37485:72;:::o;37563:182::-;37703:34;37699:1;37691:6;37687:14;37680:58;37669:76;:::o;37751:176::-;37891:28;37887:1;37879:6;37875:14;37868:52;37857:70;:::o;37933:178::-;38073:30;38069:1;38061:6;38057:14;38050:54;38039:72;:::o;38117:164::-;38257:16;38253:1;38245:6;38241:14;38234:40;38223:58;:::o;38287:169::-;38427:21;38423:1;38415:6;38411:14;38404:45;38393:63;:::o;38462:179::-;38602:31;38598:1;38590:6;38586:14;38579:55;38568:73;:::o;38647:178::-;38787:30;38783:1;38775:6;38771:14;38764:54;38753:72;:::o;38831:229::-;38971:34;38967:1;38959:6;38955:14;38948:58;39040:12;39035:2;39027:6;39023:15;39016:37;38937:123;:::o;39066:122::-;39139:24;39157:5;39139:24;:::i;:::-;39132:5;39129:35;39119:2;;39178:1;39175;39168:12;39119:2;39109:79;:::o;39194:138::-;39275:32;39301:5;39275:32;:::i;:::-;39268:5;39265:43;39255:2;;39322:1;39319;39312:12;39255:2;39245:87;:::o;39338:116::-;39408:21;39423:5;39408:21;:::i;:::-;39401:5;39398:32;39388:2;;39444:1;39441;39434:12;39388:2;39378:76;:::o;39460:122::-;39533:24;39551:5;39533:24;:::i;:::-;39526:5;39523:35;39513:2;;39572:1;39569;39562:12;39513:2;39503:79;:::o;39588:118::-;39659:22;39675:5;39659:22;:::i;:::-;39652:5;39649:33;39639:2;;39696:1;39693;39686:12;39639:2;39629:77;:::o

Swarm Source

ipfs://e1ccec6e6c1664329bf6af0570fb2ed7035da780c80b407fdfe32e008911713a
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.