Contract 0x5Db9C1a9d1983069b9A3A3A60f7986892700494E

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0405ee2104828daa864ff31c50c6c17460e8c7dc0bee6e3a49b4a0586480f00bWithdraw76654212021-05-23 17:52:00149 days 19 hrs ago0x5f5e93cf3e63bc98f03687242bf572f44fa4bfe2 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00080168
0x84f87a4547c6da64b503578a5de580f6b2463c6f72802ca63c9ca1fbd74c7b25Withdraw76045762021-05-21 15:01:37151 days 21 hrs ago0x21432e678375a8e1bcb3d1628dd3ca5bf311de6e IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00113523
0xb071ab529b3f02a4dfcdf8ab9f1277afd50bf0af3e706316dbbbe3a3ceafcd61Withdraw76010402021-05-21 11:59:59152 days 58 mins ago0xba0ef1e564f958452597a9d1c0fc21d4ed5a6ae1 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00091136
0x4154df508540dcbe9532749db14a273e6fb0edfa761d9dd3b77cdb7f95c6691dWithdraw76010402021-05-21 11:59:59152 days 58 mins ago0xba0ef1e564f958452597a9d1c0fc21d4ed5a6ae1 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00091136
0x56649d3b9c4cb2d00d81d949e632e1d56aa0a5e4a81bbffe9b421204668be0b0Withdraw76010402021-05-21 11:59:59152 days 58 mins ago0xba0ef1e564f958452597a9d1c0fc21d4ed5a6ae1 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00091136
0xa9298c50188c1b66c8736dbbe4e18d919b6100575f8195a9784b4dd0d8c808d3Withdraw76010402021-05-21 11:59:59152 days 58 mins ago0xba0ef1e564f958452597a9d1c0fc21d4ed5a6ae1 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00113478
0x4c9d53ef19bde72bafc3103394084224ed7e49a19727c1adb1f58c079ae73321Withdraw75788452021-05-20 17:25:30152 days 19 hrs ago0x2a5ba6819249aa93c0ad8711a9f8058360083fb7 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00065123
0xb4c56b6eadb339f8e254a4fbf2df6140c33df8097b09f6e50ece45b09b06d526Withdraw75752042021-05-20 14:22:53152 days 22 hrs ago0x9d5fc34d3375f0e02a90b417e3a2c9cbf19e7e8d IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00065168
0xfd43f638faea0f18e815fdd220c9f67e2af84f1c60e96887d644201b3c5a2b25Withdraw75751892021-05-20 14:22:06152 days 22 hrs ago0x21432e678375a8e1bcb3d1628dd3ca5bf311de6e IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00113523
0x5279b8aab64fc61f368e4589b1b72bb1902ce38ff79613d36b86466b0de16c55Withdraw75653432021-05-20 6:05:32153 days 6 hrs ago0x6e07a5eaa18dde5206c6bf770df444d222559899 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00141253
0x616623507fa31c1ce3016ee40d76cc9be69b6ab9531b5bbf7abec04de5c5b1b9Withdraw75642392021-05-20 5:09:43153 days 7 hrs ago0x2a5ba6819249aa93c0ad8711a9f8058360083fb7 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00065123
0xb2f4e5b1af8c3acca4303424490859383e54b9f708c494d55b03589da09fc2b4Withdraw75637302021-05-20 4:44:16153 days 8 hrs ago0x4cbe6c98651425a678ff0607bd71b0abdafa30b0 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00089323
0x8daecd06df6836ff91c2f18a173e5b520e5d0298d7d6983478b64e741fd7242fWithdraw Reward75635802021-05-20 4:36:46153 days 8 hrs ago0x4c4871120c089acc6c91663575f6f4169a022c25 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.000364385
0x35dc707a8562e69f5000500ba0f79a79e9e1dd3f5019878038f53aa7f7303f12Withdraw75614182021-05-20 2:48:40153 days 10 hrs ago0x867cb9c2df8d3120657e69884b8b8486fb394e47 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00068788
0xeb3c7da0204cc7b16719ff3582cd22bb177268750e503b6f35f79b2c8e40c3b7Withdraw75600262021-05-20 1:38:59153 days 11 hrs ago0xb7a8c5a31c606dd31fc8523653c2bd097b5d763c IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00076068
0x0ad5652dd053d4c4cee207fa4007df0a6661bb2e4a34a3173a0d8f050541f00eInvest75594502021-05-20 1:09:18153 days 11 hrs ago0x43bd06e6e905805fa126627bcef910112aa8b3d4 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0.05 BNB0.00336697
0xf93a920bfd8a1711c56cd49068c6d4ca022e06ad6f17e8b75b0c286edf09b0a5Withdraw75594182021-05-20 1:07:39153 days 11 hrs ago0xcadc1732187a23b81cbcd7e83b3ac081a946ca15 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.0007968
0xede3600f3c5a630fe08ef5d8b1fda985ec5368a4438379e2c940d14ed3476c99Invest75583912021-05-20 0:14:35153 days 12 hrs ago0x43bd06e6e905805fa126627bcef910112aa8b3d4 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0.1 BNB0.00336697
0xeab3e4d4c0c59990909056bbc9a3f35a59343bd5b8e15b90ade0e758173f6ba0Withdraw Reward75550902021-05-19 21:29:24153 days 15 hrs ago0x0d0aff1a42e8b8babd4504f9d51dcd1bd183b6d5 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00072832
0x9be3a385188917e670ddf1c8706d696e514d9dfc824925044786e20aa39b6da4Withdraw75514322021-05-19 18:26:29153 days 18 hrs ago0xe4a71e4e586e2aecd5938531187337f8a464aca7 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00068788
0xcb06e3ab5a3397f8853ff378a61ee1b72ef35091abe0df6b514c036a3d45260cWithdraw75498722021-05-19 17:08:25153 days 19 hrs ago0x2a5ba6819249aa93c0ad8711a9f8058360083fb7 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00076068
0xc243ea269d0847861ec0c0b08080bb97bb9cd98dfc38c3fd3ed7db43b78709d2Withdraw75487282021-05-19 16:10:59153 days 20 hrs ago0x14ccd5beab5ee806dacd954a6142f4901db05fdd IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.0014028
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736bInvest75487202021-05-19 16:10:33153 days 20 hrs ago0x14ccd5beab5ee806dacd954a6142f4901db05fdd IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0.01 BNB0.00516637
0x6715c5504635ff21cafe2576cb9dab1e6e8045b872a0af9d1515cb0b30dd3b7aWithdraw75476012021-05-19 15:14:22153 days 21 hrs ago0x6724cfa9c448ca12a31ff84b28290d4486425d6d IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00032584
0x8689df54567b2de0d454a77e97e62b2c6f14d268996205b3a942dae8a7a5ad58Withdraw75467442021-05-19 14:30:53153 days 22 hrs ago0x0811f6cdd88053c1db847300f0a6c6aae1d937e9 IN  0x5db9c1a9d1983069b9a3a3a60f7986892700494e0 BNB0.00124338
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xeb3c7da0204cc7b16719ff3582cd22bb177268750e503b6f35f79b2c8e40c3b775600262021-05-20 1:38:59153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xb7a8c5a31c606dd31fc8523653c2bd097b5d763c0.101335613425925925 BNB
0x0ad5652dd053d4c4cee207fa4007df0a6661bb2e4a34a3173a0d8f050541f00e75594502021-05-20 1:09:18153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x1f2ce24405461ecb42f68d76683bfff7770f1b920.008 BNB
0x0ad5652dd053d4c4cee207fa4007df0a6661bb2e4a34a3173a0d8f050541f00e75594502021-05-20 1:09:18153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xd18268d2212091b65e770c27addd5a96024442b30.0015 BNB
0x0ad5652dd053d4c4cee207fa4007df0a6661bb2e4a34a3173a0d8f050541f00e75594502021-05-20 1:09:18153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xaff3280999431555baa4266f9d17ce7c490793720.0025 BNB
0x0ad5652dd053d4c4cee207fa4007df0a6661bb2e4a34a3173a0d8f050541f00e75594502021-05-20 1:09:18153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x244220adf0aa433aea1d52119cc56d6394053d6f0.0025 BNB
0xf93a920bfd8a1711c56cd49068c6d4ca022e06ad6f17e8b75b0c286edf09b0a575594182021-05-20 1:07:39153 days 11 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xcadc1732187a23b81cbcd7e83b3ac081a946ca150.005164386574074075 BNB
0xede3600f3c5a630fe08ef5d8b1fda985ec5368a4438379e2c940d14ed3476c9975583912021-05-20 0:14:35153 days 12 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x1f2ce24405461ecb42f68d76683bfff7770f1b920.016 BNB
0xede3600f3c5a630fe08ef5d8b1fda985ec5368a4438379e2c940d14ed3476c9975583912021-05-20 0:14:35153 days 12 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xd18268d2212091b65e770c27addd5a96024442b30.003 BNB
0xede3600f3c5a630fe08ef5d8b1fda985ec5368a4438379e2c940d14ed3476c9975583912021-05-20 0:14:35153 days 12 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xaff3280999431555baa4266f9d17ce7c490793720.005 BNB
0xede3600f3c5a630fe08ef5d8b1fda985ec5368a4438379e2c940d14ed3476c9975583912021-05-20 0:14:35153 days 12 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x244220adf0aa433aea1d52119cc56d6394053d6f0.005 BNB
0xcb06e3ab5a3397f8853ff378a61ee1b72ef35091abe0df6b514c036a3d45260c75498722021-05-19 17:08:25153 days 19 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x2a5ba6819249aa93c0ad8711a9f8058360083fb70.001528803703703705 BNB
0xc243ea269d0847861ec0c0b08080bb97bb9cd98dfc38c3fd3ed7db43b78709d275487282021-05-19 16:10:59153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x14ccd5beab5ee806dacd954a6142f4901db05fdd0.005571196296296295 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x1f2ce24405461ecb42f68d76683bfff7770f1b920.0005 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xe989319369ce6fd69a8d4f3508dd556c0df922e90.0002 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xffbfe86bbbb8eeac5080122f1c2156bc7c3cc40c0.0002 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x92c21e8393ee51a66261ff4e9104feab4a0588470.0002 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x47bef771c0aefc04a06adf127b2bdcfca2c568e40.000498 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x14ccd5beab5ee806dacd954a6142f4901db05fdd0.000002 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xd18268d2212091b65e770c27addd5a96024442b30.0003 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xaff3280999431555baa4266f9d17ce7c490793720.0005 BNB
0x66e1e4be18818051c82bce09a1db46a81410ad1340673a5c6c3d5a0a2e24736b75487202021-05-19 16:10:33153 days 20 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x244220adf0aa433aea1d52119cc56d6394053d6f0.0005 BNB
0x91a8f5c5f6231cfcd0ef99f47d1a8fd21f5980f0b82494e032ceeef72f07b13675365682021-05-19 5:42:32154 days 7 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x51b6783ede5dc6eed6b5831da1a401a0a9e5fd000.0071 BNB
0x4bb41815e6ec4965f23c03c3fe9a2ef6dd4de5d3cab9c6aac4d2d85d6157e5e175324242021-05-19 2:14:59154 days 10 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0x1f2ce24405461ecb42f68d76683bfff7770f1b920.0016 BNB
0x4bb41815e6ec4965f23c03c3fe9a2ef6dd4de5d3cab9c6aac4d2d85d6157e5e175324242021-05-19 2:14:59154 days 10 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xd18268d2212091b65e770c27addd5a96024442b30.0003 BNB
0x4bb41815e6ec4965f23c03c3fe9a2ef6dd4de5d3cab9c6aac4d2d85d6157e5e175324242021-05-19 2:14:59154 days 10 hrs ago 0x5db9c1a9d1983069b9a3a3a60f7986892700494e0xaff3280999431555baa4266f9d17ce7c490793720.0005 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Binanex

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-08
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0;


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

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

    
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        
        
        
        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) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

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

    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    
    function owner() public view virtual returns (address) {
        return _owner;
    }

    
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

interface IERC20 {
    
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

interface IMintableToken is IERC20 {

  function mint(address _receiver, uint256 _amount) external;

}

contract Binanex is Ownable {
    using SafeMath for uint256;

    uint256 constant public DEPOSITS_MAX = 100;
    uint256 constant public INVEST_MIN_AMOUNT = 0.01 ether;
    uint256[] public REFERRAL_LEVELS_PERCENTS = [500, 700, 900, 1100, 1400, 1600, 1800, 2000];
    uint256[] public REFERRAL_LEVELS_MILESTONES = [0, 30 ether, 120 ether, 500 ether, 1000 ether, 3000 ether, 10000 ether, 20000 ether];
    uint8 constant public REFERRAL_DEPTH = 10;
    uint8 constant public REFERRAL_TURNOVER_DEPTH = 5;

    address payable constant public DEFAULT_REFERRER_ADDRESS = 0x1f2Ce24405461Ecb42f68D76683BFFF7770F1B92;

    
    address payable constant public MARKETING_ADDRESS = 0x244220aDf0Aa433aEa1d52119cc56d6394053D6f;
    uint256 constant public MARKETING_FEE = 500;
    address payable constant public PROMOTION_ADDRESS = 0xAFf3280999431555bAa4266F9d17Ce7c49079372;
    uint256 constant public PROMOTION_FEE = 500;
    address payable constant public LIQUIDITY_ADDRESS = 0xD18268D2212091B65E770c27ADdD5a96024442B3;
    uint256 constant public LIQUIDITY_FEE = 300;

    uint256 constant public BASE_PERCENT = 300; 

    
    uint256 constant public MAX_HOLD_PERCENT = 10000; 
    uint256 constant public HOLD_BONUS_PERCENT = 10; 

    
    uint256 constant public MAX_CONTRACT_PERCENT = 10000; 
    uint256 constant public CONTRACT_BALANCE_STEP = 100 ether; 
    uint256 constant public CONTRACT_HOLD_BONUS_PERCENT = 10; 

    
    uint256 constant public MAX_DEPOSIT_PERCENT = 10000; 
    uint256 constant public USER_DEPOSITS_STEP = 10 ether; 
    uint256 constant public VIP_BONUS_PERCENT = 10; 

    uint256 constant public TIME_STEP = 1 days;
    uint256 constant public PERCENTS_DIVIDER = 10000;

    uint256 public totalDeposits;
    uint256 public totalInvested;
    uint256 public totalWithdrawn;

    uint256 public contractPercent;

    address public tokenContractAddress;
    struct Token {
      address tokenContractAddress;
      address flipTokenContractAddress;
      uint256 rate; 
    }
    mapping (address => Token) tokens;
    mapping (address => address) flipTokens;

    struct Stake {
      uint256 amount;
      uint256 checkpoint;
      uint256 checkpointHold;
      uint256 accumulatedReward;
      uint256 withdrawnReward;
    }
    mapping (address => mapping (address => Stake)) stakes;

    
    uint256 constant public HOLD_BONUS_PERCENT_STAKE = 100; 
    uint256 constant public HOLD_BONUS_PERCENT_LIMIT = 10000; 

    
    uint256 constant public USER_DEPOSITS_STEP_STAKE = 100 ether; 
    uint256 constant public VIP_BONUS_PERCENT_STAKE = 100; 
    uint256 constant public VIP_BONUS_PERCENT_LIMIT = 100000; 

    uint256 public MULTIPLIER = 3;

    struct Deposit {
        uint256 amount;
        uint256 withdrawn;
        uint256 refback;
        uint32 start;
    }

    struct User {
        Deposit[] deposits;
        uint32 checkpoint;
        address referrer;
        uint256 bonus;
        uint256[REFERRAL_DEPTH] refs;
        uint256[REFERRAL_DEPTH] refsNumber;
        uint16 rbackPercent;
        uint8 refLevel;
        uint256 refTurnover;
    }

    mapping (address => User) public users;

    event Newbie(address user);
    event NewDeposit(address indexed user, uint256 amount);
    event Withdrawn(address indexed user, uint256 amount);
    event RefBonus(address indexed referrer, address indexed referral, uint256 indexed level, uint256 amount);
    event RefBack(address indexed referrer, address indexed referral, uint256 amount);
    event FeePayed(address indexed user, uint256 totalAmount);

    
    event Staked(address indexed user, address indexed tokenContractAddress, address indexed flipTokenContractAddress, uint256 amount);
    event Unstaked(address indexed user, address indexed tokenContractAddress, address indexed flipTokenContractAddress, uint256 amount);
    event RewardWithdrawn(address indexed user, address indexed tokenContractAddress, address indexed flipTokenContractAddress, uint256 reward);

    constructor() {
        contractPercent = getContractBalanceRate();
    }

    function invest(address referrer) public payable {
        require(!isContract(msg.sender) && msg.sender == tx.origin);

        require(msg.value >= INVEST_MIN_AMOUNT, "Minimum deposit amount 0.01 BNB");

        User storage user = users[msg.sender];

        require(user.deposits.length < DEPOSITS_MAX, "Maximum 100 deposits from address");

        uint256 marketingFee = msg.value.mul(MARKETING_FEE).div(PERCENTS_DIVIDER);
        uint256 promotionFee = msg.value.mul(PROMOTION_FEE).div(PERCENTS_DIVIDER);
        uint256 liquidityFee = msg.value.mul(LIQUIDITY_FEE).div(PERCENTS_DIVIDER);

        MARKETING_ADDRESS.transfer(marketingFee);
        PROMOTION_ADDRESS.transfer(promotionFee);
        LIQUIDITY_ADDRESS.transfer(liquidityFee);

        emit FeePayed(msg.sender, marketingFee.add(promotionFee).add(liquidityFee));

        bool isNewUser = false;
        if (user.referrer == address(0)) {
            isNewUser = true;
            if (isActive(referrer) && referrer != msg.sender) {
              user.referrer = referrer;
            } else {
              user.referrer = DEFAULT_REFERRER_ADDRESS;
            }
        }

        uint256 refbackAmount;
        if (user.referrer != address(0)) {
            bool[] memory distributedLevels = new bool[](REFERRAL_LEVELS_PERCENTS.length);

            address current = msg.sender;
            address upline = user.referrer;
            uint8 maxRefLevel = 0;
            for (uint256 i = 0; i < REFERRAL_DEPTH; i++) {
                if (upline == address(0)) {
                  break;
                }

                uint256 refPercent = 0;
                if (i == 0) {
                  refPercent = REFERRAL_LEVELS_PERCENTS[users[upline].refLevel];

                  maxRefLevel = users[upline].refLevel;
                  for (uint8 j = users[upline].refLevel; j >= 0; j--) {
                    distributedLevels[j] = true;

                    if (j == 0) {
                      break;
                    }
                  }
                } else if (users[upline].refLevel > maxRefLevel && !distributedLevels[users[upline].refLevel]) {
                  refPercent = REFERRAL_LEVELS_PERCENTS[users[upline].refLevel]
                          .sub(REFERRAL_LEVELS_PERCENTS[maxRefLevel], "Ref percent calculation error");

                  maxRefLevel = users[upline].refLevel;
                  for (uint8 j = users[upline].refLevel; j >= 0; j--) {
                    distributedLevels[j] = true;

                    if (j == 0) {
                      break;
                    }
                  }
                }

                uint256 amount = msg.value.mul(refPercent).div(PERCENTS_DIVIDER);

                if (i == 0 && users[upline].rbackPercent > 0 && amount > 0) {
                    refbackAmount = amount.mul(uint256(users[upline].rbackPercent)).div(PERCENTS_DIVIDER);
                    msg.sender.transfer(refbackAmount);

                    emit RefBack(upline, msg.sender, refbackAmount);

                    amount = amount.sub(refbackAmount);
                }

                if (amount > 0) {
                    address(uint160(upline)).transfer(amount);
                    users[upline].bonus = uint256(users[upline].bonus).add(amount);

                    emit RefBonus(upline, msg.sender, i, amount);
                }

                users[upline].refs[i]++;
                if (isNewUser) {
                  users[upline].refsNumber[i]++;
                }

                current = upline;
                upline = users[upline].referrer;
            }

            upline = user.referrer;
            for (uint256 i = 0; i < REFERRAL_TURNOVER_DEPTH; i++) {
                if (upline == address(0)) {
                  break;
                }

                updateReferralLevel(upline, msg.value);

                upline = users[upline].referrer;
            }

        }

        if (user.deposits.length == 0) {
            user.checkpoint = uint32(block.timestamp);
            emit Newbie(msg.sender);
        }

        user.deposits.push(Deposit(msg.value, 0, refbackAmount, uint32(block.timestamp)));

        totalInvested = totalInvested.add(msg.value);
        totalDeposits++;

        if (contractPercent < BASE_PERCENT.add(MAX_CONTRACT_PERCENT)) {
            uint256 contractPercentNew = getContractBalanceRate();
            if (contractPercentNew > contractPercent) {
                contractPercent = contractPercentNew;
            }
        }

        emit NewDeposit(msg.sender, msg.value);

        
        if (isContract(tokenContractAddress)) {
          IMintableToken(tokenContractAddress).mint(msg.sender, msg.value.mul(tokens[tokenContractAddress].rate));
        }
    }

    function withdraw() public {
        User storage user = users[msg.sender];

        uint256 userPercentRate = getUserPercentRate(msg.sender);

        uint256 totalAmount;
        uint256 dividends;

        for (uint8 i = 0; i < user.deposits.length; i++) {

            if (uint256(user.deposits[i].withdrawn) < uint256(user.deposits[i].amount).mul(2)) {

                if (user.deposits[i].start > user.checkpoint) {

                    dividends = (uint256(user.deposits[i].amount).mul(userPercentRate).div(PERCENTS_DIVIDER))
                        .mul(block.timestamp.sub(uint256(user.deposits[i].start)))
                        .div(TIME_STEP);

                } else {

                    dividends = (uint256(user.deposits[i].amount).mul(userPercentRate).div(PERCENTS_DIVIDER))
                        .mul(block.timestamp.sub(uint256(user.checkpoint)))
                        .div(TIME_STEP);

                }

                if (uint256(user.deposits[i].withdrawn).add(dividends) > uint256(user.deposits[i].amount).mul(2)) {
                    dividends = (uint256(user.deposits[i].amount).mul(2)).sub(uint256(user.deposits[i].withdrawn));
                }

                user.deposits[i].withdrawn = uint256(user.deposits[i].withdrawn).add(dividends); 
                totalAmount = totalAmount.add(dividends);

            }
        }

        require(totalAmount > 0, "User has no dividends");

        uint256 contractBalance = address(this).balance;
        if (contractBalance < totalAmount) {
            totalAmount = contractBalance;
        }

        user.checkpoint = uint32(block.timestamp);

        msg.sender.transfer(totalAmount);

        totalWithdrawn = totalWithdrawn.add(totalAmount);

        emit Withdrawn(msg.sender, totalAmount);
    }

    function setRefback(uint16 rbackPercent) public {
        require(rbackPercent <= 10000);

        User storage user = users[msg.sender];

        if (user.deposits.length > 0) {
            user.rbackPercent = rbackPercent;
        }
    }

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

    function getContractBalanceRate() public view returns (uint256) {
        uint256 contractBalance = address(this).balance;
        uint256 contractBalancePercent = BASE_PERCENT.add(
          contractBalance
            .div(CONTRACT_BALANCE_STEP)
            .mul(CONTRACT_HOLD_BONUS_PERCENT)
        );

        if (contractBalancePercent < BASE_PERCENT.add(MAX_CONTRACT_PERCENT)) {
            return contractBalancePercent;
        } else {
            return BASE_PERCENT.add(MAX_CONTRACT_PERCENT);
        }
    }

    function getUserDepositRate(address userAddress) public view returns (uint256) {
        uint256 userDepositRate;

        if (getUserAmountOfDeposits(userAddress) > 0) {
            userDepositRate = getUserTotalDeposits(userAddress).div(USER_DEPOSITS_STEP).mul(VIP_BONUS_PERCENT);

            if (userDepositRate > MAX_DEPOSIT_PERCENT) {
                userDepositRate = MAX_DEPOSIT_PERCENT;
            }
        }

        return userDepositRate;
    }

    function getUserPercentRate(address userAddress) public view returns (uint256) {
        User storage user = users[userAddress];

        if (isActive(userAddress)) {
            uint256 userDepositRate = getUserDepositRate(userAddress);

            uint256 timeMultiplier = (block.timestamp.sub(uint256(user.checkpoint))).div(TIME_STEP).mul(HOLD_BONUS_PERCENT);
            if (timeMultiplier > MAX_HOLD_PERCENT) {
                timeMultiplier = MAX_HOLD_PERCENT;
            }

            return contractPercent.add(timeMultiplier).add(userDepositRate);
        } else {
            return contractPercent;
        }
    }

    function getUserAvailable(address userAddress) public view returns (uint256) {
        User memory user = users[userAddress];

        uint256 userPercentRate = getUserPercentRate(userAddress);

        uint256 totalDividends;
        uint256 dividends;

        for (uint8 i = 0; i < user.deposits.length; i++) {

            if (uint256(user.deposits[i].withdrawn) < uint256(user.deposits[i].amount).mul(2)) {

                if (user.deposits[i].start > user.checkpoint) {

                    dividends = (uint256(user.deposits[i].amount).mul(userPercentRate).div(PERCENTS_DIVIDER))
                        .mul(block.timestamp.sub(uint256(user.deposits[i].start)))
                        .div(TIME_STEP);

                } else {

                    dividends = (uint256(user.deposits[i].amount).mul(userPercentRate).div(PERCENTS_DIVIDER))
                        .mul(block.timestamp.sub(uint256(user.checkpoint)))
                        .div(TIME_STEP);

                }

                if (uint256(user.deposits[i].withdrawn).add(dividends) > uint256(user.deposits[i].amount).mul(2)) {
                    dividends = (uint256(user.deposits[i].amount).mul(2)).sub(uint256(user.deposits[i].withdrawn));
                }

                totalDividends = totalDividends.add(dividends);
            }

        }

        return totalDividends;
    }

    function isActive(address userAddress) public view returns (bool) {
        User storage user = users[userAddress];

        return (user.deposits.length > 0) && uint256(user.deposits[user.deposits.length-1].withdrawn) < uint256(user.deposits[user.deposits.length-1].amount).mul(2);
    }

    function getUserAmountOfDeposits(address userAddress) public view returns (uint256) {
        return users[userAddress].deposits.length;
    }

    function getUserTotalDeposits(address userAddress) public view returns (uint256) {
        User storage user = users[userAddress];

        uint256 amount;

        for (uint256 i = 0; i < user.deposits.length; i++) {
            amount = amount.add(user.deposits[i].amount);
        }

        return amount;
    }

    function getUserTotalWithdrawn(address userAddress) public view returns (uint256) {
        User storage user = users[userAddress];

        uint256 amount = user.bonus;

        for (uint256 i = 0; i < user.deposits.length; i++) {
            amount = amount.add(user.deposits[i].withdrawn).add(user.deposits[i].refback);
        }

        return amount;
    }

    function getUserDeposits(address userAddress, uint256 last, uint256 first) public view
      returns (uint256[] memory, uint256[] memory, uint256[] memory, uint256[] memory) {
        User storage user = users[userAddress];

        uint256 count = first.sub(last);
        if (count > user.deposits.length) {
            count = user.deposits.length;
        }

        uint256[] memory amount = new uint256[](count);
        uint256[] memory withdrawn = new uint256[](count);
        uint256[] memory refback = new uint256[](count);
        uint256[] memory start = new uint256[](count);

        uint256 index = 0;
        for (uint256 i = first; i > last; i--) {
            amount[index] = user.deposits[i-1].amount;
            withdrawn[index] = user.deposits[i-1].withdrawn;
            refback[index] = user.deposits[i-1].refback;
            start[index] = uint256(user.deposits[i-1].start);
            index++;
        }

        return (amount, withdrawn, refback, start);
    }

    function getSiteStats() public view returns (uint256, uint256, uint256, uint256) {
        return (totalInvested, totalDeposits, address(this).balance, contractPercent);
    }

    function getUserStats(address userAddress) public view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        uint256 userPerc = getUserPercentRate(userAddress);
        uint256 userAvailable = getUserAvailable(userAddress);
        uint256 userDepsTotal = getUserTotalDeposits(userAddress);
        uint256 userDeposits = getUserAmountOfDeposits(userAddress);
        uint256 userWithdrawn = getUserTotalWithdrawn(userAddress);
        uint256 userDepositRate = getUserDepositRate(userAddress);

        return (userPerc, userAvailable, userDepsTotal, userDeposits, userWithdrawn, userDepositRate);
    }

    function getDepositsRates(address userAddress) public view returns (uint256, uint256, uint256, uint256) {
      User memory user = users[userAddress];

      uint256 holdBonusPercent = (block.timestamp.sub(uint256(user.checkpoint))).div(TIME_STEP).mul(HOLD_BONUS_PERCENT);
      if (holdBonusPercent > MAX_HOLD_PERCENT) {
          holdBonusPercent = MAX_HOLD_PERCENT;
      }

      return (
        BASE_PERCENT, 
        !isActive(userAddress) ? 0 : holdBonusPercent, 
        address(this).balance.div(CONTRACT_BALANCE_STEP).mul(CONTRACT_HOLD_BONUS_PERCENT), 
        !isActive(userAddress) ? 0 : getUserDepositRate(userAddress) 
      );
    }

    function getUserReferralsStats(address userAddress) public view
      returns (address, uint16, uint16, uint256, uint256[REFERRAL_DEPTH] memory, uint256[REFERRAL_DEPTH] memory, uint256, uint256) {
        User storage user = users[userAddress];

        return (
          user.referrer,
          user.rbackPercent,
          users[user.referrer].rbackPercent,
          user.bonus,
          user.refs,
          user.refsNumber,
          user.refLevel,
          user.refTurnover
        );
    }

    function isContract(address addr) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(addr) }
        return size > 0;
    }

    function setTokenContractAddress(address _tokenContractAddress, address _flipTokenContractAddress, uint256 _rate) external onlyOwner {
      require(_rate > 0 && _rate <= 1000, "Invalid rate value");
      require(isContract(_tokenContractAddress), "Provided address is not a token contract address");
      require(isContract(_flipTokenContractAddress), "Provided address is not a flip token contract address");

      tokenContractAddress = _tokenContractAddress;
      tokens[_tokenContractAddress] = Token(_tokenContractAddress, _flipTokenContractAddress, _rate);
      flipTokens[_flipTokenContractAddress] = _tokenContractAddress;
    }

    function updateReferralLevel(address _userAddress, uint256 _amount) private {
      users[_userAddress].refTurnover = users[_userAddress].refTurnover.add(_amount);

      for (uint8 level = uint8(REFERRAL_LEVELS_MILESTONES.length - 1); level > 0; level--) {
        if (users[_userAddress].refTurnover >= REFERRAL_LEVELS_MILESTONES[level]) {
          users[_userAddress].refLevel = level;

          break;
        }
      }
    }

    

    function getStakeVIPBonusRate(address userAddress, address flipTokenContractAddress) public view returns (uint256) {
        uint256 vipBonusRate = stakes[userAddress][flipTokenContractAddress].amount.div(USER_DEPOSITS_STEP_STAKE).mul(VIP_BONUS_PERCENT_STAKE);

        if (vipBonusRate > VIP_BONUS_PERCENT_LIMIT) {
          return VIP_BONUS_PERCENT_LIMIT;
        }

        return vipBonusRate;
    }

    function getStakeHOLDBonusRate(address userAddress, address flipTokenContractAddress) public view returns (uint256) {
        if (stakes[userAddress][flipTokenContractAddress].checkpointHold == 0) {
          return 0;
        }

        uint256 holdBonusRate = (block.timestamp.sub(stakes[userAddress][flipTokenContractAddress].checkpointHold)).div(TIME_STEP).mul(HOLD_BONUS_PERCENT_STAKE);

        if (holdBonusRate > HOLD_BONUS_PERCENT_LIMIT) {
          return HOLD_BONUS_PERCENT_LIMIT;
        }

        return holdBonusRate;
    }

    function getUserStakePercentRate(address userAddress, address flipTokenContractAddress) public view returns (uint256) {
        return getStakeVIPBonusRate(userAddress, flipTokenContractAddress)
          .add(getStakeHOLDBonusRate(userAddress, flipTokenContractAddress));
    }

    function stake(address _flipTokenContractAddress, uint256 _amount) external returns (bool) {
      require(_amount > 0, "Invalid tokens amount value");
      require(isContract(_flipTokenContractAddress), "Provided address is not a flip token contract address");

      if (!IERC20(_flipTokenContractAddress).transferFrom(msg.sender, address(this), _amount)) {
        return false;
      }

      uint256 reward = availableReward(msg.sender, _flipTokenContractAddress);
      if (reward > 0) {
        stakes[msg.sender][_flipTokenContractAddress].accumulatedReward = stakes[msg.sender][_flipTokenContractAddress].accumulatedReward.add(reward);
      }

      stakes[msg.sender][_flipTokenContractAddress].amount = stakes[msg.sender][_flipTokenContractAddress].amount.add(_amount);
      stakes[msg.sender][_flipTokenContractAddress].checkpoint = block.timestamp;
      if (stakes[msg.sender][_flipTokenContractAddress].checkpointHold == 0) {
        stakes[msg.sender][_flipTokenContractAddress].checkpointHold = block.timestamp;
      }

      emit Staked(msg.sender, flipTokens[_flipTokenContractAddress], _flipTokenContractAddress, _amount);

      return true;
    }

    function availableReward(address userAddress, address flipTokenContractAddress) public view returns (uint256) {
      uint256 userPercentRate = getUserStakePercentRate(userAddress, flipTokenContractAddress);

      return (stakes[userAddress][flipTokenContractAddress].amount
        .mul(PERCENTS_DIVIDER.add(userPercentRate)).div(PERCENTS_DIVIDER))
        .mul(MULTIPLIER)
        .mul(block.timestamp.sub(stakes[userAddress][flipTokenContractAddress].checkpoint))
        .div(TIME_STEP);
    }

    function withdrawReward(address _flipTokenContractAddress) external {
      uint256 reward = stakes[msg.sender][_flipTokenContractAddress].accumulatedReward
        .add(availableReward(msg.sender, _flipTokenContractAddress));

      if (reward > 0) {
        address _tokenContractAddress = flipTokens[_flipTokenContractAddress];

        
        if (isContract(_tokenContractAddress)) {
          stakes[msg.sender][_flipTokenContractAddress].checkpoint = block.timestamp;
          stakes[msg.sender][_flipTokenContractAddress].accumulatedReward = 0;
          stakes[msg.sender][_flipTokenContractAddress].withdrawnReward = stakes[msg.sender][_flipTokenContractAddress].withdrawnReward.add(reward);

          IMintableToken(_tokenContractAddress).mint(msg.sender, reward);

          emit RewardWithdrawn(msg.sender, _tokenContractAddress, _flipTokenContractAddress, reward);
        }
      }
    }

    function unstake(address _flipTokenContractAddress, uint256 _amount) external {
      require(_amount > 0, "Invalid tokens amount value");
      require(_amount <= stakes[msg.sender][_flipTokenContractAddress].amount, "Not enough tokens on the stake balance");
      require(isContract(_flipTokenContractAddress), "Provided address is not a flip token contract address");

      uint256 reward = availableReward(msg.sender, _flipTokenContractAddress);
      if (reward > 0) {
        stakes[msg.sender][_flipTokenContractAddress].accumulatedReward = stakes[msg.sender][_flipTokenContractAddress].accumulatedReward.add(reward);
      }

      stakes[msg.sender][_flipTokenContractAddress].amount = stakes[msg.sender][_flipTokenContractAddress].amount.sub(_amount);
      stakes[msg.sender][_flipTokenContractAddress].checkpoint = block.timestamp;
      if (stakes[msg.sender][_flipTokenContractAddress].amount > 0) {
        stakes[msg.sender][_flipTokenContractAddress].checkpointHold = block.timestamp;
      } else {
        stakes[msg.sender][_flipTokenContractAddress].checkpointHold = 0; 
      }

      require(IERC20(_flipTokenContractAddress).transfer(msg.sender, _amount));

      emit Unstaked(msg.sender, flipTokens[_flipTokenContractAddress], _flipTokenContractAddress, _amount);
    }

    function getUserStakeStats(address _userAddress, address _flipTokenContractAddress) public view
      returns (uint256, uint256, uint256, uint256, uint256)
    {
      return (
        stakes[_userAddress][_flipTokenContractAddress].amount,
        stakes[_userAddress][_flipTokenContractAddress].accumulatedReward,
        stakes[_userAddress][_flipTokenContractAddress].withdrawnReward,
        getStakeVIPBonusRate(_userAddress, _flipTokenContractAddress),
        getStakeHOLDBonusRate(_userAddress, _flipTokenContractAddress)
      );
    }

    function getUserStakeTimeCheckpoints(address _userAddress, address _flipTokenContractAddress) public view returns (uint256, uint256) {
      return (
        stakes[_userAddress][_flipTokenContractAddress].checkpoint,
        stakes[_userAddress][_flipTokenContractAddress].checkpointHold
      );
    }

    function updateMultiplier(uint256 multiplier) public onlyOwner {
      require(multiplier > 0 && multiplier <= 50, "Multiplier is out of range");

      MULTIPLIER = multiplier;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"totalAmount","type":"uint256"}],"name":"FeePayed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"NewDeposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"Newbie","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"referral","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RefBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"referrer","type":"address"},{"indexed":true,"internalType":"address","name":"referral","type":"address"},{"indexed":true,"internalType":"uint256","name":"level","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RefBonus","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenContractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"flipTokenContractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenContractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"flipTokenContractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"tokenContractAddress","type":"address"},{"indexed":true,"internalType":"address","name":"flipTokenContractAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"BASE_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_BALANCE_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_HOLD_BONUS_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_REFERRER_ADDRESS","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEPOSITS_MAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLD_BONUS_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLD_BONUS_PERCENT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"HOLD_BONUS_PERCENT_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INVEST_MIN_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_ADDRESS","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LIQUIDITY_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_ADDRESS","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MARKETING_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_CONTRACT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_DEPOSIT_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_HOLD_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MULTIPLIER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERCENTS_DIVIDER","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROMOTION_ADDRESS","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROMOTION_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_DEPTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"REFERRAL_LEVELS_MILESTONES","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"REFERRAL_LEVELS_PERCENTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"REFERRAL_TURNOVER_DEPTH","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USER_DEPOSITS_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USER_DEPOSITS_STEP_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VIP_BONUS_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VIP_BONUS_PERCENT_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VIP_BONUS_PERCENT_STAKE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"flipTokenContractAddress","type":"address"}],"name":"availableReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractPercent","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":"getContractBalanceRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getDepositsRates","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSiteStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"flipTokenContractAddress","type":"address"}],"name":"getStakeHOLDBonusRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"flipTokenContractAddress","type":"address"}],"name":"getStakeVIPBonusRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserAmountOfDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserAvailable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserDepositRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"uint256","name":"last","type":"uint256"},{"internalType":"uint256","name":"first","type":"uint256"}],"name":"getUserDeposits","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserPercentRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserReferralsStats","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[10]","name":"","type":"uint256[10]"},{"internalType":"uint256[10]","name":"","type":"uint256[10]"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"},{"internalType":"address","name":"flipTokenContractAddress","type":"address"}],"name":"getUserStakePercentRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"address","name":"_flipTokenContractAddress","type":"address"}],"name":"getUserStakeStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_userAddress","type":"address"},{"internalType":"address","name":"_flipTokenContractAddress","type":"address"}],"name":"getUserStakeTimeCheckpoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserStats","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserTotalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserTotalWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"referrer","type":"address"}],"name":"invest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"isActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"rbackPercent","type":"uint16"}],"name":"setRefback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContractAddress","type":"address"},{"internalType":"address","name":"_flipTokenContractAddress","type":"address"},{"internalType":"uint256","name":"_rate","type":"uint256"}],"name":"setTokenContractAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_flipTokenContractAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContractAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalInvested","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWithdrawn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_flipTokenContractAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"multiplier","type":"uint256"}],"name":"updateMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"users","outputs":[{"internalType":"uint32","name":"checkpoint","type":"uint32"},{"internalType":"address","name":"referrer","type":"address"},{"internalType":"uint256","name":"bonus","type":"uint256"},{"internalType":"uint16","name":"rbackPercent","type":"uint16"},{"internalType":"uint8","name":"refLevel","type":"uint8"},{"internalType":"uint256","name":"refTurnover","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_flipTokenContractAddress","type":"address"}],"name":"withdrawReward","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101806040526101f460809081526102bc60a05261038460c05261044c60e0526105786101005261064061012052610708610140526107d0610160526200004b90600190600862000339565b506040805161010081018252600081526801a055690d9db80000602082015268068155a43676e0000091810191909152681b1ae4d6e2ef5000006060820152683635c9adc5dea00000608082015268a2a15d09519be0000060a082015269021e19e0c9bab240000060c082015269043c33c193756480000060e0820152620000d89060029060086200038f565b506003600b55348015620000eb57600080fd5b506000620000f862000155565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506200014c6200015a565b600655620003ef565b335b90565b60004781620001b46200019d600a620001898568056bc75e2d631000006200020e602090811b6200383617901c565b6200027960201b6200389d1790919060201c565b61012c620002de60201b620038f61790919060201c565b9050620001d461271061012c620002de60201b620038f61790919060201c565b811015620001e6579150620001579050565b6200020461271061012c620002de60201b620038f61790919060201c565b9250505062000157565b600080821162000265576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816200026f57fe5b0490505b92915050565b6000826200028a5750600062000273565b828202828482816200029857fe5b0414620002d75760405162461bcd60e51b8152600401808060200182810382526021815260200180620040826021913960400191505060405180910390fd5b9392505050565b600082820183811015620002d7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b8280548282559060005260206000209081019282156200037d579160200282015b828111156200037d578251829061ffff169055916020019190600101906200035a565b506200038b929150620003d8565b5090565b8280548282559060005260206000209081019282156200037d579160200282015b828111156200037d57825182906001600160501b0316905591602001919060010190620003b0565b5b808211156200038b5760008155600101620003d9565b613c8380620003ff6000396000f3fe6080604052600436106103e45760003560e01c80636f9fb98a11610208578063b86e321c11610118578063e689c476116100ab578063f9dbe5201161007a578063f9dbe52014610ba3578063fb4cb32b14610e60578063fe26929f14610e93578063fe758b4914610ece578063fec259d314610ee3576103e4565b8063e689c47614610dd0578063e875df6a14610de5578063eca082d814610e18578063f2fde38b14610e2d576103e4565b8063e262113e116100e7578063e262113e14610da6578063e4170bfc14610dbb578063e4d423c714610990578063e624db84146103e9576103e4565b8063b86e321c14610d10578063c2a672e014610d43578063d141b7f714610d7c578063d416a58014610cfb576103e4565b80638e05016e1161019b578063a87430ba1161016a578063a87430ba14610c14578063a8aeb6c214610c8f578063adc9772e14610cc2578063aef18c2514610ba3578063af3e212214610cfb576103e4565b80638e05016e14610b8e5780639482e58414610ba35780639bb5771814610bb85780639f8a13d714610bcd576103e4565b80637e3abeea116101d75780637e3abeea14610b3157806381db0fd51461099057806382edaf9414610b645780638da5cb5b14610b79576103e4565b80636f9fb98a14610add578063715018a614610af257806375c4554d14610b075780637d88209714610b1c576103e4565b80633ccfd60b116103035780634e43603a116102965780635ffe6146116102655780635ffe614614610a4a57806362f3765e14610a20578063651aaa4c14610a7457806366ffca2814610aaf5780636aabddee14610a35576103e4565b80634e43603a146109a55780635216aeec14610a0b57806353ab431b14610a205780635a9d21b214610a35576103e4565b80634b319713116102d25780634b3197131461090f5780634c392bb5146109245780634cd906fe1461095f5780634d4700c814610990576103e4565b80633ccfd60b1461076557806343583be41461077a57806344767308146103e95780634698b883146107ad576103e4565b80631c00b0851161037b5780632c26347d1161034a5780632c26347d146103e95780633251c307146106bf57806332bc298c146106ea57806333af22b0146106ff576103e4565b80631c00b085146103e95780631dba5b08146105745780631fd0c2fe146105af5780632ba285e6146105ea576103e4565b806310f65b3b116103b757806310f65b3b146104a1578063153ab9df146104cb5780631b6cfc58146104fe5780631b9a26f014610541576103e4565b806301c234a8146103e957806303f9c79314610410578063059f8b16146104385780630a6b784e1461044d575b600080fd5b3480156103f557600080fd5b506103fe610ef8565b60408051918252519081900360200190f35b6104366004803603602081101561042657600080fd5b50356001600160a01b0316610efe565b005b34801561044457600080fd5b506103fe611979565b34801561045957600080fd5b506104886004803603604081101561047057600080fd5b506001600160a01b038135811691602001351661197f565b6040805192835260208301919091528051918290030190f35b3480156104ad57600080fd5b506103fe600480360360208110156104c457600080fd5b50356119b5565b3480156104d757600080fd5b506103fe600480360360208110156104ee57600080fd5b50356001600160a01b03166119d6565b34801561050a57600080fd5b506104366004803603606081101561052157600080fd5b506001600160a01b03813581169160208101359091169060400135611d3e565b34801561054d57600080fd5b506103fe6004803603602081101561056457600080fd5b50356001600160a01b0316611f0a565b34801561058057600080fd5b50610589611fa9565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156105bb57600080fd5b506103fe600480360360408110156105d257600080fd5b506001600160a01b0381358116916020013516611fb8565b3480156105f657600080fd5b5061061d6004803603602081101561060d57600080fd5b50356001600160a01b0316612085565b60405180896001600160a01b031681526020018861ffff1681526020018761ffff16815260200186815260200185600a60200280838360005b8381101561066e578181015183820152602001610656565b5050505090500184600a60200280838360005b83811015610699578181015183820152602001610681565b505050509050018381526020018281526020019850505050505050505060405180910390f35b3480156106cb57600080fd5b506106d4612188565b6040805160ff9092168252519081900360200190f35b3480156106f657600080fd5b506103fe61218d565b34801561070b57600080fd5b5061073a6004803603604081101561072257600080fd5b506001600160a01b0381358116916020013516612194565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561077157600080fd5b506104366121f8565b34801561078657600080fd5b506105896004803603602081101561079d57600080fd5b50356001600160a01b031661251f565b3480156107b957600080fd5b506107ec600480360360608110156107d057600080fd5b506001600160a01b03813516906020810135906040013561273d565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b83811015610838578181015183820152602001610820565b50505050905001858103845288818151815260200191508051906020019060200280838360005b8381101561087757818101518382015260200161085f565b50505050905001858103835287818151815260200191508051906020019060200280838360005b838110156108b657818101518382015260200161089e565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156108f55781810151838201526020016108dd565b505050509050019850505050505050505060405180910390f35b34801561091b57600080fd5b506103fe6129bd565b34801561093057600080fd5b506103fe6004803603604081101561094757600080fd5b506001600160a01b03813581169160200135166129c3565b34801561096b57600080fd5b506109746129e3565b604080516001600160a01b039092168252519081900360200190f35b34801561099c57600080fd5b506103fe6129fb565b3480156109b157600080fd5b506109d8600480360360208110156109c857600080fd5b50356001600160a01b0316612a00565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610a1757600080fd5b506103fe612a6b565b348015610a2c57600080fd5b506103fe612a71565b348015610a4157600080fd5b506103fe612a77565b348015610a5657600080fd5b5061043660048036036020811015610a6d57600080fd5b5035612a84565b348015610a8057600080fd5b506103fe60048036036040811015610a9757600080fd5b506001600160a01b0381358116916020013516612b4d565b348015610abb57600080fd5b5061043660048036036020811015610ad257600080fd5b503561ffff16612be1565b348015610ae957600080fd5b506103fe612c22565b348015610afe57600080fd5b50610436612c27565b348015610b1357600080fd5b50610974612cd3565b348015610b2857600080fd5b506103fe612ceb565b348015610b3d57600080fd5b506103fe60048036036020811015610b5457600080fd5b50356001600160a01b0316612cf1565b348015610b7057600080fd5b50610974612d51565b348015610b8557600080fd5b50610974612d60565b348015610b9a57600080fd5b50610974612d6f565b348015610baf57600080fd5b506103fe612d87565b348015610bc457600080fd5b506103fe612d8c565b348015610bd957600080fd5b50610c0060048036036020811015610bf057600080fd5b50356001600160a01b0316612d92565b604080519115158252519081900360200190f35b348015610c2057600080fd5b50610c4760048036036020811015610c3757600080fd5b50356001600160a01b0316612dfa565b6040805163ffffffff90971687526001600160a01b0390951660208701528585019390935261ffff909116606085015260ff16608084015260a0830152519081900360c00190f35b348015610c9b57600080fd5b506103fe60048036036020811015610cb257600080fd5b50356001600160a01b0316612e4b565b348015610cce57600080fd5b50610c0060048036036040811015610ce557600080fd5b506001600160a01b038135169060200135612e66565b348015610d0757600080fd5b506103fe6130e5565b348015610d1c57600080fd5b5061043660048036036020811015610d3357600080fd5b50356001600160a01b03166130eb565b348015610d4f57600080fd5b5061043660048036036040811015610d6657600080fd5b506001600160a01b038135169060200135613269565b348015610d8857600080fd5b506103fe60048036036020811015610d9f57600080fd5b5035613565565b348015610db257600080fd5b506103fe613575565b348015610dc757600080fd5b506103fe613580565b348015610ddc57600080fd5b5061097461358c565b348015610df157600080fd5b506103fe60048036036020811015610e0857600080fd5b50356001600160a01b03166135a4565b348015610e2457600080fd5b506106d46129fb565b348015610e3957600080fd5b5061043660048036036020811015610e5057600080fd5b50356001600160a01b03166135e8565b348015610e6c57600080fd5b506103fe60048036036020811015610e8357600080fd5b50356001600160a01b03166136ea565b348015610e9f57600080fd5b506103fe60048036036040811015610eb657600080fd5b506001600160a01b0381358116916020013516613773565b348015610eda57600080fd5b506103fe6137d0565b348015610eef57600080fd5b506103fe61382f565b61271081565b610f0733613950565b158015610f1357503332145b610f1c57600080fd5b662386f26fc10000341015610f78576040805162461bcd60e51b815260206004820152601f60248201527f4d696e696d756d206465706f73697420616d6f756e7420302e303120424e4200604482015290519081900360640190fd5b336000908152600c602052604090208054606411610fc75760405162461bcd60e51b8152600401808060200182810382526021815260200180613bd26021913960400191505060405180910390fd5b6000610fe1612710610fdb346101f461389d565b90613836565b90506000610ff7612710610fdb346101f461389d565b9050600061100d612710610fdb3461012c61389d565b60405190915073244220adf0aa433aea1d52119cc56d6394053d6f9084156108fc029085906000818181858888f19350505050158015611051573d6000803e3d6000fd5b5060405173aff3280999431555baa4266f9d17ce7c490793729083156108fc029084906000818181858888f19350505050158015611093573d6000803e3d6000fd5b5060405173d18268d2212091b65e770c27addd5a96024442b39082156108fc029083906000818181858888f193505050501580156110d5573d6000803e3d6000fd5b50337f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c161110c8361110687876138f6565b906138f6565b60408051918252519081900360200190a26001840154600090600160201b90046001600160a01b03166111bc5750600161114586612d92565b801561115a57506001600160a01b0386163314155b1561118b57600185018054640100000000600160c01b031916600160201b6001600160a01b038916021790556111bc565b600185018054640100000000600160c01b031916771f2ce24405461ecb42f68d76683bfff7770f1b92000000001790555b6001850154600090600160201b90046001600160a01b03161561174c5760015460009067ffffffffffffffff811180156111f557600080fd5b5060405190808252806020026020018201604052801561121f578160200160208202803683370190505b5060018801549091503390600160201b90046001600160a01b03166000805b600a8110156116d5576001600160a01b03831661125a576116d5565b60008161130a576001600160a01b0384166000908152600c602052604090206017015460018054909162010000900460ff1690811061129557fe5b60009182526020808320909101546001600160a01b0387168352600c90915260409091206017015460ff620100009091041693509050825b6001878260ff16815181106112de57fe5b9115156020928302919091019091015260ff81166112fb57611304565b600019016112cd565b5061147e565b6001600160a01b0384166000908152600c602052604090206017015460ff808516620100009092041611801561137757506001600160a01b0384166000908152600c60205260409020601701548651879162010000900460ff1690811061136d57fe5b6020026020010151155b1561147e5761141a60018460ff168154811061138f57fe5b6000918252602080832090910154604080518082018252601d81527f5265662070657263656e742063616c63756c6174696f6e206572726f72000000818501526001600160a01b038a168552600c9093529092206017015460018054909160ff620100009091041690811061140057fe5b90600052602060002001546139569092919063ffffffff16565b6001600160a01b0385166000908152600c602052604090206017015462010000900460ff1693509050825b6001878260ff168151811061145657fe5b9115156020928302919091019091015260ff81166114735761147c565b60001901611445565b505b6000611490612710610fdb348561389d565b9050821580156114be57506001600160a01b0385166000908152600c602052604090206017015461ffff1615155b80156114ca5750600081115b15611580576001600160a01b0385166000908152600c60205260409020601701546115029061271090610fdb90849061ffff1661389d565b604051909850339089156108fc02908a906000818181858888f19350505050158015611532573d6000803e3d6000fd5b5060408051898152905133916001600160a01b038816917f9ecbf25f4de0558ad0f8971a5c6f95e9607efde9c8880c8faa6b2cf7fbafcee39181900360200190a361157d81896139ed565b90505b801561163e576040516001600160a01b0386169082156108fc029083906000818181858888f193505050501580156115bc573d6000803e3d6000fd5b506001600160a01b0385166000908152600c60205260409020600201546115e390826138f6565b6001600160a01b0386166000818152600c6020908152604091829020600201939093558051848152905186933393927fd41f7e766eebcc7ff42b11ac8691bdf864db4afc0c55e71d629d54edce460d98929081900390910190a45b6001600160a01b0385166000908152600c6020526040902060030183600a811061166457fe5b018054600101905588156116a1576001600160a01b0385166000908152600c60205260409020600d0183600a811061169857fe5b01805460010190555b50506001600160a01b038084166000908152600c60205260409020600190810154949550600160201b90940416920161123e565b5060018a0154600160201b90046001600160a01b0316915060005b6005811015611746576001600160a01b03831661170c57611746565b6117168334613a4a565b6001600160a01b039283166000908152600c60205260409020600190810154600160201b900490931692016116f0565b50505050505b855461179e5760018601805463ffffffff19164263ffffffff161790556040805133815290517f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a916020908290030190a15b856000016040518060800160405280348152602001600081526020018381526020014263ffffffff16815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548163ffffffff021916908363ffffffff160217905550505061184f346004546138f690919063ffffffff16565b60045560038054600101905561186961012c6127106138f6565b600654101561189057600061187c6137d0565b905060065481111561188e5760068190555b505b60408051348152905133917f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de364919081900360200190a26007546118db906001600160a01b0316613950565b15611970576007546001600160a01b03166000818152600860205260409020600201546340c10f1990339061191190349061389d565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561195757600080fd5b505af115801561196b573d6000803e3d6000fd5b505050505b50505050505050565b600b5481565b6001600160a01b039182166000908152600a60209081526040808320939094168252919091522060018101546002909101549091565b600281815481106119c557600080fd5b600091825260209091200154905081565b6001600160a01b0381166000908152600c6020908152604080832081518154610140948102820185019093526101208101838152859491938492849190879085015b82821015611a72576000848152602090819020604080516080810182526004860290920180548352600180820154848601526002820154928401929092526003015463ffffffff1660608301529083529092019101611a18565b50505090825250600182015463ffffffff81166020830152600160201b90046001600160a01b0316604080830191909152600283015460608301528051610140810191829052608090920191906003840190600a9082845b815481526020019060010190808311611aca5750505091835250506040805161014081019182905260209092019190600d840190600a9082845b815481526020019060010190808311611b04575050509183525050601782015461ffff8116602083015262010000900460ff16604082015260189091015460609091015290506000611b5584611f0a565b905060008060005b84515160ff82161015611d3157611b9c600286600001518360ff1681518110611b8257fe5b60200260200101516000015161389d90919063ffffffff16565b8551805160ff8416908110611bad57fe5b6020026020010151602001511015611d2957846020015163ffffffff1685600001518260ff1681518110611bdd57fe5b60200260200101516060015163ffffffff161115611c6057611c5962015180610fdb611c3688600001518560ff1681518110611c1557fe5b60200260200101516060015163ffffffff16426139ed90919063ffffffff16565b611c53612710610fdb8a8c600001518960ff1681518110611b8257fe5b9061389d565b9150611c8a565b611c8762015180610fdb611c36886020015163ffffffff16426139ed90919063ffffffff16565b91505b611ca2600286600001518360ff1681518110611b8257fe5b611cd38387600001518460ff1681518110611cb957fe5b6020026020010151602001516138f690919063ffffffff16565b1115611d1c57611d1985600001518260ff1681518110611cef57fe5b602002602001015160200151611d13600288600001518560ff1681518110611b8257fe5b906139ed565b91505b611d2683836138f6565b92505b600101611b5d565b509093505050505b919050565b611d46613b17565b6001600160a01b0316611d57612d60565b6001600160a01b031614611da0576040805162461bcd60e51b81526020600482018190526024820152600080516020613bb2833981519152604482015290519081900360640190fd5b600081118015611db257506103e88111155b611df8576040805162461bcd60e51b8152602060048201526012602482015271496e76616c696420726174652076616c756560701b604482015290519081900360640190fd5b611e0183613950565b611e3c5760405162461bcd60e51b8152600401808060200182810382526030815260200180613b616030913960400191505060405180910390fd5b611e4582613950565b611e805760405162461bcd60e51b8152600401808060200182810382526035815260200180613c196035913960400191505060405180910390fd5b600780546001600160a01b03199081166001600160a01b03958616908117909255604080516060810182528381529486166020808701828152878401968752600086815260088352848120985189548716908b161789559051600189018054871691909a161790985594516002909601959095559385526009909252919092208054909216179055565b6001600160a01b0381166000908152600c60205260408120611f2b83612d92565b15611f9f576000611f3b846135a4565b6001830154909150600090611f6b90600a90611c53906201518090610fdb90429063ffffffff908116906139ed16565b9050612710811115611f7c57506127105b611f9582611106836006546138f690919063ffffffff16565b9350505050611d39565b5050600654611d39565b60045460035460065447919293565b600080611fc584846129c3565b6001600160a01b038086166000908152600a602090815260408083209388168352929052206001015490915061207b906201518090610fdb906120099042906139ed565b600b54611c539081612710610fdb612021828b6138f6565b600a60008f6001600160a01b03166001600160a01b0316815260200190815260200160002060008e6001600160a01b03166001600160a01b031681526020019081526020016000206000015461389d90919063ffffffff16565b9150505b92915050565b600080600080612093613b1b565b61209b613b1b565b6001600160a01b038781166000908152600c60205260408082206001810154601780830154600160201b90920490951680855283852090950154600283015460188401548551610140810196879052969788979596909561ffff808716969516946003890193600d8a01936201000090920460ff169290918590600a9082845b81548152602001906001019080831161211b57505060408051610140810191829052949850879350600a9250905082845b81548152602001906001019080831161214c57505050505092508160ff1691509850985098509850985098509850985050919395975091939597565b600581565b6201518081565b6001600160a01b038281166000908152600a602090815260408083209385168352929052908120805460038201546004909201548392839283928392906121db8a8a613773565b6121e58b8b612b4d565b939b929a50909850965090945092505050565b336000818152600c602052604081209161221190611f0a565b905060008060005b845460ff82161015612432576122536002866000018360ff168154811061223c57fe5b60009182526020909120600490910201549061389d565b856000018260ff168154811061226557fe5b906000526020600020906004020160010154101561242a576001850154855463ffffffff90911690869060ff841690811061229c57fe5b600091825260209091206003600490920201015463ffffffff1611156123235761231c62015180610fdb612300886000018560ff16815481106122db57fe5b6000918252602090912060036004909202010154429063ffffffff908116906139ed16565b611c53612710610fdb8a8c6000018960ff168154811061223c57fe5b915061234d565b600185015461234a906201518090610fdb9061230090429063ffffffff908116906139ed16565b91505b6123646002866000018360ff168154811061223c57fe5b61239a83876000018460ff168154811061237a57fe5b9060005260206000209060040201600101546138f690919063ffffffff16565b11156123e1576123de856000018260ff16815481106123b557fe5b906000526020600020906004020160010154611d136002886000018560ff168154811061223c57fe5b91505b6123f782866000018360ff168154811061237a57fe5b856000018260ff168154811061240957fe5b600091825260209091206001600490920201015561242783836138f6565b92505b600101612219565b5060008211612480576040805162461bcd60e51b81526020600482015260156024820152745573657220686173206e6f206469766964656e647360581b604482015290519081900360640190fd5b478281101561248d578092505b60018501805463ffffffff19164263ffffffff1617905560405133906108fc8515029085906000818181858888f193505050501580156124d1573d6000803e3d6000fd5b506005546124df90846138f6565b60055560408051848152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050505050565b6001600160a01b0381166000908152600c6020908152604080832081518154610140948102820185019093526101208101838152859485948594859493909284928491879085015b828210156125c1576000848152602090819020604080516080810182526004860290920180548352600180820154848601526002820154928401929092526003015463ffffffff1660608301529083529092019101612567565b50505090825250600182015463ffffffff81166020830152600160201b90046001600160a01b0316604080830191909152600283015460608301528051610140810191829052608090920191906003840190600a9082845b8154815260200190600101908083116126195750505091835250506040805161014081019182905260209092019190600d840190600a9082845b815481526020019060010190808311612653575050509183525050601782015461ffff81166020808401919091526201000090910460ff1660408301526018909201546060909101528101519091506000906126ca90600a90611c53906201518090610fdb90429063ffffffff908116906139ed16565b90506127108111156126db57506127105b61012c6126e788612d92565b156126f257816126f5565b60005b61270d600a611c534768056bc75e2d63100000613836565b6127168a612d92565b15612729576127248a6135a4565b61272c565b60005b955095509550955050509193509193565b6001600160a01b0383166000908152600c602052604081206060918291829182919061276987896139ed565b8254909150811115612779575080545b60008167ffffffffffffffff8111801561279257600080fd5b506040519080825280602002602001820160405280156127bc578160200160208202803683370190505b50905060008267ffffffffffffffff811180156127d857600080fd5b50604051908082528060200260200182016040528015612802578160200160208202803683370190505b50905060008367ffffffffffffffff8111801561281e57600080fd5b50604051908082528060200260200182016040528015612848578160200160208202803683370190505b50905060008467ffffffffffffffff8111801561286457600080fd5b5060405190808252806020026020018201604052801561288e578160200160208202803683370190505b50905060008b5b8d8111156129a8578760000160018203815481106128af57fe5b9060005260206000209060040201600001548683815181106128cd57fe5b6020026020010181815250508760000160018203815481106128eb57fe5b90600052602060002090600402016001015485838151811061290957fe5b60200260200101818152505087600001600182038154811061292757fe5b90600052602060002090600402016002015484838151811061294557fe5b60200260200101818152505087600001600182038154811061296357fe5b6000918252602090912060036004909202010154835163ffffffff9091169084908490811061298e57fe5b602090810291909101015260019091019060001901612895565b50939d929c50909a5098509650505050505050565b60055481565b60006129dc6129d28484612b4d565b6111068585613773565b9392505050565b73d18268d2212091b65e770c27addd5a96024442b381565b600a81565b6000806000806000806000612a1488611f0a565b90506000612a21896119d6565b90506000612a2e8a612cf1565b90506000612a3b8b612e4b565b90506000612a488c6136ea565b90506000612a558d6135a4565b959d949c50929a50909850965091945092505050565b60045481565b61012c81565b68056bc75e2d6310000081565b612a8c613b17565b6001600160a01b0316612a9d612d60565b6001600160a01b031614612ae6576040805162461bcd60e51b81526020600482018190526024820152600080516020613bb2833981519152604482015290519081900360640190fd5b600081118015612af7575060328111155b612b48576040805162461bcd60e51b815260206004820152601a60248201527f4d756c7469706c696572206973206f7574206f662072616e6765000000000000604482015290519081900360640190fd5b600b55565b6001600160a01b038083166000908152600a60209081526040808320938516835292905290812060020154612b845750600061207f565b6001600160a01b038084166000908152600a60209081526040808320938616835292905290812060020154612bca90606490611c53906201518090610fdb9042906139ed565b90506127108111156129dc5761271091505061207f565b6127108161ffff161115612bf457600080fd5b336000908152600c60205260409020805415612c1e5760178101805461ffff191661ffff84161790555b5050565b475b90565b612c2f613b17565b6001600160a01b0316612c40612d60565b6001600160a01b031614612c89576040805162461bcd60e51b81526020600482018190526024820152600080516020613bb2833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b731f2ce24405461ecb42f68d76683bfff7770f1b9281565b60035481565b6001600160a01b0381166000908152600c6020526040812081805b8254811015612d4957612d3f836000018281548110612d2757fe5b600091825260209091206004909102015483906138f6565b9150600101612d0c565b509392505050565b6007546001600160a01b031681565b6000546001600160a01b031690565b73aff3280999431555baa4266f9d17ce7c4907937281565b606481565b60065481565b6001600160a01b0381166000908152600c602052604081208054158015906129dc57508054612dce906002908390600019810190811061223c57fe5b815482906000198101908110612de057fe5b906000526020600020906004020160010154109392505050565b600c60205260009081526040902060018101546002820154601783015460189093015463ffffffff831693600160201b9093046001600160a01b03169261ffff8116916201000090910460ff169086565b6001600160a01b03166000908152600c602052604090205490565b6000808211612ebc576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c75650000000000604482015290519081900360640190fd5b612ec583613950565b612f005760405162461bcd60e51b8152600401808060200182810382526035815260200180613c196035913960400191505060405180910390fd5b604080516323b872dd60e01b81523360048201523060248201526044810184905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b158015612f5557600080fd5b505af1158015612f69573d6000803e3d6000fd5b505050506040513d6020811015612f7f57600080fd5b5051612f8d5750600061207f565b6000612f993385611fb8565b90508015612ffa57336000908152600a602090815260408083206001600160a01b0388168452909152902060030154612fd290826138f6565b336000908152600a602090815260408083206001600160a01b03891684529091529020600301555b336000908152600a602090815260408083206001600160a01b038816845290915290205461302890846138f6565b336000908152600a602090815260408083206001600160a01b038916845290915290209081554260018201556002015461308757336000908152600a602090815260408083206001600160a01b03881684529091529020426002909101555b6001600160a01b0380851660008181526009602090815260409182902054825188815292519394169233927f6e613e504dcbe267f60e295b08e0a211b63db8690d660e5ed4f864d409bb662092908290030190a45060019392505050565b6101f481565b60006131276130fa3384611fb8565b336000908152600a602090815260408083206001600160a01b0388168452909152902060030154906138f6565b90508015612c1e576001600160a01b038083166000908152600960205260409020541661315381613950565b1561326457336000908152600a602090815260408083206001600160a01b0387168452909152812042600182015560038101919091556004015461319790836138f6565b336000818152600a602090815260408083206001600160a01b038981168552925280832060049081019590955580516340c10f1960e01b815294850193909352602484018690529151918416926340c10f19926044808301939282900301818387803b15801561320657600080fd5b505af115801561321a573d6000803e3d6000fd5b50506040805185815290516001600160a01b0380881694508516925033917ff226a68f394fc92f62103b8c25167a003496cc208ebeede628ba73e76916c17a919081900360200190a45b505050565b600081116132be576040805162461bcd60e51b815260206004820152601b60248201527f496e76616c696420746f6b656e7320616d6f756e742076616c75650000000000604482015290519081900360640190fd5b336000908152600a602090815260408083206001600160a01b03861684529091529020548111156133205760405162461bcd60e51b8152600401808060200182810382526026815260200180613bf36026913960400191505060405180910390fd5b61332982613950565b6133645760405162461bcd60e51b8152600401808060200182810382526035815260200180613c196035913960400191505060405180910390fd5b60006133703384611fb8565b905080156133d157336000908152600a602090815260408083206001600160a01b03871684529091529020600301546133a990826138f6565b336000908152600a602090815260408083206001600160a01b03881684529091529020600301555b336000908152600a602090815260408083206001600160a01b03871684529091529020546133ff90836139ed565b336000908152600a602090815260408083206001600160a01b03881684529091529020818155426001909101551561346057336000908152600a602090815260408083206001600160a01b0387168452909152902042600290910155613488565b336000908152600a602090815260408083206001600160a01b03871684529091528120600201555b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b1580156134d757600080fd5b505af11580156134eb573d6000803e3d6000fd5b505050506040513d602081101561350157600080fd5b505161350c57600080fd5b6001600160a01b0380841660008181526009602090815260409182902054825187815292519394169233927fb9f634dc06666f582d41ccfbbb32947903698e0dbd4cc2a28f7c48999e044ffe92908290030190a4505050565b600181815481106119c557600080fd5b662386f26fc1000081565b678ac7230489e8000081565b73244220adf0aa433aea1d52119cc56d6394053d6f81565b60008060006135b284612e4b565b111561207f576135d2600a611c53678ac7230489e80000610fdb87612cf1565b905061271081111561207f575061271092915050565b6135f0613b17565b6001600160a01b0316613601612d60565b6001600160a01b03161461364a576040805162461bcd60e51b81526020600482018190526024820152600080516020613bb2833981519152604482015290519081900360640190fd5b6001600160a01b03811661368f5760405162461bcd60e51b8152600401808060200182810382526026815260200180613b3b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600c602052604081206002810154825b8254811015612d495761376983600001828154811061372457fe5b90600052602060002090600402016002015461110685600001848154811061374857fe5b906000526020600020906004020160010154856138f690919063ffffffff16565b9150600101613709565b6001600160a01b038083166000908152600a6020908152604080832093851683529290529081205481906137b790606490611c539068056bc75e2d63100000613836565b9050620186a08111156129dc57620186a091505061207f565b600047816137f86137ef600a611c538568056bc75e2d63100000613836565b61012c906138f6565b905061380861012c6127106138f6565b811015613818579150612c249050565b61382661012c6127106138f6565b92505050612c24565b620186a081565b600080821161388c576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161389557fe5b049392505050565b6000826138ac5750600061207f565b828202828482816138b957fe5b04146129dc5760405162461bcd60e51b8152600401808060200182810382526021815260200180613b916021913960400191505060405180910390fd5b6000828201838110156129dc576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b3b151590565b600081848411156139e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139aa578181015183820152602001613992565b50505050905090810190601f1680156139d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082821115613a44576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b0382166000908152600c6020526040902060180154613a7090826138f6565b6001600160a01b0383166000908152600c6020526040902060180155600254600019015b60ff8116156132645760028160ff1681548110613aad57fe5b60009182526020808320909101546001600160a01b0386168352600c90915260409091206018015410613b0e576001600160a01b0383166000908152600c60205260409020601701805462ff000019166201000060ff841602179055613264565b60001901613a94565b3390565b604051806101400160405280600a90602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737350726f76696465642061646472657373206973206e6f74206120746f6b656e20636f6e74726163742061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724d6178696d756d20313030206465706f736974732066726f6d20616464726573734e6f7420656e6f75676820746f6b656e73206f6e20746865207374616b652062616c616e636550726f76696465642061646472657373206973206e6f74206120666c697020746f6b656e20636f6e74726163742061646472657373a26469706673582212200561be7e440adaf5832ee2f3b2b04defe2525d6bb8a1c5280b128890ce22998f64736f6c63430007060033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

4637:26157:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6327:48;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8816:4870;;;;;;;;;;;;;;;;-1:-1:-1;8816:4870:0;-1:-1:-1;;;;;8816:4870:0;;:::i;:::-;;7360:29;;;;;;;;;;;;;:::i;30286:308::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30286:308:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4913:131;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4913:131:0;;:::i;17581:1399::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17581:1399:0;-1:-1:-1;;;;;17581:1399:0;;:::i;23369:650::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23369:650:0;;;;;;;;;;;;;;;;;:::i;16930:643::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16930:643:0;-1:-1:-1;;;;;16930:643:0;;:::i;21176:177::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26952:506;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26952:506:0;;;;;;;;;;:::i;22671:514::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22671:514:0;-1:-1:-1;;;;;22671:514:0;;:::i;:::-;;;;;-1:-1:-1;;;;;22671:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5099:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6278:42;;;;;;;;;;;;;:::i;29723:555::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29723:555:0;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13694:1839;;;;;;;;;;;;;:::i;22001:662::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22001:662:0;-1:-1:-1;;;;;22001:662:0;;:::i;20153:1015::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20153:1015:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6454:29;;;;;;;;;;;;;:::i;25461:281::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25461:281:0;;;;;;;;;;:::i;5575:94::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;5575:94:0;;;;;;;;;;;;;;6222:46;;;;;;;;;;;;;:::i;21361:632::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21361:632:0;-1:-1:-1;;;;;21361:632:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6419:28;;;;;;;;;;;;;:::i;5676:43::-;;;;;;;;;;;;;:::i;7165:60::-;;;;;;;;;;;;;:::i;30602:187::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30602:187:0;;:::i;24903:550::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24903:550:0;;;;;;;;;;:::i;15541:248::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15541:248:0;;;;:::i;15797:107::-;;;;;;;;;;;;;:::i;3375:148::-;;;;;;;;;;;;;:::i;5157:101::-;;;;;;;;;;;;;:::i;6384:28::-;;;;;;;;;;;;;:::i;19440:325::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19440:325:0;-1:-1:-1;;;;;19440:325:0;;:::i;6531:35::-;;;;;;;;;;;;;:::i;3140:87::-;;;;;;;;;;;;;:::i;5424:94::-;;;;;;;;;;;;;:::i;7031:54::-;;;;;;;;;;;;;:::i;6492:30::-;;;;;;;;;;;;;:::i;18988:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18988:292:0;-1:-1:-1;;;;;18988:292:0;;:::i;:::-;;;;;;;;;;;;;;;;;;7836:38;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7836:38:0;-1:-1:-1;;;;;7836:38:0;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;7836:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19288:144;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19288:144:0;-1:-1:-1;;;;;19288:144:0;;:::i;25750:1194::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25750:1194:0;;;;;;;;:::i;5374:43::-;;;;;;;;;;;;;:::i;27466:923::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27466:923:0;-1:-1:-1;;;;;27466:923:0;;:::i;28397:1318::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28397:1318:0;;;;;;;;:::i;4817:89::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4817:89:0;;:::i;4756:54::-;;;;;;;;;;;;;:::i;6161:53::-;;;;;;;;;;;;;:::i;5273:94::-;;;;;;;;;;;;;:::i;16452:470::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16452:470:0;-1:-1:-1;;;;;16452:470:0;;:::i;5051:41::-;;;;;;;;;;;;;:::i;3537:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3537:244:0;-1:-1:-1;;;;;3537:244:0;;:::i;19773:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19773:372:0;-1:-1:-1;;;;;19773:372:0;;:::i;24484:411::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24484:411:0;;;;;;;;;;:::i;15912:532::-;;;;;;;;;;;;;:::i;7294:56::-;;;;;;;;;;;;;:::i;6327:48::-;6370:5;6327:48;:::o;8816:4870::-;8885:22;8896:10;8885;:22::i;:::-;8884:23;:50;;;;-1:-1:-1;8911:10:0;8925:9;8911:23;8884:50;8876:59;;;;;;4800:10;8956:9;:30;;8948:74;;;;;-1:-1:-1;;;8948:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9061:10;9035:17;9055;;;:5;:17;;;;;9093:20;;4746:3;-1:-1:-1;9085:81:0;;;;-1:-1:-1;;;9085:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9179:20;9202:50;6370:5;9202:28;:9;5414:3;9202:13;:28::i;:::-;:32;;:50::i;:::-;9179:73;-1:-1:-1;9263:20:0;9286:50;6370:5;9286:28;:9;5565:3;9286:13;:28::i;:50::-;9263:73;-1:-1:-1;9347:20:0;9370:50;6370:5;9370:28;:9;5716:3;9370:13;:28::i;:50::-;9433:40;;9347:73;;-1:-1:-1;5325:42:0;;9433:40;;;;;9460:12;;9433:40;;;;9460:12;5325:42;9433:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9484:40:0;;5476:42;;9484:40;;;;;9511:12;;9484:40;;;;9511:12;5476:42;9484:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9535:40:0;;5627:42;;9535:40;;;;;9562:12;;9535:40;;;;9562:12;5627:42;9535:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9602:10:0;9593:70;9614:48;9649:12;9614:30;:12;9631;9614:16;:30::i;:::-;:34;;:48::i;:::-;9593:70;;;;;;;;;;;;;;;9713:13;;;;9676:14;;-1:-1:-1;;;9713:13:0;;-1:-1:-1;;;;;9713:13:0;9709:276;;-1:-1:-1;9769:4:0;9792:18;9801:8;9792;:18::i;:::-;:44;;;;-1:-1:-1;;;;;;9814:22:0;;9826:10;9814:22;;9792:44;9788:186;;;9855:13;;;:24;;-1:-1:-1;;;;;;9855:24:0;-1:-1:-1;;;;;;;;9855:24:0;;;;;;9788:186;;;9918:13;;;:40;;-1:-1:-1;;;;;;9918:40:0;;;;;9788:186;10033:13;;;;9997:21;;-1:-1:-1;;;10033:13:0;;-1:-1:-1;;;;;10033:13:0;:27;10029:2804;;10122:24;:31;10077;;10111:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10111:43:0;-1:-1:-1;10231:13:0;;;;10077:77;;-1:-1:-1;10189:10:0;;-1:-1:-1;;;10231:13:0;;-1:-1:-1;;;;;10231:13:0;10171:15;;10295:2201;5090:2;10315:18;;10295:2201;;;-1:-1:-1;;;;;10363:20:0;;10359:72;;10406:5;;10359:72;10451:18;10496:6;10492:1000;;-1:-1:-1;;;;;10563:13:0;;;;;;:5;:13;;;;;:22;;;10538:24;:48;;:24;;10563:22;;;;;;10538:48;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10623:13:0;;;;:5;:13;;;;;;;:22;;;;;;;;;;-1:-1:-1;10538:48:0;-1:-1:-1;10623:22:0;10666:214;10764:4;10741:17;10759:1;10741:20;;;;;;;;;;:27;;;:20;;;;;;;;;;;:27;10797:6;;;10793:66;;10830:5;;10793:66;-1:-1:-1;;10713:3:0;10666:214;;;;10492:1000;;;-1:-1:-1;;;;;10909:13:0;;;;;;:5;:13;;;;;:22;;;:36;;;;:22;;;;;:36;:82;;;;-1:-1:-1;;;;;;10968:13:0;;;;;;:5;:13;;;;;:22;;;10950:41;;;;10968:22;;;;;;10950:41;;;;;;;;;;;;10949:42;10909:82;10905:587;;;11027:152;11108:24;11133:11;11108:37;;;;;;;;;;;;;;;;;;;;;;11027:152;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11052:13:0;;;;:5;:13;;;;;;:22;;;11027:24;:48;;:24;;11052:22;;;;;;;11027:48;;;;;;;;;;;;;;:80;;:152;;;;;:::i;:::-;-1:-1:-1;;;;;11216:13:0;;;;;;:5;:13;;;;;:22;;;;;;;;;-1:-1:-1;11014:165:0;-1:-1:-1;11216:22:0;11259:214;11357:4;11334:17;11352:1;11334:20;;;;;;;;;;:27;;;:20;;;;;;;;;;;:27;11390:6;;;11386:66;;11423:5;;11386:66;-1:-1:-1;;11306:3:0;11259:214;;;;10905:587;11512:14;11529:47;6370:5;11529:25;:9;11543:10;11529:13;:25::i;:47::-;11512:64;-1:-1:-1;11601:6:0;;:40;;;;-1:-1:-1;;;;;;11611:13:0;;11640:1;11611:13;;;:5;:13;;;;;:26;;;;;:30;;11601:40;:54;;;;;11654:1;11645:6;:10;11601:54;11597:376;;;-1:-1:-1;;;;;11715:13:0;;;;;;:5;:13;;;;;:26;;;11696:69;;6370:5;;11696:47;;:6;;11715:26;;11696:10;:47::i;:69::-;11788:34;;11680:85;;-1:-1:-1;11788:10:0;;:34;;;;;11680:85;;11788:34;;;;11680:85;11788:10;:34;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11852:42:0;;;;;;;;11868:10;;-1:-1:-1;;;;;11852:42:0;;;;;;;;;;;;11928:25;:6;11939:13;11928:10;:25::i;:::-;11919:34;;11597:376;11997:10;;11993:254;;12032:41;;-1:-1:-1;;;;;12032:33:0;;;:41;;;;;12066:6;;12032:41;;;;12066:6;12032:33;:41;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12126:13:0;;;;;;:5;:13;;;;;:19;;;12118:40;;12151:6;12118:32;:40::i;:::-;-1:-1:-1;;;;;12096:13:0;;;;;;:5;:13;;;;;;;;;:19;;:62;;;;12188:39;;;;;;;12217:1;;12205:10;;12096:13;12188:39;;;;;;;;;;;11993:254;-1:-1:-1;;;;;12267:13:0;;;;;;:5;:13;;;;;:18;;12286:1;12267:21;;;;;;;;:23;;;;;;12309:85;;;;-1:-1:-1;;;;;12345:13:0;;;;;;:5;:13;;;;;:24;;12370:1;12345:27;;;;;;;;:29;;;;;;12309:85;-1:-1:-1;;;;;;;12458:13:0;;;;;;;:5;:13;;;;;:22;;;;;12424:6;;-1:-1:-1;;;;12458:22:0;;;;;10335:3;10295:2201;;;-1:-1:-1;12521:13:0;;;;-1:-1:-1;;;12521:13:0;;-1:-1:-1;;;;;12521:13:0;;-1:-1:-1;12554:9:0;12549:271;5147:1;12569:27;;12549:271;;;-1:-1:-1;;;;;12626:20:0;;12622:72;;12669:5;;12622:72;12714:38;12734:6;12742:9;12714:19;:38::i;:::-;-1:-1:-1;;;;;12782:13:0;;;;;;;:5;:13;;;;;:22;;;;;-1:-1:-1;;;12782:22:0;;;;;;12598:3;12549:271;;;;10029:2804;;;;;12849:20;;12845:137;;12891:15;;;:41;;-1:-1:-1;;12891:41:0;12916:15;12891:41;;;;;12952:18;;;12959:10;12952:18;;;;;;;;;;;;;;12845:137;12994:4;:13;;13013:61;;;;;;;;13021:9;13013:61;;;;13032:1;13013:61;;;;13035:13;13013:61;;;;13057:15;13013:61;;;;;12994:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13104:28;13122:9;13104:13;;:17;;:28;;;;:::i;:::-;13088:13;:44;13143:13;:15;;;;;;13193:38;5767:3;5952:5;13193:16;:38::i;:::-;13175:15;;:56;13171:269;;;13248:26;13277:24;:22;:24::i;:::-;13248:53;;13341:15;;13320:18;:36;13316:113;;;13377:15;:36;;;13316:113;13171:269;;13457:33;;;13480:9;13457:33;;;;13468:10;;13457:33;;;;;;;;;;13528:20;;13517:32;;-1:-1:-1;;;;;13528:20:0;13517:10;:32::i;:::-;13513:166;;;13579:20;;-1:-1:-1;;;;;13579:20:0;;13632:28;;;:6;:28;;;;;:33;;;13564:41;;13606:10;;13618:48;;:9;;:13;:48::i;:::-;13564:103;;;;;;;;;;;;;-1:-1:-1;;;;;13564:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13513:166;8816:4870;;;;;;;:::o;7360:29::-;;;;:::o;30286:308::-;-1:-1:-1;;;;;30446:20:0;;;30401:7;30446:20;;;:6;:20;;;;;;;;:47;;;;;;;;;;;:58;;;;30515:62;;;;;30446:58;;30286:308::o;4913:131::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4913:131:0;:::o;17581:1399::-;-1:-1:-1;;;;;17688:18:0;;17649:7;17688:18;;;:5;:18;;;;;;;;17669:37;;;;;;;;;;;;;;;;;;;;;17649:7;;17669:37;;;;17688:18;;17669:37;17649:7;;17669:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17669:37:0;;;-1:-1:-1;17669:37:0;;;;;;;;;;;-1:-1:-1;;;17669:37:0;;-1:-1:-1;;;;;17669:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17669:37:0;;;-1:-1:-1;;17669:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17669:37:0;;;-1:-1:-1;;17669:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17745:31:0;17764:11;17745:18;:31::i;:::-;17719:57;;17789:22;17822:17;17857:7;17852:1087;17874:13;;:20;17870:24;;;;17852:1087;;;17960:39;17997:1;17968:4;:13;;;17982:1;17968:16;;;;;;;;;;;;;;;;:23;;;17960:36;;:39;;;;:::i;:::-;17930:13;;:16;;;;;;;;;;;;;;;;;;:26;;;17922:77;17918:1008;;;18051:4;:15;;;18026:40;;:4;:13;;;18040:1;18026:16;;;;;;;;;;;;;;;;:22;;;:40;;;18022:567;;;18105:202;6314:6;18105:161;18213:52;18241:4;:13;;;18255:1;18241:16;;;;;;;;;;;;;;;;:22;;;18233:31;;18213:15;:19;;:52;;;;:::i;:::-;18106:75;6370:5;18106:53;18143:15;18114:4;:13;;;18128:1;18114:16;;;;;;;;;18106:75;18105:107;;:161::i;:202::-;18093:214;;18022:567;;;18372:195;6314:6;18372:154;18480:45;18508:4;:15;;;18500:24;;18480:15;:19;;:45;;;;:::i;18372:195::-;18360:207;;18022:567;18666:39;18703:1;18674:4;:13;;;18688:1;18674:16;;;;;;;;;18666:39;18613:50;18653:9;18621:4;:13;;;18635:1;18621:16;;;;;;;;;;;;;;;;:26;;;18613:39;;:50;;;;:::i;:::-;:92;18609:235;;;18742:82;18796:4;:13;;;18810:1;18796:16;;;;;;;;;;;;;;;;:26;;;18743:39;18780:1;18751:4;:13;;;18765:1;18751:16;;;;;;;;;18743:39;18742:45;;:82::i;:::-;18730:94;;18609:235;18881:29;:14;18900:9;18881:18;:29::i;:::-;18864:46;;17918:1008;17896:3;;17852:1087;;;-1:-1:-1;18958:14:0;;-1:-1:-1;;;;17581:1399:0;;;;:::o;23369:650::-;3292:12;:10;:12::i;:::-;-1:-1:-1;;;;;3281:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3281:23:0;;3273:68;;;;;-1:-1:-1;;;3273:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3273:68:0;;;;;;;;;;;;;;;23527:1:::1;23519:5;:9;:26;;;;;23541:4;23532:5;:13;;23519:26;23511:57;;;::::0;;-1:-1:-1;;;23511:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;23511:57:0;;;;;;;;;;;;;::::1;;23585:33;23596:21;23585:10;:33::i;:::-;23577:94;;;;-1:-1:-1::0;;;23577:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23688:37;23699:25;23688:10;:37::i;:::-;23680:103;;;;-1:-1:-1::0;;;23680:103:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23794:20;:44:::0;;-1:-1:-1;;;;;;23794:44:0;;::::1;-1:-1:-1::0;;;;;23794:44:0;;::::1;::::0;;::::1;::::0;;;23879:62:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;::::1;;::::0;;::::1;::::0;;;;;;;;;-1:-1:-1;23847:29:0;;;:6:::1;:29:::0;;;;;:94;;;;;::::1;::::0;;::::1;;::::0;;;;-1:-1:-1;23847:94:0;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;;;;::::1;::::0;;::::1;::::0;;;;23950:37;;;:10:::1;:37:::0;;;;;;;:61;;;;::::1;;::::0;;23369:650::o;16930:643::-;-1:-1:-1;;;;;17040:18:0;;17000:7;17040:18;;;:5;:18;;;;;17075:21;17046:11;17075:8;:21::i;:::-;17071:495;;;17113:23;17139:31;17158:11;17139:18;:31::i;:::-;17241:15;;;;17113:57;;-1:-1:-1;17187:22:0;;17212:86;;5887:2;;17212:62;;6314:6;;17213:45;;:15;;17241;;;;;17213:19;:45;:::i;17212:86::-;17187:111;;5829:5;17317:14;:33;17313:107;;;-1:-1:-1;5829:5:0;17313:107;17443:56;17483:15;17443:35;17463:14;17443:15;;:19;;:35;;;;:::i;:56::-;17436:63;;;;;;;17071:495;-1:-1:-1;;17539:15:0;;17532:22;;21176:177;21276:13;;21291;;21329:15;;21306:21;21176:177;;;:::o;26952:506::-;27053:7;27071:23;27097:62;27121:11;27134:24;27097:23;:62::i;:::-;-1:-1:-1;;;;;27367:19:0;;;;;;;:6;:19;;;;;;;;:45;;;;;;;;;:56;;;27071:88;;-1:-1:-1;27177:273:0;;6314:6;;27177:248;;27347:77;;:15;;:19;:77::i;:::-;27321:10;;27177:155;;;6370:5;27178:105;27245:37;6370:5;27266:15;27245:20;:37::i;:::-;27178:6;:19;27185:11;-1:-1:-1;;;;;27178:19:0;-1:-1:-1;;;;;27178:19:0;;;;;;;;;;;;:45;27198:24;-1:-1:-1;;;;;27178:45:0;-1:-1:-1;;;;;27178:45:0;;;;;;;;;;;;:52;;;:66;;:105;;;;:::i;27177:273::-;27170:280;;;26952:506;;;;;:::o;22671:514::-;22751:7;22760:6;22768;22776:7;22785:30;;:::i;:::-;22817;;:::i;:::-;-1:-1:-1;;;;;22898:18:0;;;22849:7;22898:18;;;:5;:18;;;;;;22949:13;;;;22975:17;;;;;-1:-1:-1;;;22949:13:0;;;;;;23005:20;;;;;;:33;;;;23051:10;;;;23150:16;;;;22929:248;;;;;;;;;22849:7;;;;22898:18;;22949:13;;22975:17;;;;;23005:33;;;23074:9;;;;23096:15;;;;23124:13;;;;;;;23150:16;;23074:9;;22929:248;;23074:9;22929:248;;;;;;;;;;;;;;;;;-1:-1:-1;;22929:248:0;;;;;;;;;;;;-1:-1:-1;22929:248:0;;-1:-1:-1;22929:248:0;;-1:-1:-1;22929:248:0;-1:-1:-1;22929:248:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22671:514;;;;;;;;;:::o;5099:49::-;5147:1;5099:49;:::o;6278:42::-;6314:6;6278:42;:::o;29723:555::-;-1:-1:-1;;;;;29912:20:0;;;29835:7;29912:20;;;:6;:20;;;;;;;;:47;;;;;;;;;;;:54;;29977:65;;;;30053:63;;;;;29835:7;;;;;;;;29977:65;30127:61;29912:20;:47;30127:20;:61::i;:::-;30199:62;30221:12;30235:25;30199:21;:62::i;:::-;29894:376;;;;-1:-1:-1;29894:376:0;;-1:-1:-1;29894:376:0;-1:-1:-1;29894:376:0;;-1:-1:-1;29723:555:0;-1:-1:-1;;;29723:555:0:o;13694:1839::-;13758:10;13732:17;13752;;;:5;:17;;;;;;13808:30;;:18;:30::i;:::-;13782:56;;13851:19;13881:17;13916:7;13911:1180;13933:20;;13929:24;;;;13911:1180;;;14019:39;14056:1;14027:4;:13;;14041:1;14027:16;;;;;;;;;;;;;;;;;;;;;;;:23;;14019:36;:39::i;:::-;13989:4;:13;;14003:1;13989:16;;;;;;;;;;;;;;;;;;;;:26;;;13981:77;13977:1103;;;14110:15;;;;14085:16;;14110:15;;;;;:4;;14085:16;;;;;;;;;;;;;;;;;;:22;:16;;;;;:22;;;;:40;14081:567;;;14164:202;6314:6;14164:161;14272:52;14300:4;:13;;14314:1;14300:16;;;;;;;;;;;;;;;;;;:22;:16;;;;;:22;;14272:15;;14300:22;;;;;14272:19;:52;:::i;:::-;14165:75;6370:5;14165:53;14202:15;14173:4;:13;;14187:1;14173:16;;;;;;;;;14164:202;14152:214;;14081:567;;;14567:15;;;;14431:195;;6314:6;;14431:154;;14539:45;;:15;;14567;;;;;14539:19;:45;:::i;14431:195::-;14419:207;;14081:567;14725:39;14762:1;14733:4;:13;;14747:1;14733:16;;;;;;;;;14725:39;14672:50;14712:9;14680:4;:13;;14694:1;14680:16;;;;;;;;;;;;;;;;;;;;:26;;;14672:39;;:50;;;;:::i;:::-;:92;14668:235;;;14801:82;14855:4;:13;;14869:1;14855:16;;;;;;;;;;;;;;;;;;;;:26;;;14802:39;14839:1;14810:4;:13;;14824:1;14810:16;;;;;;;;;14801:82;14789:94;;14668:235;14952:50;14992:9;14960:4;:13;;14974:1;14960:16;;;;;;;;;14952:50;14923:4;:13;;14937:1;14923:16;;;;;;;;;;;;;;;;;;:26;:16;;;;;:26;:79;15036:26;:11;15052:9;15036:15;:26::i;:::-;15022:40;;13977:1103;13955:3;;13911:1180;;;;15125:1;15111:11;:15;15103:49;;;;;-1:-1:-1;;;15103:49:0;;;;;;;;;;;;-1:-1:-1;;;15103:49:0;;;;;;;;;;;;;;;15191:21;15227:29;;;15223:91;;;15287:15;15273:29;;15223:91;15326:15;;;:41;;-1:-1:-1;;15326:41:0;15351:15;15326:41;;;;;15380:32;;:10;;:32;;;;;;;-1:-1:-1;15380:32:0;-1:-1:-1;15380:32:0;;:10;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15442:14:0;;:31;;15461:11;15442:18;:31::i;:::-;15425:14;:48;15491:34;;;;;;;;15501:10;;15491:34;;;;;;;;;;13694:1839;;;;;:::o;22001:662::-;-1:-1:-1;;;;;22133:18:0;;22069:7;22133:18;;;:5;:18;;;;;;;;22114:37;;;;;;;;;;;;;;;;;;;;;22069:7;;;;;;;;22114:37;22133:18;;22114:37;;22133:18;;22069:7;;22114:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22114:37:0;;;-1:-1:-1;22114:37:0;;;;;;;;;;;-1:-1:-1;;;22114:37:0;;-1:-1:-1;;;;;22114:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22114:37:0;;;-1:-1:-1;;22114:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22114:37:0;;;-1:-1:-1;;22114:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:15;;;;;-1:-1:-1;;;22189:86:0;;5887:2;;22189:62;;6314:6;;22190:45;;:15;;22210:24;;;;;22190:19;:45;:::i;22189:86::-;22162:113;;5829:5;22288:16;:35;22284:99;;;-1:-1:-1;5829:5:0;22284:99;5767:3;22436:21;22445:11;22436:8;:21::i;:::-;22435:22;:45;;22464:16;22435:45;;;22460:1;22435:45;22492:81;6084:2;22492:48;:21;6013:9;22492:25;:48::i;:81::-;22586:21;22595:11;22586:8;:21::i;:::-;22585:22;:60;;22614:31;22633:11;22614:18;:31::i;:::-;22585:60;;;22610:1;22585:60;22393:262;;;;;;;;;;22001:662;;;;;:::o;20153:1015::-;-1:-1:-1;;;;;20359:18:0;;20339:17;20359:18;;;:5;:18;;;;;20256:16;;;;;;;;20359:18;20406:15;:5;20416:4;20406:9;:15::i;:::-;20444:20;;20390:31;;-1:-1:-1;20436:28:0;;20432:89;;;-1:-1:-1;20489:20:0;;20432:89;20533:23;20573:5;20559:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20559:20:0;;20533:46;;20590:26;20633:5;20619:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20619:20:0;;20590:49;;20650:24;20691:5;20677:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20677:20:0;;20650:47;;20708:22;20747:5;20733:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20733:20:0;-1:-1:-1;20708:45:0;-1:-1:-1;20766:13:0;20811:5;20794:312;20822:4;20818:1;:8;20794:312;;;20864:4;:13;;20880:1;20878;:3;20864:18;;;;;;;;;;;;;;;;;;:25;;;20848:6;20855:5;20848:13;;;;;;;;;;;;;:41;;;;;20923:4;:13;;20939:1;20937;:3;20923:18;;;;;;;;;;;;;;;;;;:28;;;20904:9;20914:5;20904:16;;;;;;;;;;;;;:47;;;;;20983:4;:13;;20999:1;20997;:3;20983:18;;;;;;;;;;;;;;;;;;:26;;;20966:7;20974:5;20966:14;;;;;;;;;;;;;:43;;;;;21047:4;:13;;21063:1;21061;:3;21047:18;;;;;;;;;;;;;;;;:24;:18;;;;;:24;;21024:12;;21047:24;;;;;21024:5;;21030;;21024:12;;;;;;;;;;;;;;;:48;21087:7;;;;;-1:-1:-1;;20828:3:0;20794:312;;;-1:-1:-1;21126:6:0;;21134:9;;-1:-1:-1;21145:7:0;;-1:-1:-1;21134:9:0;-1:-1:-1;20153:1015:0;-1:-1:-1;;;;;;;20153:1015:0:o;6454:29::-;;;;:::o;25461:281::-;25570:7;25597:137;25673:60;25695:11;25708:24;25673:21;:60::i;:::-;25597:59;25618:11;25631:24;25597:20;:59::i;:137::-;25590:144;25461:281;-1:-1:-1;;;25461:281:0:o;5575:94::-;5627:42;5575:94;:::o;6222:46::-;6266:2;6222:46;:::o;21361:632::-;21425:7;21434;21443;21452;21461;21470;21490:16;21509:31;21528:11;21509:18;:31::i;:::-;21490:50;;21551:21;21575:29;21592:11;21575:16;:29::i;:::-;21551:53;;21615:21;21639:33;21660:11;21639:20;:33::i;:::-;21615:57;;21683:20;21706:36;21730:11;21706:23;:36::i;:::-;21683:59;;21753:21;21777:34;21799:11;21777:21;:34::i;:::-;21753:58;;21822:23;21848:31;21867:11;21848:18;:31::i;:::-;21900:8;;21910:13;;-1:-1:-1;21925:13:0;;-1:-1:-1;21940:12:0;;-1:-1:-1;21925:13:0;-1:-1:-1;21900:8:0;;-1:-1:-1;21361:632:0;-1:-1:-1;;;21361:632:0:o;6419:28::-;;;;:::o;5676:43::-;5716:3;5676:43;:::o;7165:60::-;7216:9;7165:60;:::o;30602:187::-;3292:12;:10;:12::i;:::-;-1:-1:-1;;;;;3281:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3281:23:0;;3273:68;;;;;-1:-1:-1;;;3273:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3273:68:0;;;;;;;;;;;;;;;30695:1:::1;30682:10;:14;:34;;;;;30714:2;30700:10;:16;;30682:34;30674:73;;;::::0;;-1:-1:-1;;;30674:73:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30758:10;:23:::0;30602:187::o;24903:550::-;-1:-1:-1;;;;;25034:19:0;;;25010:7;25034:19;;;:6;:19;;;;;;;;:45;;;;;;;;;;;:60;;;25030:104;;-1:-1:-1;25121:1:0;25114:8;;25030:104;-1:-1:-1;;;;;25191:19:0;;;25146:21;25191:19;;;:6;:19;;;;;;;;:45;;;;;;;;;;;:60;;;25170:128;;7082:3;;25170:98;;6314:6;;25171:81;;:15;;:19;:81::i;25170:128::-;25146:152;;7144:5;25315:13;:40;25311:102;;;7144:5;25370:31;;;;;15541:248;15624:5;15608:12;:21;;;;15600:30;;;;;;15669:10;15643:17;15663;;;:5;:17;;;;;15697:20;;:24;15693:89;;15738:17;;;:32;;-1:-1:-1;;15738:32:0;;;;;;;15693:89;15541:248;;:::o;15797:107::-;15875:21;15797:107;;:::o;3375:148::-;3292:12;:10;:12::i;:::-;-1:-1:-1;;;;;3281:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3281:23:0;;3273:68;;;;;-1:-1:-1;;;3273:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3273:68:0;;;;;;;;;;;;;;;3482:1:::1;3466:6:::0;;3445:40:::1;::::0;-1:-1:-1;;;;;3466:6:0;;::::1;::::0;3445:40:::1;::::0;3482:1;;3445:40:::1;3513:1;3496:19:::0;;-1:-1:-1;;;;;;3496:19:0::1;::::0;;3375:148::o;5157:101::-;5216:42;5157:101;:::o;6384:28::-;;;;:::o;19440:325::-;-1:-1:-1;;;;;19552:18:0;;19512:7;19552:18;;;:5;:18;;;;;19512:7;;19610:122;19634:20;;19630:24;;19610:122;;;19685:35;19696:4;:13;;19710:1;19696:16;;;;;;;;;;;;;;;;;;;;;:23;19685:6;;:10;:35::i;:::-;19676:44;-1:-1:-1;19656:3:0;;19610:122;;;-1:-1:-1;19751:6:0;19440:325;-1:-1:-1;;;19440:325:0:o;6531:35::-;;;-1:-1:-1;;;;;6531:35:0;;:::o;3140:87::-;3186:7;3213:6;-1:-1:-1;;;;;3213:6:0;3140:87;:::o;5424:94::-;5476:42;5424:94;:::o;7031:54::-;7082:3;7031:54;:::o;6492:30::-;;;;:::o;18988:292::-;-1:-1:-1;;;;;19085:18:0;;19048:4;19085:18;;;:5;:18;;;;;19124:20;;:24;;;;19123:149;;-1:-1:-1;19234:20:0;;19212:60;;19270:1;;19220:4;;-1:-1:-1;;19234:22:0;;;19220:37;;;;;19212:60;19175:20;;19161:4;;-1:-1:-1;;19175:22:0;;;19161:37;;;;;;;;;;;;;;;;:47;;;19153:119;19116:156;18988:292;-1:-1:-1;;;18988:292:0:o;7836:38::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7836:38:0;;;-1:-1:-1;;;;;7836:38:0;;;;;;;;;;;;;;:::o;19288:144::-;-1:-1:-1;;;;;19390:18:0;19363:7;19390:18;;;:5;:18;;;;;:34;;19288:144::o;25750:1194::-;25835:4;25868:1;25858:7;:11;25850:51;;;;;-1:-1:-1;;;25850:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25918:37;25929:25;25918:10;:37::i;:::-;25910:103;;;;-1:-1:-1;;;25910:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26029:82;;;-1:-1:-1;;;26029:82:0;;26076:10;26029:82;;;;26096:4;26029:82;;;;;;;;;;;;-1:-1:-1;;;;;26029:46:0;;;;;:82;;;;;;;;;;;;;;-1:-1:-1;26029:46:0;:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26029:82:0;26024:122;;-1:-1:-1;26131:5:0;26124:12;;26024:122;26156:14;26173:54;26189:10;26201:25;26173:15;:54::i;:::-;26156:71;-1:-1:-1;26240:10:0;;26236:178;;26336:10;26329:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;26329:45:0;;;;;;;;;:63;;;:75;;26397:6;26329:67;:75::i;:::-;26270:10;26263:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;26263:45:0;;;;;;;;;:63;;:141;26236:178;26486:10;26479:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;26479:45:0;;;;;;;;;:52;:65;;26536:7;26479:56;:65::i;:::-;26431:10;26424:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;26424:45:0;;;;;;;;;:120;;;26612:15;26553:56;;;:74;26640:60;;;26636:170;;26725:10;26718:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;26718:45:0;;;;;;;;;26781:15;26718:60;;;;:78;26636:170;-1:-1:-1;;;;;26821:93:0;;;26840:37;;;;:10;:37;;;;;;;;;;26821:93;;;;;;;;;26840:37;;26828:10;;26821:93;;;;;;;;;-1:-1:-1;26932:4:0;;25750:1194;-1:-1:-1;;;25750:1194:0:o;5374:43::-;5414:3;5374:43;:::o;27466:923::-;27543:14;27560:133;27638:54;27654:10;27666:25;27638:15;:54::i;:::-;27567:10;27560:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;27560:45:0;;;;;;;;;:63;;;;:77;:133::i;:::-;27543:150;-1:-1:-1;27708:10:0;;27704:678;;-1:-1:-1;;;;;27763:37:0;;;27731:29;27763:37;;;:10;:37;;;;;;;27827:33;27763:37;27827:10;:33::i;:::-;27823:550;;;27882:10;27875:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;27875:45:0;;;;;;;;;27934:15;27875:56;;;:74;27962:63;;;:67;;;;28106:61;;;:73;;28172:6;28106:65;:73::i;:::-;28049:10;28042:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;28042:45:0;;;;;;;;;;:61;;;;:137;;;;28194:62;;-1:-1:-1;;;28194:62:0;;;;;;;;;;;;;;;;;:42;;;;;;:62;;;;;28042:18;28194:62;;;;;28042:18;28194:42;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;28276:85:0;;;;;;;;-1:-1:-1;;;;;28276:85:0;;;;-1:-1:-1;28276:85:0;;;-1:-1:-1;28292:10:0;;28276:85;;;;;;;;;;27823:550;27704:678;27466:923;;:::o;28397:1318::-;28502:1;28492:7;:11;28484:51;;;;;-1:-1:-1;;;28484:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;28570:10;28563:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;28563:45:0;;;;;;;;;:52;28552:63;;;28544:114;;;;-1:-1:-1;;;28544:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28675:37;28686:25;28675:10;:37::i;:::-;28667:103;;;;-1:-1:-1;;;28667:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28781:14;28798:54;28814:10;28826:25;28798:15;:54::i;:::-;28781:71;-1:-1:-1;28865:10:0;;28861:178;;28961:10;28954:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;28954:45:0;;;;;;;;;:63;;;:75;;29022:6;28954:67;:75::i;:::-;28895:10;28888:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;28888:45:0;;;;;;;;;:63;;:141;28861:178;29111:10;29104:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;29104:45:0;;;;;;;;;:52;:65;;29161:7;29104:56;:65::i;:::-;29056:10;29049:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;29049:45:0;;;;;;;;;:120;;;29237:15;29178:56;;;;:74;29265:56;29261:253;;29341:10;29334:18;;;;:6;:18;;;;;;;;-1:-1:-1;;;;;29334:45:0;;;;;;;;;29397:15;29334:60;;;;:78;29261:253;;;29446:10;29502:1;29439:18;;;:6;:18;;;;;;;;-1:-1:-1;;;;;29439:45:0;;;;;;;;;:60;;:64;29261:253;29532:63;;;-1:-1:-1;;;29532:63:0;;29575:10;29532:63;;;;;;;;;;;;-1:-1:-1;;;;;29532:42:0;;;;;:63;;;;;;;;;;;;;;-1:-1:-1;29532:42:0;:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29532:63:0;29524:72;;;;;;-1:-1:-1;;;;;29612:95:0;;;29633:37;;;;:10;:37;;;;;;;;;;29612:95;;;;;;;;;29633:37;;29621:10;;29612:95;;;;;;;;;28397:1318;;;:::o;4817:89::-;;;;;;;;;;;;4756:54;4800:10;4756:54;:::o;6161:53::-;6206:8;6161:53;:::o;5273:94::-;5325:42;5273:94;:::o;16452:470::-;16522:7;16542:23;16621:1;16582:36;16606:11;16582:23;:36::i;:::-;:40;16578:302;;;16657:80;6266:2;16657:57;6206:8;16657:33;16678:11;16657:20;:33::i;:80::-;16639:98;;6148:5;16758:15;:37;16754:115;;;-1:-1:-1;6148:5:0;16899:15;16452:470;-1:-1:-1;;16452:470:0:o;3537:244::-;3292:12;:10;:12::i;:::-;-1:-1:-1;;;;;3281:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;3281:23:0;;3273:68;;;;;-1:-1:-1;;;3273:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3273:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3626:22:0;::::1;3618:73;;;;-1:-1:-1::0;;;3618:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3728:6;::::0;;3707:38:::1;::::0;-1:-1:-1;;;;;3707:38:0;;::::1;::::0;3728:6;::::1;::::0;3707:38:::1;::::0;::::1;3756:6;:17:::0;;-1:-1:-1;;;;;;3756:17:0::1;-1:-1:-1::0;;;;;3756:17:0;;;::::1;::::0;;;::::1;::::0;;3537:244::o;19773:372::-;-1:-1:-1;;;;;19886:18:0;;19846:7;19886:18;;;:5;:18;;;;;19934:10;;;;19846:7;19957:155;19981:20;;19977:24;;19957:155;;;20032:68;20075:4;:13;;20089:1;20075:16;;;;;;;;;;;;;;;;;;:24;;;20032:38;20043:4;:13;;20057:1;20043:16;;;;;;;;;;;;;;;;;;:26;;;20032:6;:10;;:38;;;;:::i;:68::-;20023:77;-1:-1:-1;20003:3:0;;19957:155;;24484:411;-1:-1:-1;;;;;24633:19:0;;;24590:7;24633:19;;;:6;:19;;;;;;;;:45;;;;;;;;;;;:52;24590:7;;24633:111;;7283:3;;24633:82;;7216:9;24633:56;:82::i;:111::-;24610:134;;7344:6;24761:12;:38;24757:99;;;7344:6;24814:30;;;;;15912:532;15967:7;16013:21;15967:7;16078:143;16107:103;6084:2;16107:56;16013:21;6013:9;16107:33;:56::i;:103::-;5767:3;;16078:16;:143::i;:::-;16045:176;-1:-1:-1;16263:38:0;5767:3;5952:5;16263:16;:38::i;:::-;16238:22;:63;16234:203;;;16325:22;-1:-1:-1;16318:29:0;;-1:-1:-1;16318:29:0;16234:203;16387:38;5767:3;5952:5;16387:16;:38::i;:::-;16380:45;;;;;;7294:56;7344:6;7294:56;:::o;1658:153::-;1716:7;1748:1;1744;:5;1736:44;;;;;-1:-1:-1;;;1736:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;1802:1;1798;:5;;;;;;;1658:153;-1:-1:-1;;;1658:153:0:o;1424:220::-;1482:7;1506:6;1502:20;;-1:-1:-1;1521:1:0;1514:8;;1502:20;1545:5;;;1549:1;1545;:5;:1;1569:5;;;;;:10;1561:56;;;;-1:-1:-1;;;1561:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1059:179;1117:7;1149:5;;;1173:6;;;;1165:46;;;;;-1:-1:-1;;;1165:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;23193:168;23309:17;23345:8;;;23193:168::o;1990:166::-;2076:7;2112:12;2104:6;;;;2096:29;;;;-1:-1:-1;;;2096:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2143:5:0;;;1990:166::o;1252:158::-;1310:7;1343:1;1338;:6;;1330:49;;;;;-1:-1:-1;;;1330:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1397:5:0;;;1252:158::o;24027:441::-;-1:-1:-1;;;;;24146:19:0;;;;;;:5;:19;;;;;:31;;;:44;;24182:7;24146:35;:44::i;:::-;-1:-1:-1;;;;;24112:19:0;;;;;;:5;:19;;;;;:31;;:78;24226:26;:33;-1:-1:-1;;24226:37:0;24201:260;24266:9;;;;24201:260;;24336:26;24363:5;24336:33;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24301:19:0;;;;:5;:19;;;;;;;:31;;;:68;24297:155;;-1:-1:-1;;;;;24384:19:0;;;;;;:5;:19;;;;;:28;;:36;;-1:-1:-1;;24384:36:0;;;;;;;;;24435:5;;24297:155;-1:-1:-1;;24277:7:0;24201:260;;2554:106;2642:10;2554:106;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://0561be7e440adaf5832ee2f3b2b04defe2525d6bb8a1c5280b128890ce22998f
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.