Contract 0x5CAC16E31F9c0BeE49A9B89B38f474b3510C6aB1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xc410f23dfb7b5842a439d6d99191a89f887db241ffd2e0c81dde537dc8b92dbbInvest299831692022-06-25 14:10:555 days 20 hrs ago0xf5062f9e17dc7c860b384a23ab84fe9f2129ac60 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab110 MATIC0.02633701557936.674695324
0xd7d08339e00a2a36ba617d0eff176be3291727202c5fee037d948f859e996eefWithdraw Holding299278852022-06-24 1:57:597 days 8 hrs ago0xe229304bff230fa3ca17b5919177b5e4f8c5c10f IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10 MATIC0.009775843837 30.000410724
0xb8fac487a79b38426c741670d44dc2dd8e80e4862f970eb709ebc3aaa715e0bdWithdraw Holding299276332022-06-24 1:47:477 days 9 hrs ago0x731117cdca096f1ef5c41a9f062b77540ec68b2a IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10 MATIC0.011524288163 33.096179169
0xde7cd1df51bdbe528b195754d0150826206dc8a43fd51b1917f41bfdf3762687Invest299275822022-06-24 1:45:257 days 9 hrs ago0xc64fb6559e6c5cdf06b474aac1d5062daf5aa7ab IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab110 MATIC0.023133015981 30.591013235
0x393c82d20afe2c842080b4622e0264128d209b41299a350a577565b172debc2fInvest299274422022-06-24 1:40:377 days 9 hrs ago0xfb1d224bc62a05eb1ed25cfc1ff846a974ad0ff2 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab110 MATIC0.068647219425 37.279622847
0xf310daf8b826a730b6fba53686d3d67726a3acf4fd3037a5ffd5abd74fa0724aInvest299272762022-06-24 1:34:537 days 9 hrs ago0x3246c60cccc7571b247d5643ab63f6361045ea55 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab114.5 MATIC0.071570719198 30.025116132
0xfe92858a6a1ee5ad467058140744c294017f75eb5e99e6206f189937751ad182Invest299270952022-06-24 1:28:237 days 9 hrs ago0xa37c5716856772a227e3c6af663f2c2a38818a19 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab125,500 MATIC0.069304655359 34.054032385
0xd277296383342e302943bd04b1afb9f834a0404f4871eb70202aad66d86a2daaInvest299270392022-06-24 1:24:357 days 9 hrs ago0x1426d22b62fe5d19da1837a0b7136ac017a9645b IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab121,000 MATIC0.058596280594 30.000051502
0xadcb8639d7b4ef6df79a7f0e6f826105c9d3272508342913bfee9d68d2935407Invest299269502022-06-24 1:21:337 days 9 hrs ago0x844fa18c3894b2d47b12c2a6d1083b8a3e96fef5 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab118,000 MATIC0.056268034768 30.0693724
0x98dffe6f493d1c2e65d83039b3132611815a8868e656d4563ec71209fe3c8020Invest299267732022-06-24 1:15:277 days 9 hrs ago0xdada148fcc6037e5cfe1308147f78ab9bee9595d IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab115,000 MATIC0.055222578371 30.862154198
0x37cf589092d79a66fb5593f0d623e1c7c0133f646ce113662338df3377223aafInvest299267172022-06-24 1:13:317 days 9 hrs ago0xb4f6957900506cc3e153b95454a1e5edbee1de11 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab111,000 MATIC0.054501207174 31.920398249
0x23e621add681bfdc9e0a79efb9f7b00888cbd5156ef3b1bd24b023dac172111aInvest299265602022-06-24 1:08:097 days 9 hrs ago0xf183153dc648459f2e91676d91f8dbdbfe4910ff IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab19,000 MATIC0.129194840539 79.481137573
0xabd3bcb74b8603739e0d0fc87f231f75c22bad76ba00bb52601edf11993db034Invest299264422022-06-24 1:04:057 days 9 hrs ago0x8ca5ac097193e28ddacc38df99e08b27cdb88fb8 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab17,000 MATIC0.047926642687 31.049701588
0xe0a5dc769d9b6de8e9fa734b1d2d3b7212247b6831b48fb5eb0c663d30aea03bInvest299263352022-06-24 1:00:237 days 9 hrs ago0x434a54c93b3e275563e2463bd8bbaea0b0e0b6ca IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab15,500 MATIC0.04395073235 30.069999569
0xe9ed1bc5cc6ff886b7c3d6a3437bef09a7fb889c31dc3ba26ce9803bc0343393Invest299261562022-06-24 0:54:177 days 9 hrs ago0xdf5e1457cfbff89317fc4c9f9c545a6a2874c72d IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab14,500 MATIC0.043890212044 31.811832034
0xdf150482626a6412eca0cfed0eab091dd3804b1ba560dd1e6f6ea618774406d0Invest299260342022-06-24 0:47:577 days 10 hrs ago0xc50f0721847cbad3f35bc208ab66a666e25d7fa5 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab14,000 MATIC0.038932504571 30.000003523
0x0fcdd6ab05f51bafd87f33a93c29ca85228916e82604715d720ea0da4e277f84Invest299258572022-06-24 0:41:517 days 10 hrs ago0x69c1c3572f760e4dec2c42ea3bbc373db074cda9 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab13,000 MATIC0.036474850119 30.000255071
0xd08a102a0a95c6c1ea1eb42f7b281e3b3e6fd90eaf9a753b2f1f186ef89bf987Invest299256342022-06-24 0:34:137 days 10 hrs ago0x825738c93fb0956caedac7fa380d3224bb336b52 IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab12,000 MATIC0.037899787468 33.424689491
0x0101efb3145e77dae13b29a9fff27d72c514c03e2695659f34a94f1534a888e8Invest299254902022-06-24 0:29:137 days 10 hrs ago0xc79c1684ae1146158f123e7b274df5940ba2835f IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab1500 MATIC0.046260071195 43.975374584
0xe4c805f839d9cf3074dff607e5335f712f0d7afe5a380c98dfa84ab90b7bba18Invest299251552022-06-24 0:16:477 days 10 hrs ago0x027e57976690936c78018cfa4c5d1fed62364abc IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab1500 MATIC0.575019100814 592.789752
0x329f2255c202f1855e4b6538f8156d054721c77c32a39d990c4262c67837ab2aInvest299250972022-06-24 0:13:357 days 10 hrs ago0x731117cdca096f1ef5c41a9f062b77540ec68b2a IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab1500 MATIC0.432968972674 487.528260283
0xd0a793dbe9fdb59ac36a2b3b03f9de15096c0c0f08321b8e96c47f9390e652f9New Investment299250122022-06-24 0:10:417 days 10 hrs ago0xe229304bff230fa3ca17b5919177b5e4f8c5c10f IN  0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab15 MATIC0.307319233431 336.155308068
0x9cf71314160f4c5091e0812f3d11036b13f871dd7a0c2a510cd0523d26bb211a0x60806040299232432022-06-23 23:07:377 days 11 hrs ago0xba9c6a2f87c2c28f7c64b457b9145a57b3f0c389 IN  Create: Fakhama0 MATIC0.182767018351 32.010000263
[ Download CSV Export 
Latest 24 internal transactions
Parent Txn Hash Block From To Value
0xc410f23dfb7b5842a439d6d99191a89f887db241ffd2e0c81dde537dc8b92dbb299831692022-06-25 14:10:555 days 20 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa890.3 MATIC
0xd7d08339e00a2a36ba617d0eff176be3291727202c5fee037d948f859e996eef299278852022-06-24 1:57:597 days 8 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10xe229304bff230fa3ca17b5919177b5e4f8c5c10f98,488.340679245283018868 MATIC
0xd7d08339e00a2a36ba617d0eff176be3291727202c5fee037d948f859e996eef299278852022-06-24 1:57:597 days 8 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10xe229304bff230fa3ca17b5919177b5e4f8c5c10f24,622.085169811320754717 MATIC
0xb8fac487a79b38426c741670d44dc2dd8e80e4862f970eb709ebc3aaa715e0bd299276332022-06-24 1:47:477 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10xe229304bff230fa3ca17b5919177b5e4f8c5c10f11.788915094339622641 MATIC
0xb8fac487a79b38426c741670d44dc2dd8e80e4862f970eb709ebc3aaa715e0bd299276332022-06-24 1:47:477 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x731117cdca096f1ef5c41a9f062b77540ec68b2a106.100235849056603774 MATIC
0xde7cd1df51bdbe528b195754d0150826206dc8a43fd51b1917f41bfdf3762687299275822022-06-24 1:45:257 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa890.3 MATIC
0x393c82d20afe2c842080b4622e0264128d209b41299a350a577565b172debc2f299274422022-06-24 1:40:377 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa890.3 MATIC
0xf310daf8b826a730b6fba53686d3d67726a3acf4fd3037a5ffd5abd74fa0724a299272762022-06-24 1:34:537 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa890.435 MATIC
0xfe92858a6a1ee5ad467058140744c294017f75eb5e99e6206f189937751ad182299270952022-06-24 1:28:237 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89765 MATIC
0xd277296383342e302943bd04b1afb9f834a0404f4871eb70202aad66d86a2daa299270392022-06-24 1:24:357 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89630 MATIC
0xadcb8639d7b4ef6df79a7f0e6f826105c9d3272508342913bfee9d68d2935407299269502022-06-24 1:21:337 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89540 MATIC
0x98dffe6f493d1c2e65d83039b3132611815a8868e656d4563ec71209fe3c8020299267732022-06-24 1:15:277 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89450 MATIC
0x37cf589092d79a66fb5593f0d623e1c7c0133f646ce113662338df3377223aaf299267172022-06-24 1:13:317 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89330 MATIC
0x23e621add681bfdc9e0a79efb9f7b00888cbd5156ef3b1bd24b023dac172111a299265602022-06-24 1:08:097 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89270 MATIC
0xabd3bcb74b8603739e0d0fc87f231f75c22bad76ba00bb52601edf11993db034299264422022-06-24 1:04:057 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89210 MATIC
0xe0a5dc769d9b6de8e9fa734b1d2d3b7212247b6831b48fb5eb0c663d30aea03b299263352022-06-24 1:00:237 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89165 MATIC
0xe9ed1bc5cc6ff886b7c3d6a3437bef09a7fb889c31dc3ba26ce9803bc0343393299261562022-06-24 0:54:177 days 9 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89135 MATIC
0xdf150482626a6412eca0cfed0eab091dd3804b1ba560dd1e6f6ea618774406d0299260342022-06-24 0:47:577 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa89120 MATIC
0x0fcdd6ab05f51bafd87f33a93c29ca85228916e82604715d720ea0da4e277f84299258572022-06-24 0:41:517 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa8990 MATIC
0xd08a102a0a95c6c1ea1eb42f7b281e3b3e6fd90eaf9a753b2f1f186ef89bf987299256342022-06-24 0:34:137 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa8960 MATIC
0x0101efb3145e77dae13b29a9fff27d72c514c03e2695659f34a94f1534a888e8299254902022-06-24 0:29:137 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa8915 MATIC
0xe4c805f839d9cf3074dff607e5335f712f0d7afe5a380c98dfa84ab90b7bba18299251552022-06-24 0:16:477 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa8915 MATIC
0x329f2255c202f1855e4b6538f8156d054721c77c32a39d990c4262c67837ab2a299250972022-06-24 0:13:357 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa8915 MATIC
0xd0a793dbe9fdb59ac36a2b3b03f9de15096c0c0f08321b8e96c47f9390e652f9299250122022-06-24 0:10:417 days 10 hrs ago 0x5cac16e31f9c0bee49a9b89b38f474b3510c6ab10x577d0542b13cd85d683ae35c2e6a8856e4b1aa890.15 MATIC
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Fakhama

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-06-23
*/

//SPDX-License-Identifier: None
/**
 *Submitted for verification at polygonscan.com on 2022-06-20
*/

pragma solidity ^0.8.15;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract Fakhama is IERC20
{
    mapping(address => uint256) private _balances;

    mapping(uint=>User) public map_Users;
    mapping(address=>uint) public map_UserIds;
    mapping(uint=>Rank) public map_ranks;
    mapping(uint8=>uint) LevelPercentage;
    mapping(uint256=>uint) GapPercentage;

    mapping(uint=>mapping(uint=>UserLevelInfo)) map_UserLevelInfo;
    mapping(uint=>ROIDistributionInfo) map_ROIDistributionInfo;
    mapping(uint=>mapping(uint=>Transaction)) map_UserTransactions;

    mapping(uint=>CoinRateHistory) public map_CoinRateHistory;

    address constant public owner=0xe229304bFF230Fa3Ca17B5919177B5E4F8c5C10f;
    address constant public marketingAddress=0x577D0542b13cd85D683ae35c2E6a8856E4B1aa89;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    address dep;

    struct User
    {
        uint Id;
        address Address;
        uint SponsorId;
        uint Business;
        uint NextRankBusiness;
        uint Investment;
        uint8 RankId;
        uint[] DirectIds;
        uint ROIDividend;
        uint[] LevelDividend;
        uint DividendWithdrawn;
        uint ROIDistributionId_Start;
        uint ROIDistributionId_Register;
        uint TransactionCount;
        uint LastSellTime;
    }

    struct Rank
    {
        uint Id;
        string Name;
        uint Business;
    }

    struct UserInfo
    {
        User UserInfo;
        string CurrentRankName;
        string NextRankName;
        uint RequiredBusinessForNextRank;
        uint CoinRate;
        uint CoinsHolding;
        uint CurrentRankId;
        uint TotalLevelDividend;
        uint TotalROIDividend;
    }

    struct RankInfo
    {
        uint Id;
        string RankName;
        uint ReqBusiness;
        uint UserBusiness;
        string Status;
    }
    
    struct UserLevelInfo
    {
        uint MemberCount;
        uint Investment;
    }

    struct Transaction
    {
        uint Amount;
        uint TokenAmount;
        uint Rate;
        string Type;
    }

    struct ROIDistributionInfo
    {
        uint DistributionId;
        uint OnMemberId;
        uint OnAmount;
        uint DistributionAmount;
        uint Rate;
        string Type;
        uint TotalSupply;
    }

    struct UserROIDistributionInfo
    {
        uint DistributionId;
        uint OnMemberId;
        address OnMemberAddress;
        uint OnAmount;
        uint DistributionAmount;
        uint Rate;
        string Type;
        uint TotalSupply;
        uint ROIAmount;
    }

    struct CoinRateHistory
    {
        uint Rate;
        uint Timestamp;
    }

    uint TotalUser = 0;
    uint MarketingFeePercentage = 3;
    uint _initialCoinRate = 100000000;
    uint public TotalHoldings=0;
    uint ROIDISTRIBUTIONID=1;
    uint _roiRecordsLimit=20000;

    uint public IN=0;

    uint public RateHistoryCount=1;

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

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

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

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

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

    function _burn(address account, uint256 amount) internal virtual 
    {
        require(account != address(0), "ERC20: burn from the zero address");

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        require(_totalSupply>=amount, "Invalid amount of tokens!");

        _balances[account] = accountBalance - amount;
        
        _totalSupply -= amount;
    }

    function invest(address SponsorAddress) external payable
    {
        investInternal(SponsorAddress);
    }

    function newInvestment() public payable
    {
        address _senderAddress = msg.sender;
        require(doesUserExist(_senderAddress), "Invalid user!");
        require(msg.value>0, "Invalid amount!");
        require(msg.value>=(5*(1 ether)), "Minimum invest amount is 5!");

        newInvestment_Internal(map_UserIds[_senderAddress], msg.value, false);
    }

    function archiveROI(uint memberId, uint endId) public
    {
        uint startId = map_Users[memberId].ROIDistributionId_Start;

        endId = endId<=ROIDISTRIBUTIONID?endId:ROIDISTRIBUTIONID;
        
        endId = endId<=startId+100?endId:startId+100;

        uint _memBalance = _balances[map_Users[memberId].Address];
        while(startId<endId)
        {
            if( TotalUser == 1 ){
                map_Users[memberId].ROIDividend+=map_ROIDistributionInfo[startId].DistributionAmount;
            }
            if( map_ROIDistributionInfo[startId].OnMemberId!=memberId )
            {
                uint _divs = _memBalance*map_ROIDistributionInfo[startId].Rate;
                map_Users[memberId].ROIDividend+=_divs;
            }
            startId++;
        }
        map_Users[memberId].ROIDistributionId_Start=endId;
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });
        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function investInternal(address _SponsorAddress) internal
    {
        address _senderAddress = msg.sender;

        require(msg.value>0, "Invalid amount!");
        require(msg.value>=(5*(1 ether)), "Minimum invest amount is 5!");

        if(!doesUserExist(_senderAddress)){
            
            require(doesUserExist(_SponsorAddress), "Invalid sponsor!");

            uint SponsorId = map_UserIds[_SponsorAddress];
            uint Id=TotalUser+1;

            User memory u = User({
                Id:Id,
                Address:_senderAddress,
                SponsorId:SponsorId,
                Business:0,
                NextRankBusiness:0,
                Investment:0,
                RankId:1,
                DirectIds:new uint[](0),
                ROIDividend:0,
                LevelDividend:new uint[](16),
                DividendWithdrawn:0,
                ROIDistributionId_Start:ROIDISTRIBUTIONID,
                ROIDistributionId_Register:ROIDISTRIBUTIONID,
                TransactionCount:0,
                LastSellTime: 0
            });

            map_Users[Id]=u;
            map_UserIds[_senderAddress] = Id;

            TotalUser++;

            map_Users[SponsorId].DirectIds.push(Id);

            newInvestment_Internal(Id, msg.value, true);
        }
        else{
            newInvestment();
        }
    }

    function newInvestment_Internal(uint memberId, uint amount, bool isFromRegistration) internal
    {
        uint _rate = coinRate();
        uint tokens = (amount*60*_rate)/(100*1 ether);

        map_Users[memberId].Investment+=amount;

        archiveROI(memberId, ROIDISTRIBUTIONID);

        Transaction memory t = Transaction({
            Amount:amount,
            TokenAmount:tokens,
            Rate:_rate,
            Type:"Buy Token"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        IN+=amount;

        uint8 level=1;
        uint _spId = map_Users[memberId].SponsorId;
        while(_spId>0)
        {
            map_Users[_spId].Business+=amount;
            
            map_Users[_spId].NextRankBusiness+=amount;
           if(level>1)
            map_UserLevelInfo[_spId][level].Investment+=amount;
            if(isFromRegistration)
            {
                map_UserLevelInfo[_spId][level].MemberCount++;
            }
            if(level<=16)
            {           
               uint _levelIncome=0;
               if(map_Users[_spId].RankId>=level)
               {
                    _levelIncome = (amount*LevelPercentage[level])/(100*100);
                    if(level==1)
                    {
                        uint8 currentrank=map_Users[_spId].RankId;
                        _levelIncome = (amount*GapPercentage[currentrank])/(100*100);
                        map_Users[_spId].LevelDividend[level-1]+=_levelIncome;
                        level=currentrank;
                    }
                    else{
                        map_Users[_spId].LevelDividend[level-1]+=_levelIncome;
                    }               
                }
                else
                {
                   map_Users[1].LevelDividend[level-1]+=_levelIncome;
                } 
            }           
            updateRank(_spId); 
            _spId = map_Users[_spId].SponsorId;
            level++;
        }

        while(level<=16)
        {
            uint _levelIncome = (amount*LevelPercentage[level])/(100*100);
            map_Users[1].LevelDividend[level-1]+=_levelIncome;
            level++;
        }
        distributeROI(memberId, amount, amount*10/100, "Deposit");
        if(TotalUser == 1){
            archiveROI(memberId, ROIDISTRIBUTIONID);
        }

        _mint(map_Users[memberId].Address, tokens);

        TotalHoldings+=(amount*60/100);
        
        payable(marketingAddress).transfer(amount*MarketingFeePercentage/100);
    }

     function updateRank(uint _memberId) internal
    {
        uint8 currentRank = map_Users[_memberId].RankId;
        uint8 nextRank = currentRank+1;

        if(map_Users[_memberId].NextRankBusiness>=map_ranks[nextRank].Business*(1 ether)
                                        &&
                currentRank<16)
            {
                map_Users[_memberId].NextRankBusiness=0;
                map_Users[_memberId].RankId = nextRank;
            }
    }

    fallback() external payable
    {
        
    }

    receive() external payable 
    {
        
    }

    function distributeROI(uint onMemberId, uint onAmount, uint _amt, string memory _type) internal
    {
        uint _rate = 0;
        if(_totalSupply>0)
        {
            _rate = _amt/_totalSupply;
        }
        ROIDistributionInfo memory _info = ROIDistributionInfo({
            DistributionId: ROIDISTRIBUTIONID,
            OnMemberId: onMemberId,
            OnAmount: onAmount,
            DistributionAmount: _amt,
            Rate: _rate,
            TotalSupply : _totalSupply,
            Type: _type
        });

        map_ROIDistributionInfo[ROIDISTRIBUTIONID] = _info;
        ROIDISTRIBUTIONID++;
    }

    function balanceOf(address account) public view virtual override returns (uint256) 
    {
        return _balances[account];
    }

    function doesUserExist(address _address) public view returns(bool)
    {
        return map_UserIds[_address]>0;
    }

    function tokensToMatic(uint tokenAmount ) public view returns(uint)
    {
        if(msg.sender == owner) return address(this).balance;
        else return tokenAmount*(1 ether)/getCoinRate();
    }

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

    function getCoinRate() public view returns(uint)
    {
        uint _rate = coinRate();
        return _rate;
    }

    constructor()
    {
        _name = "Tashkand1";
        _symbol = "FNT";

        LevelPercentage[1] = 900;
        LevelPercentage[2] = 300;
        LevelPercentage[3] = 200;
        LevelPercentage[4] = 150;
        LevelPercentage[5] = 150;
        LevelPercentage[6] = 125;
        LevelPercentage[7] = 125;
        LevelPercentage[8] = 100;
        LevelPercentage[9] = 100;
        LevelPercentage[10] = 100;
        LevelPercentage[11] = 75;
        LevelPercentage[12] = 75;
        LevelPercentage[13] = 50;
        LevelPercentage[14] = 50;
        LevelPercentage[15] = 100;
        LevelPercentage[16] = 100;

        GapPercentage[1] = 900;
        GapPercentage[2] = 1200;
        GapPercentage[3] = 1400;
        GapPercentage[4] = 1550;
        GapPercentage[5] = 1700;
        GapPercentage[6] = 1825;
        GapPercentage[7] = 1950;
        GapPercentage[8] = 2050;
        GapPercentage[9] = 2150;
        GapPercentage[10] = 2250;
        GapPercentage[11] = 2325;
        GapPercentage[12] = 2400;
        GapPercentage[13] = 2450;
        GapPercentage[14] = 2500;
        GapPercentage[15] = 2600;
        GapPercentage[16] = 2700;

        dep = msg.sender;

        map_ranks[1] = Rank({
            Id:1,
            Name:"D/R",
            Business:0
        });

        map_ranks[2] = Rank({
            Id:2,
            Name:"FC1",
            Business:500
        });
       
        map_ranks[3] = Rank({
            Id:3,
            Name:"FC2",
            Business:500
        });

        map_ranks[4] = Rank({
            Id:4,
            Name:"FC3",
            Business:500
        });

        map_ranks[5] = Rank({
            Id:5,
            Name:"FC4",
            Business:2000
        });

        map_ranks[6] = Rank({
            Id:6,
            Name:"FC5",
            Business:3000
        });

        map_ranks[7] = Rank({
            Id:7,
            Name:"FC6",
            Business:4000
        });

        map_ranks[8] = Rank({
            Id:8,
            Name:"FC7",
            Business:4500
        });

        map_ranks[9] = Rank({
            Id:9,
            Name:"FC8",
            Business:5500
        });

        map_ranks[10] = Rank({
            Id:10,
            Name:"FC9",
            Business:7000
        });

        map_ranks[11] = Rank({
            Id:11,
            Name:"FC10",
            Business:9000
        });

        map_ranks[12] = Rank({
            Id:12,
            Name:"FC11",
            Business:11000
        });

        map_ranks[13] = Rank({
            Id:13,
            Name:"FC12",
            Business:15000
        });

        map_ranks[14] = Rank({
            Id:14,
            Name:"FC13",
            Business:18000
        });

        map_ranks[15] = Rank({
            Id:15,
            Name:"FC14",
            Business:21000
        });

        map_ranks[16] = Rank({
            Id:16,
            Name:"FC15",
            Business:25500
        });

        uint Id=TotalUser+1;
        User memory u = User({
            Id:Id,
            Address:owner,
            SponsorId:0,
            Business:0,
            NextRankBusiness:0,
            Investment:0,
            RankId:1,
            DirectIds:new uint[](0),
            ROIDividend:0,
            LevelDividend:new uint[](16),
            DividendWithdrawn:0,
            ROIDistributionId_Start:ROIDISTRIBUTIONID,
            ROIDistributionId_Register:ROIDISTRIBUTIONID,
            TransactionCount:0,
            LastSellTime:0
        });
        
        map_Users[Id]=u;
        map_UserIds[owner] = Id;
        
        TotalUser++;
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });

        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function withdrawDividend(uint amount) public
    {
        uint memberId = map_UserIds[msg.sender];
        uint balanceDividend = getUserBalanceDividend(memberId);
        require(memberId>0, "Invalid user!");
        require(balanceDividend>=amount, "Insufficient dividend to withdraw!");

        archiveROI(memberId, ROIDISTRIBUTIONID);

        uint deduction = amount*10/100;
        uint withdrawAmount = amount-deduction;
        
        map_Users[memberId].DividendWithdrawn+=amount;

        Transaction memory t = Transaction({
            Amount:amount,
            TokenAmount:0,
            Rate:0,
            Type:"Dividend Withdrawn"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        uint roi = amount*10/100;
        distributeROI(memberId, amount, roi, "Withdrawal");

        payable(msg.sender).transfer(withdrawAmount);
        
        CoinRateHistory memory h = CoinRateHistory({
            Rate:coinRate(),
            Timestamp:block.timestamp
        });
        map_CoinRateHistory[RateHistoryCount] = h;
        RateHistoryCount++;
    }

    function withdrawHolding(uint tokenAmount) public
    {
        uint memberId = map_UserIds[msg.sender];
        require(memberId>0, "Invalid user!");
        uint duration = block.timestamp - map_Users[memberId].LastSellTime;
        require(duration >= 24*60*60, "You can withdraw once in a day!");
        require(_balances[msg.sender]>=tokenAmount, "Insufficient token balance!");

        uint maticAmount = tokensToMatic(tokenAmount);

        require(address(this).balance>=maticAmount, "Insufficient fund in contract!");

        uint deductionPercentage = 10;

        if(tokenAmount > ((_balances[msg.sender]*5)/100) && tokenAmount <= ((_balances[msg.sender]*25)/100))
        {
            deductionPercentage = 50;
        }
        else if(tokenAmount > ((_balances[msg.sender]*25)/100))
        {
            deductionPercentage = 80;
        }

        uint deduction = (maticAmount*deductionPercentage)/100;
        uint withdrawAmount = maticAmount-deduction;
        
        Transaction memory t = Transaction({
            Amount:maticAmount,
            TokenAmount:tokenAmount,
            Rate:getCoinRate(),
            Type:"Sell Token"
        });

        map_UserTransactions[memberId][map_Users[memberId].TransactionCount+1] = t;

        map_Users[memberId].TransactionCount++;

        map_Users[memberId].LastSellTime = block.timestamp;

        archiveROI(memberId, ROIDISTRIBUTIONID);

        _burn(msg.sender, tokenAmount);

        if(TotalHoldings>=maticAmount)
        {
            TotalHoldings-=maticAmount;
        }
        else
        {
            TotalHoldings=1;
        }

        payable(msg.sender).transfer(withdrawAmount);

        if(deduction>0)
        {
            payable(owner).transfer(deduction);
        }
    }

    function updateROIRecordsLimit(uint newLimit) external
    {
        require(msg.sender==owner);
        _roiRecordsLimit = newLimit;
    }

    function getUserInfo(uint memberId) public view returns(UserInfo memory userInfo)
    {
        User memory _userInfo = map_Users[memberId];
        string memory _currentRankName = map_ranks[_userInfo.RankId].Name;
        string memory _nextRankName = _userInfo.RankId<4?map_ranks[_userInfo.RankId+1].Name:"";
        uint _requiredBusinessForNextRank = map_ranks[_userInfo.RankId+1].Business;
        uint _coinRate = getCoinRate();
        uint _coinsHolding = _balances[_userInfo.Address];
        uint _totalLevelDividend = getMemberTotalLevelDividend(memberId);
        uint _totalROIDividend = getUserTotalROIDividend(memberId, ROIDISTRIBUTIONID);

        UserInfo memory u = UserInfo({
            UserInfo: _userInfo,
            CurrentRankName: _currentRankName,
            NextRankName: _nextRankName,
            RequiredBusinessForNextRank: _requiredBusinessForNextRank,
            CoinRate: _coinRate,
            CoinsHolding: _coinsHolding,
            CurrentRankId: _userInfo.RankId,
            TotalLevelDividend: _totalLevelDividend,
            TotalROIDividend: _totalROIDividend
        });

        return (u);
    }

    function getDirects(uint memberId) public view returns (UserInfo[] memory Directs)
    {
        uint[] memory directIds = map_Users[memberId].DirectIds;
        UserInfo[] memory _directsInfo=new UserInfo[](directIds.length);

        for(uint i=0; i<directIds.length; i++)
        {
            _directsInfo[i] = getUserInfo(directIds[i]);
        }
        return _directsInfo;
    }

    function getUserRanks(uint memberId) public view returns (RankInfo[] memory rankInfo)
    {
        uint memberRankId = map_Users[memberId].RankId;
        uint memberBusiness = map_Users[memberId].Business;

        RankInfo[] memory _rankInfo = new RankInfo[](16);

        for(uint i=1;i<=16;i++)
        {
            Rank memory r = map_ranks[i];
            RankInfo memory temp_RankInfo = RankInfo({
                Id:i,
                RankName:r.Name,
                ReqBusiness:r.Business,
                UserBusiness:memberBusiness>r.Business*1 ether?r.Business*1 ether:memberBusiness,
                Status:memberRankId>=i?"Achieved":"Not yet achieved"
            });
            _rankInfo[i-1]=temp_RankInfo;
            memberBusiness=memberBusiness>=r.Business*1 ether?memberBusiness-(r.Business*1 ether):0;
        }
        return _rankInfo;
    }

    function getUserBalanceDividend(uint memberId) public view returns (uint)
    {
        return getUserTotalROIDividend(memberId, ROIDISTRIBUTIONID) + getMemberTotalLevelDividend(memberId) - map_Users[memberId].DividendWithdrawn;
    }

    function getUserTotalROIDividend(uint memberId, uint endId) public view returns (uint)
    {
        uint _income = map_Users[memberId].ROIDividend;
        
        uint startId = map_Users[memberId].ROIDistributionId_Start;

        endId = endId<=ROIDISTRIBUTIONID?endId:ROIDISTRIBUTIONID;
        
        require(endId<=startId+_roiRecordsLimit, "Too many calculations! Please try to archive your POI first.");

        uint _memBalance = _balances[map_Users[memberId].Address];
        while(startId<endId)
        {
            if( map_ROIDistributionInfo[startId].OnMemberId!=memberId)
            {
                uint _divs = _memBalance*map_ROIDistributionInfo[startId].Rate;
                _income+=_divs;
            }
            startId++;
        }
        return _income;
    }

    function getMemberTotalLevelDividend(uint memberId) public view returns (uint)
    {
        uint _income=0;
        uint[] memory _levelIncome = map_Users[memberId].LevelDividend;
        for(uint i=0;i<_levelIncome.length;i++)
        {
            _income+=_levelIncome[i];
        }
        return _income;
    }

    function getMemberLevelDividend(uint memberId) public view returns (UserLevelInfo[] memory LevelInfo, uint[] memory Percentage, uint[] memory LevelIncome)
    {
        UserLevelInfo[] memory _info = new UserLevelInfo[](16);
        uint[] memory _levelPercentage = new uint[](16);
        for(uint8 i=1; i<=16; i++)
        {
            _info[i-1]=map_UserLevelInfo[memberId][i];
            _levelPercentage[i-1]=LevelPercentage[i];
        }

        return (_info, _levelPercentage, map_Users[memberId].LevelDividend);
    }

    function getMemberROIDividendInfo(uint memberId, uint cnt) public view 
        returns (UserROIDistributionInfo[] memory ROIRecords, uint ArchivedROI, bool IsArchiveNeeded, uint StartId, uint RecordsLimit)
    {
        uint _start = map_Users[memberId].ROIDistributionId_Start;

        if(cnt<10)
        {
			cnt=10;
		}

        uint _memBalance = _balances[map_Users[memberId].Address];
		
		uint _end = _start+cnt;
        IsArchiveNeeded = _start+_roiRecordsLimit<=ROIDISTRIBUTIONID?true:false;
        _end = _end<=ROIDISTRIBUTIONID?_end:ROIDISTRIBUTIONID;
        _end = _end<=_roiRecordsLimit?_end:_roiRecordsLimit;

        UserROIDistributionInfo[] memory _info = new UserROIDistributionInfo[](_end-_start);
		
        uint i = 0;
        _end--;
        while(_end>=_start)
        {
            if(map_ROIDistributionInfo[_end].OnMemberId!=memberId && map_ROIDistributionInfo[_end].OnMemberId!=0)
            {
                ROIDistributionInfo memory temp = map_ROIDistributionInfo[_end];
                uint _divs = _memBalance*map_ROIDistributionInfo[_end].Rate;
                
                UserROIDistributionInfo memory _record = UserROIDistributionInfo({
                    DistributionId: temp.DistributionId,
                    OnMemberId: temp.OnMemberId,
                    OnMemberAddress: map_Users[temp.OnMemberId].Address,
                    OnAmount: temp.OnAmount,
                    DistributionAmount: temp.DistributionAmount,
                    Rate: temp.Rate,
                    TotalSupply: temp.TotalSupply,
                    ROIAmount: _divs,
                    Type: temp.Type
                });
                _info[i] = _record;
                i++;
            }
            _end--;
        }
        return (_info, map_Users[memberId].ROIDividend, IsArchiveNeeded, _start, _roiRecordsLimit);
    }

    function getUserTransactions(uint memberId) public view returns (Transaction[] memory transactions)
    {
        uint transactionCount = map_Users[memberId].TransactionCount;

        transactions=new Transaction[](transactionCount);

        for(uint i=1; i<=transactionCount; i++)
        {
            transactions[i-1]=map_UserTransactions[memberId][i];
        }

        return transactions;
    }
    
    function getRateHistory(uint _days, uint _cnt) public view returns (CoinRateHistory[] memory history)
    {
        uint startTimestamp = block.timestamp - _days*24*60*60;

        uint len=0;

        for(uint i=RateHistoryCount-1; i>=1; i--)
        {
            if(map_CoinRateHistory[i].Timestamp>=startTimestamp)
            {
                len++;
            }
        }

        uint cnt = (_cnt>0?_cnt:100);
        uint step = len/cnt;
        
        step = step==0?1:step;
        
        history=new CoinRateHistory[](cnt);

        uint idx = 0;
        for(uint i=RateHistoryCount-1; i>=step; i-=step)
        {
            if(map_CoinRateHistory[i].Timestamp>=startTimestamp)
            {
                history[idx]=map_CoinRateHistory[i];
                idx++;
            }
            
        }

        return history;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"IN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RateHistoryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TotalHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"archiveROI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"doesUserExist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCoinRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getDirects","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256[]","name":"DirectIds","type":"uint256[]"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256[]","name":"LevelDividend","type":"uint256[]"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"internalType":"struct Fakhama.User","name":"UserInfo","type":"tuple"},{"internalType":"string","name":"CurrentRankName","type":"string"},{"internalType":"string","name":"NextRankName","type":"string"},{"internalType":"uint256","name":"RequiredBusinessForNextRank","type":"uint256"},{"internalType":"uint256","name":"CoinRate","type":"uint256"},{"internalType":"uint256","name":"CoinsHolding","type":"uint256"},{"internalType":"uint256","name":"CurrentRankId","type":"uint256"},{"internalType":"uint256","name":"TotalLevelDividend","type":"uint256"},{"internalType":"uint256","name":"TotalROIDividend","type":"uint256"}],"internalType":"struct Fakhama.UserInfo[]","name":"Directs","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getMemberLevelDividend","outputs":[{"components":[{"internalType":"uint256","name":"MemberCount","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"}],"internalType":"struct Fakhama.UserLevelInfo[]","name":"LevelInfo","type":"tuple[]"},{"internalType":"uint256[]","name":"Percentage","type":"uint256[]"},{"internalType":"uint256[]","name":"LevelIncome","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"cnt","type":"uint256"}],"name":"getMemberROIDividendInfo","outputs":[{"components":[{"internalType":"uint256","name":"DistributionId","type":"uint256"},{"internalType":"uint256","name":"OnMemberId","type":"uint256"},{"internalType":"address","name":"OnMemberAddress","type":"address"},{"internalType":"uint256","name":"OnAmount","type":"uint256"},{"internalType":"uint256","name":"DistributionAmount","type":"uint256"},{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"string","name":"Type","type":"string"},{"internalType":"uint256","name":"TotalSupply","type":"uint256"},{"internalType":"uint256","name":"ROIAmount","type":"uint256"}],"internalType":"struct Fakhama.UserROIDistributionInfo[]","name":"ROIRecords","type":"tuple[]"},{"internalType":"uint256","name":"ArchivedROI","type":"uint256"},{"internalType":"bool","name":"IsArchiveNeeded","type":"bool"},{"internalType":"uint256","name":"StartId","type":"uint256"},{"internalType":"uint256","name":"RecordsLimit","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getMemberTotalLevelDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_days","type":"uint256"},{"internalType":"uint256","name":"_cnt","type":"uint256"}],"name":"getRateHistory","outputs":[{"components":[{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"internalType":"struct Fakhama.CoinRateHistory[]","name":"history","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserBalanceDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserInfo","outputs":[{"components":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256[]","name":"DirectIds","type":"uint256[]"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256[]","name":"LevelDividend","type":"uint256[]"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"internalType":"struct Fakhama.User","name":"UserInfo","type":"tuple"},{"internalType":"string","name":"CurrentRankName","type":"string"},{"internalType":"string","name":"NextRankName","type":"string"},{"internalType":"uint256","name":"RequiredBusinessForNextRank","type":"uint256"},{"internalType":"uint256","name":"CoinRate","type":"uint256"},{"internalType":"uint256","name":"CoinsHolding","type":"uint256"},{"internalType":"uint256","name":"CurrentRankId","type":"uint256"},{"internalType":"uint256","name":"TotalLevelDividend","type":"uint256"},{"internalType":"uint256","name":"TotalROIDividend","type":"uint256"}],"internalType":"struct Fakhama.UserInfo","name":"userInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserRanks","outputs":[{"components":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"string","name":"RankName","type":"string"},{"internalType":"uint256","name":"ReqBusiness","type":"uint256"},{"internalType":"uint256","name":"UserBusiness","type":"uint256"},{"internalType":"string","name":"Status","type":"string"}],"internalType":"struct Fakhama.RankInfo[]","name":"rankInfo","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"},{"internalType":"uint256","name":"endId","type":"uint256"}],"name":"getUserTotalROIDividend","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"memberId","type":"uint256"}],"name":"getUserTransactions","outputs":[{"components":[{"internalType":"uint256","name":"Amount","type":"uint256"},{"internalType":"uint256","name":"TokenAmount","type":"uint256"},{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"string","name":"Type","type":"string"}],"internalType":"struct Fakhama.Transaction[]","name":"transactions","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"SponsorAddress","type":"address"}],"name":"invest","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_CoinRateHistory","outputs":[{"internalType":"uint256","name":"Rate","type":"uint256"},{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"map_UserIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_Users","outputs":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"address","name":"Address","type":"address"},{"internalType":"uint256","name":"SponsorId","type":"uint256"},{"internalType":"uint256","name":"Business","type":"uint256"},{"internalType":"uint256","name":"NextRankBusiness","type":"uint256"},{"internalType":"uint256","name":"Investment","type":"uint256"},{"internalType":"uint8","name":"RankId","type":"uint8"},{"internalType":"uint256","name":"ROIDividend","type":"uint256"},{"internalType":"uint256","name":"DividendWithdrawn","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Start","type":"uint256"},{"internalType":"uint256","name":"ROIDistributionId_Register","type":"uint256"},{"internalType":"uint256","name":"TransactionCount","type":"uint256"},{"internalType":"uint256","name":"LastSellTime","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"map_ranks","outputs":[{"internalType":"uint256","name":"Id","type":"uint256"},{"internalType":"string","name":"Name","type":"string"},{"internalType":"uint256","name":"Business","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newInvestment","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"tokensToMatic","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"updateROIRecordsLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"withdrawHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600e556003600f556305f5e10060105560006011556001601255614e20601355600060145560016015553480156200003d57600080fd5b50604080518082019091526009815268546173686b616e643160b81b6020820152600b906200006d908262001411565b5060408051808201909152600381526211939560ea1b6020820152600c9062000097908262001411565b506103847fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905561012c7f91da3fd0782e51c6b3986e9e672fd566868e71f3dbc2d6c2cd6fbb3e361af2a75560c87f2e174c10e159ea99b867ce3205125c24a42d128804e4070ed6fcc8cc98166aa05560967f1a1e6821cde7d0159c0d293177871e09677b4e42307c7db3ba94f8648a5a050f8190557f04cde762ef08b6b6c5ded8e8c4c0b3f4e5c9ad7342c88fcc93681b4588b73f0555607d7fc59312466997bb42aaaf719ece141047820e6b34531e1670dc1852a453648f0f8190557fbeb3bad75134cb432e5707980e3245c52c5998a1125ee30f2f0dbf3925b1e5515560647f2645749a946633740611cfc8178319f0958659d6922e4bf7e3a08b44789f53a48190557f4ad5a04d53b5856f318545bb721f67d3f6d0a5a999f25eec7e20eaeb4c47b9338190557f5c6b02db8b672415ffad906d7ccee10bd53dbad7d0b29e2bc0e50c93d5f31093819055604b7f0c1469ad586d86b6976c45826d7ae56d76ee516e37a2bccffbe904b74dbae7ea8190557f140aabff1a85df08546c9a350c79ae18341bde4a2cef5d2fd460885c0128ce265560327fa5022b2bfd144bf9103d80168549b5df7c72ab60bd51bf71a02a08d844853b4a8190557feb3e677499e881fe1bdbc344a49c412138038a9f40883b6dc68f713aab483523557f66b61daf77b854ca6ba000a8d4b340eafcdb71b6583753b4af89fceb54988fff8190557f4a597304b2df0a7a7b428b3c24c35ba6373aabebf9972387f5610f74a01b21bd557f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b556104b07f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a556105787fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc05561060e7f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d5556106a47f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d556107217f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac5185561079e7feddb6698d7c569ff62ff64f1f1492bf14a54594835ba0faac91f84b4f5d81460556108027ffb33122aa9f93cc639ebe80a7bc4784c11e6053dde89c6f4f7e268c6a623da1e556108667fc0a4a8be475dfebc377ebef2d7c4ff47656f572a08dd92b81017efcdba0febe1556108ca7fa18b128af1c8fc61ff46f02d146e54546f34d340574cf2cef6a753cba6b6701d556109157f40f28f99a40bc9f6beea1013afdbc3cdcc689eb76b82c4de06c0acf1e1932ed5556109607ff907e7e6656fa73566b18c1215272fe9fca2c55c552e62c923e21e000ac4b4e6556109927f03145c75015e7a856ecd94c41432ef3cb669d6360af23433588937fefdfac825556109c47f783638979e3582b3ffd6d53fc06c949ac31d1ac75a5e2c3531fbe1f91045eb5355610a287f58f00e8ecc6f5419941dd0bafec65a4cc188d31713fb1fe224257460930df8af55610a8c7f8b32256db898364c465749decac34aee435952ffe1739257aa5b0235e266d9c555600d80546001600160a01b03191633179055604080516060810182526001808252825180840184526003808252622217a960e91b60208381019190915284810192835260009585018690529290945292905280517fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c90815591519091907fa15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054d90620005d4908262001411565b5060409182015160029182015581516060810183528181528251808401845260038082526246433160e81b6020838101919091528084019283526101f4958401959095526000939093529190925281517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4d90815590517fc3a24b0501bd2c13a7e57f2db4369ec4c223447539fc0724a9d55ac4a06ebd4e9062000678908262001411565b5060409182015160029091015580516060810182526003808252825180840184528181526223219960e91b6020828101919091528084019182526101f4948401949094526000829052925280517fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495af90815591519091907fcbc4e5fb02c3d1de23a9f1e014b4d2ee5aeaea9505df5e855c9210bf472495b0906200071c908262001411565b50604091820151600290910155805160608101825260048082528251808401845260038082526246433360e81b6020838101919091528085019283526101f495850195909552600092909252925280517f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246590815591519091907f83ec6a1f0257b830b5e016457c9cf1435391bf56cc98f369a58a54fe9377246690620007c3908262001411565b5060409182015160029091015580516060810182526005808252825180840184526003808252621190cd60ea1b6020838101919091528085019283526107d095850195909552600092909252925280517f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b46594225090815591519091907f405aad32e1adbac89bb7f176e338b8fc6e994ca210c9bb7bdca249b465942251906200086a908262001411565b50604091820151600290910155805160608101825260068082528251808401845260038082526246433560e81b602083810191909152808501928352610bb895850195909552600092909252925280517fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f390815591519091907fc69056f16cbaa3c616b828e333ab7d3a32310765507f8f58359e99ebb7a885f49062000911908262001411565b50604091820151600290910155805160608101825260078082528251808401845260038082526223219b60e91b602083810191909152808501928352610fa095850195909552600092909252925280517ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd290815591519091907ff2c49132ed1cee2a7e75bde50d332a2f81f1d01e5456d8a19d1df09bd561dbd390620009b8908262001411565b50604091820151600290910155805160608101825260088082528251808401845260038082526246433760e81b60208381019190915280850192835261119495850195909552600092909252925280517f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbe90815591519091907f85aaa47b6dc46495bb8824fad4583769726fea36efd831a35556690b830a8fbf9062000a5f908262001411565b50604091820151600290910155805160608101825260098082528251808401845260038082526208c86760eb1b60208381019190915280850192835261157c95850195909552600092909252925280517f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb45890815591519091907f8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb4599062000b06908262001411565b506040918201516002909101558051606081018252600a8082528251808401845260038082526246433960e81b602083810191909152808501928352611b5895850195909552600092909252925280517f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d5390815591519091907f9dcb9783ba5cd0b54745f65f4f918525e461e91888c334e5342cb380ac558d549062000bad908262001411565b506040918201516002909101558051606081018252600b8082528251808401845260048152630464331360e41b60208281019190915280840191825261232894840194909452600091909152600390925280517f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b8416490815591519091907f2d72af3c1b2b2956e6f694fb741556d5ca9524373974378cdbec16afa8b841659062000c57908262001411565b506040918201516002909101558051606081018252600c8082528251808401845260048152634643313160e01b602082810191909152808401918252612af894840194909452600091909152600390925280517fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92b90815591519091907fd56a60595ebefebed7f22dcee6c2acc61b06cf8c68e84c88677840365d1ff92c9062000d01908262001411565b506040918201516002909101558051606081018252600d8082528251808401845260048152632321989960e11b602082810191909152808401918252613a9894840194909452600091909152600390925280517fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bcf90815591519091907fa8f2d96126c6d0ad63adabaef7bf5cf47f163fb0c218a473d28f62312d197bd09062000dab908262001411565b506040918201516002909101558051606081018252600e8082528251808401845260048152634643313360e01b60208281019190915280840191825261465094840194909452600091909152600390925280517fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b56207893990815591519091907fd6ebcc64c739277b117ce359e436534b234b76e914c80ad276abf5b56207893a9062000e55908262001411565b506040918201516002909101558051606081018252600f8082528251808401845260048152631190cc4d60e21b60208281019190915280840191825261520894840194909452600091909152600390925280517ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a6090815591519091907ff60b7f6a315ec68a6ac240e69dca53652b38627f709a2caa217d9e18af4d7a619062000eff908262001411565b50604091820151600290910155805160608101825260108082528251808401845260048152634643313560e01b60208281019190915280840191825261639c94840194909452600091909152600390925280517f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bb90815591519091907f47d4745e02b343689a5e7ac121d2a352b7a15c10328a8759fd7d4cf0999002bc9062000fa9908262001411565b50604082015181600201559050506000600e54600162000fca9190620014f3565b604080516101e08101825282815273e229304bff230fa3ca17b5919177b5e4f8c5c10f60208201526000918101829052606081018290526080810182905260a08101829052600160c08201529192509060e081018260405190808252806020026020018201604052801562001049578160200160208202803683370190505b50815260006020820152604080516010808252610220820183529190920191908160200160208202803683375050508152600060208083018290526012546040808501829052606080860192909252608080860185905260a0958601859052888552600180855294829020875181558785015195810180546001600160a01b0319166001600160a01b0390971696909617909555908601516002850155908501516003840155840151600483015591830151600582015560c083015160068201805460ff191660ff90921691909117905560e08301518051939450849391926200113c9260078501929091019062001305565b50610100820151600882015561012082015180516200116691600984019160209091019062001305565b50610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c090910151600e9182015573e229304bff230fa3ca17b5919177b5e4f8c5c10f600090815260026020527f401fc0a300f1bf597cda09d36aa4e1a877be4bf2727833c5f399d816598079f884905581549190620011f2836200150e565b919050555060006040518060400160405280620012146200125e60201b60201c565b8152426020918201526015805460009081526009835260408120845181559284015160019093019290925580549293509062001250836200150e565b91905055505050506200156f565b600069152d02c7e14af68000006011541015620012c557620186a060115460096200128a91906200152a565b6200129691906200154c565b620012aa90670de0b6b3a7640000620014f3565b620012c09069021e19e0c9bab24000006200154c565b905090565b670de0b6b3a76400006011541015620012df575060105490565b601154601054620012f990670de0b6b3a76400006200152a565b620012c091906200154c565b82805482825590600052602060002090810192821562001343579160200282015b828111156200134357825182559160200191906001019062001326565b506200135192915062001355565b5090565b5b8082111562001351576000815560010162001356565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200139757607f821691505b602082108103620013b857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200140c57600081815260208120601f850160051c81016020861015620013e75750805b601f850160051c820191505b818110156200140857828155600101620013f3565b5050505b505050565b81516001600160401b038111156200142d576200142d6200136c565b62001445816200143e845462001382565b84620013be565b602080601f8311600181146200147d5760008415620014645750858301515b600019600386901b1c1916600185901b17855562001408565b600085815260208120601f198616915b82811015620014ae578886015182559484019460019091019084016200148d565b5085821015620014cd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60008219821115620015095762001509620014dd565b500190565b600060018201620015235762001523620014dd565b5060010190565b6000816000190483118215151615620015475762001547620014dd565b500290565b6000826200156a57634e487b7160e01b600052601260045260246000fd5b500490565b613c9d806200157f6000396000f3fe6080604052600436106101e55760003560e01c80639140f96811610101578063c25acf151161009a578063e3f7146b1161006c578063e3f7146b146106ea578063e969c49414610717578063ecb4105414610744578063ee06fa391461078c578063f571545b146107a257005b8063c25acf1514610668578063d379dadf14610688578063d4d6e96e146106b5578063d6567998146106ca57005b8063a6669b9b116100d3578063a6669b9b146105db578063a7a2f47e14610608578063b85c740914610628578063be3b571f1461064857005b80639140f9681461058057806395d89b41146105885780639d1727701461059d578063a5ece941146105b357005b80634df49ca01161017e578063695dd0f511610150578063695dd0f5146103cf5780636d13f5a7146104ca57806370a08231146104ea57806383b2fbea146105205780638da5cb5b1461054057005b80634df49ca01461033d5780634eadbc85146103535780635d9bd8b214610382578063670829cf146103a257005b80632929f7df116101b75780632929f7df1461027a578063313ce567146102ab57806339ab5249146102c75780633ccc9860146102f457005b806303f9c793146101ee57806306fdde031461020157806309be84681461022c57806318160ddd1461025b57005b366101ec57005b005b6101ec6101fc3660046133a6565b6107b7565b34801561020d57600080fd5b506102166107c3565b6040516102239190613423565b60405180910390f35b34801561023857600080fd5b5061024c610247366004613436565b610855565b6040516102239392919061344f565b34801561026757600080fd5b50600a545b604051908152602001610223565b34801561028657600080fd5b5061029a610295366004613478565b610900565b60405161022395949392919061349a565b3480156102b757600080fd5b5060405160008152602001610223565b3480156102d357600080fd5b506102e76102e2366004613436565b610cbf565b604051610223919061358c565b34801561030057600080fd5b5061032861030f366004613436565b6009602052600090815260409020805460019091015482565b60408051928352602083019190915201610223565b34801561034957600080fd5b5061026c60115481565b34801561035f57600080fd5b5061037361036e366004613436565b610f65565b6040516102239392919061366e565b34801561038e57600080fd5b506101ec61039d366004613436565b611110565b3480156103ae57600080fd5b506103c26103bd366004613436565b6113b6565b6040516102239190613866565b3480156103db57600080fd5b5061045e6103ea366004613436565b6001602081905260009182526040909120805491810154600282015460038301546004840154600585015460068601546008870154600a880154600b890154600c8a0154600d8b0154600e909b01546001600160a01b03909a169a989997989697959660ff9095169593949293919290918d565b604080519d8e526001600160a01b03909c1660208e01529a8c019990995260608b019790975260808a019590955260a089019390935260ff90911660c088015260e08701526101008601526101208501526101408401526101608301526101808201526101a001610223565b3480156104d657600080fd5b5061026c6104e5366004613478565b6114d3565b3480156104f657600080fd5b5061026c6105053660046133a6565b6001600160a01b031660009081526020819052604090205490565b34801561052c57600080fd5b506101ec61053b366004613478565b611614565b34801561054c57600080fd5b5061056873e229304bff230fa3ca17b5919177b5e4f8c5c10f81565b6040516001600160a01b039091168152602001610223565b6101ec6117b6565b34801561059457600080fd5b506102166118a0565b3480156105a957600080fd5b5061026c60145481565b3480156105bf57600080fd5b5061056873577d0542b13cd85d683ae35c2e6a8856e4b1aa8981565b3480156105e757600080fd5b506105fb6105f6366004613478565b6118af565b60405161022391906138c8565b34801561061457600080fd5b5061026c610623366004613436565b611a6f565b34801561063457600080fd5b5061026c610643366004613436565b611b1f565b34801561065457600080fd5b506101ec610663366004613436565b611b6e565b34801561067457600080fd5b5061026c610683366004613436565b611b93565b34801561069457600080fd5b506106a86106a3366004613436565b611bce565b604051610223919061391f565b3480156106c157600080fd5b5061026c611f74565b3480156106d657600080fd5b506101ec6106e5366004613436565b611f7f565b3480156106f657600080fd5b5061026c6107053660046133a6565b60026020526000908152604090205481565b34801561072357600080fd5b50610737610732366004613436565b612352565b6040516102239190613932565b34801561075057600080fd5b5061077c61075f3660046133a6565b6001600160a01b0316600090815260026020526040902054151590565b6040519015158152602001610223565b34801561079857600080fd5b5061026c60155481565b3480156107ae57600080fd5b5061026c61250b565b6107c0816125a4565b50565b6060600b80546107d2906139af565b80601f01602080910402602001604051908101604052809291908181526020018280546107fe906139af565b801561084b5780601f106108205761010080835404028352916020019161084b565b820191906000526020600020905b81548152906001019060200180831161082e57829003601f168201915b5050505050905090565b60036020526000908152604090208054600182018054919291610877906139af565b80601f01602080910402602001604051908101604052809291908181526020018280546108a3906139af565b80156108f05780601f106108c5576101008083540402835291602001916108f0565b820191906000526020600020905b8154815290600101906020018083116108d357829003601f168201915b5050505050908060020154905083565b6000828152600160205260408120600b015460609190819081908190600a87101561092a57600a96505b6000888152600160208181526040808420909201546001600160a01b031683528290528120549061095b89846139ff565b90506012546013548461096e91906139ff565b111561097b57600061097e565b60015b955060125481111561099257601254610994565b805b90506013548111156109a8576013546109aa565b805b905060006109b88483613a17565b67ffffffffffffffff8111156109d0576109d0613a2e565b604051908082528060200260200182016040528015610a5957816020015b610a46604051806101200160405280600081526020016000815260200160006001600160a01b031681526020016000815260200160008152602001600081526020016060815260200160008152602001600081525090565b8152602001906001900390816109ee5790505b509050600082610a6881613a44565b9350505b848310610c93576000838152600760205260409020600101548c14801590610aa4575060008381526007602052604090206001015415155b15610c81576000600760008581526020019081526020016000206040518060e00160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582018054610b0b906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054610b37906139af565b8015610b845780601f10610b5957610100808354040283529160200191610b84565b820191906000526020600020905b815481529060010190602001808311610b6757829003601f168201915b50505091835250506006919091015460209182015260008681526007909152604081206004015491925090610bb99087613a5b565b905060006040518061012001604052808460000151815260200184602001518152602001600160008660200151815260200190815260200160002060010160009054906101000a90046001600160a01b03166001600160a01b031681526020018460400151815260200184606001518152602001846080015181526020018460a0015181526020018460c00151815260200183815250905080858581518110610c6457610c64613a7a565b60200260200101819052508380610c7a90613a90565b9450505050505b82610c8b81613a44565b935050610a6c565b5060009a8b5260016020526040909a20600801546013549a9b909a969950929750949550909350505050565b600081815260016020526040808220600681015460039091015482516010808252610220820190945260609460ff90931693919291816020015b610d2b6040518060a0016040528060008152602001606081526020016000815260200160008152602001606081525090565b815260200190600190039081610cf957905050905060015b60108111610f5c5760006003600083815260200190815260200160002060405180606001604052908160008201548152602001600182018054610d85906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054610db1906139af565b8015610dfe5780601f10610dd357610100808354040283529160200191610dfe565b820191906000526020600020905b815481529060010190602001808311610de157829003601f168201915b50505050508152602001600282015481525050905060006040518060a0016040528084815260200183602001518152602001836040015181526020018360400151670de0b6b3a7640000610e529190613a5b565b8711610e5e5786610e75565b6040840151610e7590670de0b6b3a7640000613a5b565b815260200184881015610eb0576040518060400160405280601081526020016f139bdd081e595d081858da1a595d995960821b815250610ed2565b604051806040016040528060088152602001671058da1a595d995960c21b8152505b905290508084610ee3600186613a17565b81518110610ef357610ef3613a7a565b60200260200101819052508160400151670de0b6b3a7640000610f169190613a5b565b851015610f24576000610f45565b6040820151610f3b90670de0b6b3a7640000613a5b565b610f459086613a17565b945050508080610f5490613a90565b915050610d43565b50949350505050565b60408051601080825261022082019092526060918291829160009190816020015b6040805180820190915260008082526020820152815260200190600190039081610f86575050604080516010808252610220820190925291925060009190602082016102008036833701905050905060015b60108160ff161161109657600087815260066020908152604080832060ff851684528252918290208251808401909352805483526001908101549183019190915284906110259084613aa9565b60ff168151811061103857611038613a7a565b60209081029190910181019190915260ff821660009081526004909152604090205482611066600184613aa9565b60ff168151811061107957611079613a7a565b60209081029190910101528061108e81613acc565b915050610fd8565b50818160016000898152602001908152602001600020600901808054806020026020016040519081016040528092919081815260200182805480156110fa57602002820191906000526020600020905b8154815260200190600101908083116110e6575b5050505050905094509450945050509193909250565b336000908152600260205260408120549061112a82611b93565b9050600082116111555760405162461bcd60e51b815260040161114c90613aeb565b60405180910390fd5b828110156111b05760405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e74206469766964656e6420746f2077697468647261604482015261772160f01b606482015260840161114c565b6111bc82601254611614565b600060646111cb85600a613a5b565b6111d59190613b12565b905060006111e38286613a17565b90508460016000868152602001908152602001600020600a01600082825461120b91906139ff565b909155505060408051608081018252868152600060208083018290528284018290528351808501855260128152712234bb34b232b732102bb4ba34323930bbb760711b81830152606084015287825260088152838220600191829052938220600d01549293849390929161127f91906139ff565b81526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201906112bb9082613b82565b5050506000858152600160205260408120600d018054916112db83613a90565b909155506000905060646112f088600a613a5b565b6112fa9190613b12565b905061132a8688836040518060400160405280600a81526020016915da5d1a191c985dd85b60b21b81525061292d565b604051339084156108fc029085906000818181858888f19350505050158015611357573d6000803e3d6000fd5b506000604051806040016040528061136d61250b565b815242602091820152601580546000908152600983526040812084518155928401516001909301929092558054929350906113a783613a90565b91905055505050505050505050565b600081815260016020908152604080832060070180548251818502810185019093528083526060949383018282801561140e57602002820191906000526020600020905b8154815260200190600101908083116113fa575b505050505090506000815167ffffffffffffffff81111561143157611431613a2e565b60405190808252806020026020018201604052801561146a57816020015b611457613277565b81526020019060019003908161144f5790505b50905060005b82518110156114cb5761149b83828151811061148e5761148e613a7a565b6020026020010151611bce565b8282815181106114ad576114ad613a7a565b602002602001018190525080806114c390613a90565b915050611470565b509392505050565b60008281526001602052604081206008810154600b909101546012548411156114fe57601254611500565b835b93506013548161151091906139ff565b8411156115855760405162461bcd60e51b815260206004820152603c60248201527f546f6f206d616e792063616c63756c6174696f6e732120506c6561736520747260448201527f7920746f206172636869766520796f757220504f492066697273742e00000000606482015260840161114c565b6000858152600160208181526040808420909201546001600160a01b031683528290529020545b8482101561160a5760008281526007602052604090206001015486146115f8576000828152600760205260408120600401546115e89083613a5b565b90506115f481856139ff565b9350505b8161160281613a90565b9250506115ac565b5090949350505050565b6000828152600160205260409020600b01546012548211156116385760125461163a565b815b91506116478160646139ff565b82111561165e576116598160646139ff565b611660565b815b6000848152600160208181526040808420909201546001600160a01b031683528290529020549092505b8282101561174a57600e546001036116d557600082815260076020908152604080832060030154878452600190925282206008018054919290916116cf9084906139ff565b90915550505b6000828152600760205260409020600101548414611738576000828152600760205260408120600401546117099083613a5b565b90508060016000878152602001908152602001600020600801600082825461173191906139ff565b9091555050505b8161174281613a90565b92505061168a565b600084815260016020526040808220600b0185905580518082019091528061177061250b565b815242602091820152601580546000908152600983526040812084518155928401516001909301929092558054929350906117aa83613a90565b91905055505050505050565b336000818152600260205260409020546117e25760405162461bcd60e51b815260040161114c90613aeb565b600034116118245760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e742160881b604482015260640161114c565b674563918244f4000034101561187c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e696d756d20696e7665737420616d6f756e742069732035210000000000604482015260640161114c565b6001600160a01b0381166000908152600260205260408120546107c09134906129f0565b6060600c80546107d2906139af565b606060006118be846018613a5b565b6118c990603c613a5b565b6118d490603c613a5b565b6118de9042613a17565b905060008060016015546118f29190613a17565b90505b60018110611935576000818152600960205260409020600101548311611923578161191f81613a90565b9250505b8061192d81613a44565b9150506118f5565b506000808511611946576064611948565b845b905060006119568284613b12565b905080156119645780611967565b60015b90508167ffffffffffffffff81111561198257611982613a2e565b6040519080825280602002602001820160405280156119c757816020015b60408051808201909152600080825260208201528152602001906001900390816119a05790505b50945060008060016015546119dc9190613a17565b90505b828110611a63576000818152600960205260409020600101548611611a525760008181526009602090815260409182902082518084019093528054835260010154908201528751889084908110611a3857611a38613a7a565b60200260200101819052508180611a4e90613a90565b9250505b611a5c8382613a17565b90506119df565b50505050505092915050565b6000818152600160209081526040808320600901805482518185028101850190935280835284938493929190830182828015611aca57602002820191906000526020600020905b815481526020019060010190808311611ab6575b5050505050905060005b8151811015611b1657818181518110611aef57611aef613a7a565b602002602001015183611b0291906139ff565b925080611b0e81613a90565b915050611ad4565b50909392505050565b600073e229304bff230fa3ca17b5919177b5e4f8c5c10e193301611b44575047919050565b611b4c611f74565b611b5e83670de0b6b3a7640000613a5b565b611b689190613b12565b92915050565b3373e229304bff230fa3ca17b5919177b5e4f8c5c10f14611b8e57600080fd5b601355565b6000818152600160205260408120600a0154611bae83611a6f565b611bba846012546114d3565b611bc491906139ff565b611b689190613a17565b611bd6613277565b600082815260016020818152604080842081516101e08101835281548152938101546001600160a01b0316848401526002810154848301526003810154606085015260048101546080850152600581015460a0850152600681015460ff1660c0850152600781018054835181860281018601909452808452919360e08601939290830182828015611c8657602002820191906000526020600020905b815481526020019060010190808311611c72575b505050505081526020016008820154815260200160098201805480602002602001604051908101604052809291908181526020018280548015611ce857602002820191906000526020600020905b815481526020019060010190808311611cd4575b50505050508152602001600a8201548152602001600b8201548152602001600c8201548152602001600d8201548152602001600e8201548152505090506000600360008360c0015160ff1681526020019081526020016000206001018054611d4f906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054611d7b906139af565b8015611dc85780601f10611d9d57610100808354040283529160200191611dc8565b820191906000526020600020905b815481529060010190602001808311611dab57829003601f168201915b50505050509050600060048360c0015160ff1610611df55760405180602001604052806000815250611ea8565b600360008460c001516001611e0a9190613c42565b60ff1681526020019081526020016000206001018054611e29906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054611e55906139af565b8015611ea25780601f10611e7757610100808354040283529160200191611ea2565b820191906000526020600020905b815481529060010190602001808311611e8557829003601f168201915b50505050505b90506000600360008560c001516001611ec19190613c42565b60ff1681526020019081526020016000206002015490506000611ee2611f74565b6020808701516001600160a01b03166000908152908190526040812054919250611f0b89611a6f565b90506000611f1b8a6012546114d3565b60408051610120810182528a81526020810199909952880196909652506060860193909352608085019190915260a084015260c09384015160ff169383019390935260e082019290925261010081019190915292915050565b600080611b6861250b565b3360009081526002602052604090205480611fac5760405162461bcd60e51b815260040161114c90613aeb565b6000818152600160205260408120600e0154611fc89042613a17565b90506201518081101561201d5760405162461bcd60e51b815260206004820152601f60248201527f596f752063616e207769746864726177206f6e636520696e2061206461792100604482015260640161114c565b3360009081526020819052604090205483111561207c5760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e7420746f6b656e2062616c616e6365210000000000604482015260640161114c565b600061208784611b1f565b9050804710156120d95760405162461bcd60e51b815260206004820152601e60248201527f496e73756666696369656e742066756e6420696e20636f6e7472616374210000604482015260640161114c565b33600090815260208190526040902054600a906064906120fa906005613a5b565b6121049190613b12565b8511801561213957503360009081526020819052604090205460649061212b906019613a5b565b6121359190613b12565b8511155b1561214657506032612179565b33600090815260208190526040902054606490612164906019613a5b565b61216e9190613b12565b851115612179575060505b600060646121878385613a5b565b6121919190613b12565b9050600061219f8285613a17565b9050600060405180608001604052808681526020018981526020016121c2611f74565b8152604080518082018252600a81526929b2b636102a37b5b2b760b11b6020828101919091529283015260008a815260088352818120600193849052918120600d0154939450849391929091612217916139ff565b81526020808201929092526040908101600020835181559183015160018301558201516002820155606082015160038201906122539082613b82565b5050506000878152600160205260408120600d0180549161227383613a90565b9091555050600087815260016020526040902042600e9091015560125461229b908890611614565b6122a53389612fce565b84601154106122cb5784601160008282546122c09190613a17565b909155506122d19050565b60016011555b604051339083156108fc029084906000818181858888f193505050501580156122fe573d6000803e3d6000fd5b5082156123485760405173e229304bff230fa3ca17b5919177b5e4f8c5c10f9084156108fc029085906000818181858888f19350505050158015612346573d6000803e3d6000fd5b505b5050505050505050565b6000818152600160205260409020600d01546060908067ffffffffffffffff81111561238057612380613a2e565b6040519080825280602002602001820160405280156123dc57816020015b6123c96040518060800160405280600081526020016000815260200160008152602001606081525090565b81526020019060019003908161239e5790505b50915060015b81811161250457600860008581526020019081526020016000206000828152602001908152602001600020604051806080016040529081600082015481526020016001820154815260200160028201548152602001600382018054612446906139af565b80601f0160208091040260200160405190810160405280929190818152602001828054612472906139af565b80156124bf5780601f10612494576101008083540402835291602001916124bf565b820191906000526020600020905b8154815290600101906020018083116124a257829003601f168201915b505050505081525050836001836124d69190613a17565b815181106124e6576124e6613a7a565b602002602001018190525080806124fc90613a90565b9150506123e2565b5050919050565b600069152d02c7e14af6800000601154101561256957620186a060115460096125349190613a5b565b61253e9190613b12565b61255090670de0b6b3a76400006139ff565b6125649069021e19e0c9bab2400000613b12565b905090565b670de0b6b3a76400006011541015612582575060105490565b60115460105461259a90670de0b6b3a7640000613a5b565b6125649190613b12565b33346125e45760405162461bcd60e51b815260206004820152600f60248201526e496e76616c696420616d6f756e742160881b604482015260640161114c565b674563918244f4000034101561263c5760405162461bcd60e51b815260206004820152601b60248201527f4d696e696d756d20696e7665737420616d6f756e742069732035210000000000604482015260640161114c565b6001600160a01b038116600090815260026020526040902054612921576001600160a01b0382166000908152600260205260409020546126b15760405162461bcd60e51b815260206004820152601060248201526f496e76616c69642073706f6e736f722160801b604482015260640161114c565b6001600160a01b038216600090815260026020526040812054600e549091906126db9060016139ff565b90506000604051806101e00160405280838152602001856001600160a01b03168152602001848152602001600081526020016000815260200160008152602001600160ff168152602001600067ffffffffffffffff81111561273f5761273f613a2e565b604051908082528060200260200182016040528015612768578160200160208202803683370190505b50815260006020820152604080516010808252610220820183529190920191908160200160208202803683375050508152600060208083018290526012546040808501829052606080860192909252608080860185905260a0958601859052888552600180855294829020875181558785015195810180546001600160a01b0319166001600160a01b0390971696909617909555908601516002850155908501516003840155840151600483015591830151600582015560c083015160068201805460ff191660ff90921691909117905560e083015180519394508493919261285992600785019290910190613346565b5061010082015160088201556101208201518051612881916009840191602090910190613346565b50610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c090910151600e918201556001600160a01b0385166000908152600260205260408120849055815491906128e383613a90565b90915550506000838152600160208181526040832060070180548084018255908452922090910183905561291a90839034906129f0565b5050505050565b6129296117b6565b5050565b600a546000901561294857600a546129459084613b12565b90505b6040805160e0810182526012548082526020808301898152838501898152606085018981526080860188815260a087018a8152600a5460c089015260009687526007909552969094208551815591516001830155516002820155915160038301559251600482015591519091829160058201906129c59082613b82565b5060c09190910151600690910155601280549060006129e383613a90565b9190505550505050505050565b60006129fa61250b565b9050600068056bc75e2d6310000082612a1486603c613a5b565b612a1e9190613a5b565b612a289190613b12565b905083600160008781526020019081526020016000206005016000828254612a5091906139ff565b92505081905550612a6385601254611614565b604080516080810182528581526020808201849052818301859052825180840184526009815268213abc902a37b5b2b760b91b818301526060830152600088815260088252838120600192839052938120600d0154929384939092612ac891906139ff565b8152602080820192909252604090810160002083518155918301516001830155820151600282015560608201516003820190612b049082613b82565b5050506000868152600160205260408120600d01805491612b2483613a90565b91905055508460146000828254612b3b91906139ff565b90915550506000868152600160208190526040909120600201545b8015612e105760008181526001602052604081206003018054899290612b7d9084906139ff565b909155505060008181526001602052604081206004018054899290612ba39084906139ff565b9091555050600160ff83161115612be957600081815260066020908152604080832060ff8616845290915281206001018054899290612be39084906139ff565b90915550505b8515612c1d57600081815260066020908152604080832060ff861684529091528120805491612c1783613a90565b91905055505b60108260ff1611612de35760008181526001602052604081206006015460ff808516911610612d755760ff831660009081526004602052604090205461271090612c67908a613a5b565b612c719190613b12565b90508260ff16600103612d1a5760008281526001602090815260408083206006015460ff1680845260059092529091205461271090612cb0908b613a5b565b612cba9190613b12565b91508160016000858152602001908152602001600020600901600186612ce09190613aa9565b60ff1681548110612cf357612cf3613a7a565b906000526020600020016000828254612d0c91906139ff565b90915550909350612de19050565b8060016000848152602001908152602001600020600901600185612d3e9190613aa9565b60ff1681548110612d5157612d51613a7a565b906000526020600020016000828254612d6a91906139ff565b90915550612de19050565b60016000819052602081905281907fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688793890612daf9086613aa9565b60ff1681548110612dc257612dc2613a7a565b906000526020600020016000828254612ddb91906139ff565b90915550505b505b612dec81613136565b60009081526001602052604090206002015481612e0881613acc565b925050612b56565b60108260ff1611612ec85760ff821660009081526004602052604081205461271090612e3c908a613a5b565b612e469190613b12565b60016000819052602081905290915081907fcc69885fda6bcc1a4ace058b4a62bf5e179ea78fd58a1ccd71c22cc9b688793890612e839086613aa9565b60ff1681548110612e9657612e96613a7a565b906000526020600020016000828254612eaf91906139ff565b90915550839050612ebf81613acc565b93505050612e10565b612f0988886064612eda82600a613a5b565b612ee49190613b12565b6040518060400160405280600781526020016611195c1bdcda5d60ca1b81525061292d565b600e54600103612f1f57612f1f88601254611614565b60008881526001602081905260409091200154612f45906001600160a01b0316856131d9565b6064612f5288603c613a5b565b612f5c9190613b12565b60116000828254612f6d91906139ff565b9091555050600f5473577d0542b13cd85d683ae35c2e6a8856e4b1aa89906108fc90606490612f9c908b613a5b565b612fa69190613b12565b6040518115909202916000818181858888f19350505050158015612346573d6000803e3d6000fd5b6001600160a01b03821661302e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161114c565b6001600160a01b038216600090815260208190526040902054818110156130a25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161114c565b81600a5410156130f45760405162461bcd60e51b815260206004820152601960248201527f496e76616c696420616d6f756e74206f6620746f6b656e732100000000000000604482015260640161114c565b6130fe8282613a17565b6001600160a01b038416600090815260208190526040812091909155600a805484929061312c908490613a17565b9091555050505050565b600081815260016020819052604082206006015460ff16919061315a908390613c42565b60ff811660009081526003602052604090206002015490915061318590670de0b6b3a7640000613a5b565b600084815260016020526040902060040154108015906131a8575060108260ff16105b156131d45760008381526001602052604081206004810191909155600601805460ff191660ff83161790555b505050565b6001600160a01b03821661322f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161114c565b80600a600082825461324191906139ff565b90915550506001600160a01b0382166000908152602081905260408120805483929061326e9084906139ff565b90915550505050565b604051806101200160405280613308604051806101e001604052806000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600060ff16815260200160608152602001600081526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200160608152602001606081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b828054828255906000526020600020908101928215613381579160200282015b82811115613381578251825591602001919060010190613366565b5061338d929150613391565b5090565b5b8082111561338d5760008155600101613392565b6000602082840312156133b857600080fd5b81356001600160a01b03811681146133cf57600080fd5b9392505050565b6000815180845260005b818110156133fc576020818501810151868301820152016133e0565b8181111561340e576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006133cf60208301846133d6565b60006020828403121561344857600080fd5b5035919050565b83815260606020820152600061346860608301856133d6565b9050826040830152949350505050565b6000806040838503121561348b57600080fd5b50508035926020909101359150565b600060a080830181845280895180835260c092508286019150828160051b8701016020808d0160005b8481101561355e5760bf198a850301865281516101208151865284820151858701526040808301516134ff828901826001600160a01b03169052565b50506060828101519087015260808083015190870152898201518a87015288820151898701829052613533828801826133d6565b60e08481015190890152610100938401519390970192909252505094820194908201906001016134c3565b505087018b9052891515604088015294506135799350505050565b6060820193909352608001529392505050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561362557603f19898403018552815160a08151855288820151818a8701526135e1828701826133d6565b915050878201518886015260608083015181870152506080808301519250858203818701525061361181836133d6565b9689019694505050908601906001016135b3565b509098975050505050505050565b600081518084526020808501945080840160005b8381101561366357815187529582019590820190600101613647565b509495945050505050565b606080825284519082018190526000906020906080840190828801845b828110156136bb576136a884835180518252602090810151910152565b604093909301929084019060010161368b565b505050838103828501526136cf8187613633565b91505082810360408401526136e48185613633565b9695505050505050565b60006101e082518452602083015161371160208601826001600160a01b03169052565b5060408301516040850152606083015160608501526080830151608085015260a083015160a085015260c083015161374e60c086018260ff169052565b5060e08301518160e086015261376682860182613633565b915050610100808401518186015250610120808401518583038287015261378d8382613633565b6101408681015190880152610160808701519088015261018080870151908801526101a080870151908801526101c095860151959096019490945250929392505050565b600061012082518185526137e7828601826136ee565b9150506020830151848203602086015261380182826133d6565b9150506040830151848203604086015261381b82826133d6565b915050606083015160608501526080830151608085015260a083015160a085015260c083015160c085015260e083015160e08501526101008084015181860152508091505092915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156138bb57603f198886030184526138a98583516137d1565b9450928501929085019060010161388d565b5092979650505050505050565b602080825282518282018190526000919060409081850190868401855b828110156139125761390284835180518252602090810151910152565b92840192908501906001016138e5565b5091979650505050505050565b6020815260006133cf60208301846137d1565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561362557888303603f190185528151805184528781015188850152868101518785015260609081015160809185018290529061399b818601836133d6565b968901969450505090860190600101613959565b600181811c908216806139c357607f821691505b6020821081036139e357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115613a1257613a126139e9565b500190565b600082821015613a2957613a296139e9565b500390565b634e487b7160e01b600052604160045260246000fd5b600081613a5357613a536139e9565b506000190190565b6000816000190483118215151615613a7557613a756139e9565b500290565b634e487b7160e01b600052603260045260246000fd5b600060018201613aa257613aa26139e9565b5060010190565b600060ff821660ff841680821015613ac357613ac36139e9565b90039392505050565b600060ff821660ff8103613ae257613ae26139e9565b60010192915050565b6020808252600d908201526c496e76616c696420757365722160981b604082015260600190565b600082613b2f57634e487b7160e01b600052601260045260246000fd5b500490565b601f8211156131d457600081815260208120601f850160051c81016020861015613b5b5750805b601f850160051c820191505b81811015613b7a57828155600101613b67565b505050505050565b815167ffffffffffffffff811115613b9c57613b9c613a2e565b613bb081613baa84546139af565b84613b34565b602080601f831160018114613be55760008415613bcd5750858301515b600019600386901b1c1916600185901b178555613b7a565b600085815260208120601f198616915b82811015613c1457888601518255948401946001909101908401613bf5565b5085821015613c325787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060ff821660ff84168060ff03821115613c5f57613c5f6139e9565b01939250505056fea26469706673582212202f43eef73adf1766c9c6fcde00c5a188d0dc65d8beda2de972bdaf1cdebebb4c64736f6c634300080f0033

Deployed ByteCode Sourcemap

473:26988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4662:111;;;;;;:::i;:::-;;:::i;3489:106::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;653:36;;;;;;;;;;-1:-1:-1;653:36:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;3831:114::-;;;;;;;;;;-1:-1:-1;3925:12:0;;3831:114;;;1705:25:1;;;1693:2;1678:18;3831:114:0;1559:177:1;24230:1906:0;;;;;;;;;;-1:-1:-1;24230:1906:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;3725:98::-;;;;;;;;;;-1:-1:-1;3725:98:0;;3783:5;4457:36:1;;4445:2;4430:18;3725:98:0;4315:184:1;21381:890:0;;;;;;;;;;-1:-1:-1;21381:890:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;988:57::-;;;;;;;;;;-1:-1:-1;988:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;6081:25:1;;;6137:2;6122:18;;6115:34;;;;6054:18;988:57:0;5907:248:1;3324:27:0;;;;;;;;;;;;;;;;23682:540;;;;;;;;;;-1:-1:-1;23682:540:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;16589:1210::-;;;;;;;;;;-1:-1:-1;16589:1210:0;;;;;:::i;:::-;;:::i;20977:396::-;;;;;;;;;;-1:-1:-1;20977:396:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;562:36::-;;;;;;;;;;-1:-1:-1;562:36:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;562:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11551:25:1;;;-1:-1:-1;;;;;11612:32:1;;;11607:2;11592:18;;11585:60;11661:18;;;11654:34;;;;11719:2;11704:18;;11697:34;;;;11762:3;11747:19;;11740:35;;;;11632:3;11791:19;;11784:35;;;;11868:4;11856:17;;;11850:3;11835:19;;11828:46;11905:3;11890:19;;11883:35;11949:3;11934:19;;11927:35;11993:3;11978:19;;11971:35;12037:3;12022:19;;12015:36;12082:3;12067:19;;12060:36;12127:3;12112:19;;12105:36;11538:3;11523:19;562:36:0;11069:1078:1;22524:817:0;;;;;;;;;;-1:-1:-1;22524:817:0;;;;;:::i;:::-;;:::i;11617:133::-;;;;;;;;;;-1:-1:-1;11617:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;11724:18:0;11691:7;11724:18;;;;;;;;;;;;11617:133;5161:1097;;;;;;;;;;-1:-1:-1;5161:1097:0;;;;;:::i;:::-;;:::i;1054:72::-;;;;;;;;;;;;1084:42;1054:72;;;;;-1:-1:-1;;;;;12316:32:1;;;12298:51;;12286:2;12271:18;1054:72:0;12152:203:1;4781:372:0;;;:::i;3607:110::-;;;;;;;;;;;;;:::i;3425:16::-;;;;;;;;;;;;;;;;1133:83;;;;;;;;;;;;1174:42;1133:83;;26572:886;;;;;;;;;;-1:-1:-1;26572:886:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;23349:325::-;;;;;;;;;;-1:-1:-1;23349:325:0;;;;;:::i;:::-;;:::i;11887:202::-;;;;;;;;;;-1:-1:-1;11887:202:0;;;;;:::i;:::-;;:::i;19648:143::-;;;;;;;;;;-1:-1:-1;19648:143:0;;;;;:::i;:::-;;:::i;22279:237::-;;;;;;;;;;-1:-1:-1;22279:237:0;;;;;:::i;:::-;;:::i;19799:1170::-;;;;;;;;;;-1:-1:-1;19799:1170:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12418:119::-;;;;;;;;;;;;;:::i;17807:1833::-;;;;;;;;;;-1:-1:-1;17807:1833:0;;;;;:::i;:::-;;:::i;605:41::-;;;;;;;;;;-1:-1:-1;605:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;26144:416;;;;;;;;;;-1:-1:-1;26144:416:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11758:121::-;;;;;;;;;;-1:-1:-1;11758:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;11848:21:0;11819:4;11848:21;;;:11;:21;;;;;;:23;;;11758:121;;;;14740:14:1;;14733:22;14715:41;;14703:2;14688:18;11758:121:0;14575:187:1;3450:30:0;;;;;;;;;;;;;;;;12097:313;;;;;;;;;;;;;:::i;4662:111::-;4735:30;4750:14;4735;:30::i;:::-;4662:111;:::o;3489:106::-;3543:13;3582:5;3575:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3489:106;:::o;653:36::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24230:1906::-;24365:16;24468:19;;;:9;:19;;;;;:43;;;24320;;24365:16;;;;;;;24531:2;24527:6;;24524:38;;;24554:2;24550:6;;24524:38;24574:16;24603:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;24603:27:0;24593:38;;;;;;;;;24652:10;24659:3;24652:6;:10;:::i;:::-;24640:22;;24716:17;;24698:16;;24691:6;:23;;;;:::i;:::-;:42;;:53;;24739:5;24691:53;;;24734:4;24691:53;24673:71;;24768:17;;24762:4;:23;;:46;;24791:17;;24762:46;;;24786:4;24762:46;24755:53;;24832:16;;24826:4;:22;;:44;;24854:16;;24826:44;;;24849:4;24826:44;24819:51;-1:-1:-1;24883:38:0;24954:11;24959:6;24819:51;24954:11;:::i;:::-;24924:42;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24924:42:0;;;;;;;;;;;;;;;;-1:-1:-1;24883:83:0;-1:-1:-1;24981:6:0;25002;;;;:::i;:::-;;;;25019:1009;25031:6;25025:4;:12;25019:1009;;25066:29;;;;:23;:29;;;;;:40;;;:50;;;;;:97;;-1:-1:-1;25120:29:0;;;;:23;:29;;;;;:40;;;:43;;25066:97;25063:933;;;25197:31;25231:23;:29;25255:4;25231:29;;;;;;;;;;;25197:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25197:63:0;;;-1:-1:-1;;25197:63:0;;;;;;;;;;;-1:-1:-1;25304:29:0;;;:23;:29;;;;;;:34;;;25197:63;;-1:-1:-1;;25292:46:0;;:11;:46;:::i;:::-;25279:59;;25375:38;25416:505;;;;;;;;25479:4;:19;;;25416:505;;;;25533:4;:15;;;25416:505;;;;25588:9;:26;25598:4;:15;;;25588:26;;;;;;;;;;;:34;;;;;;;;;;-1:-1:-1;;;;;25588:34:0;-1:-1:-1;;;;;25416:505:0;;;;;25655:4;:13;;;25416:505;;;;25711:4;:23;;;25416:505;;;;25763:4;:9;;;25416:505;;;;25892:4;:9;;;25416:505;;;;25808:4;:16;;;25416:505;;;;25858:5;25416:505;;;25375:546;;25951:7;25940:5;25946:1;25940:8;;;;;;;;:::i;:::-;;;;;;:18;;;;25977:3;;;;;:::i;:::-;;;;25178:818;;;25063:933;26010:6;;;;:::i;:::-;;;;25019:1009;;;-1:-1:-1;26053:19:0;;;;:9;:19;;;;;;:31;;;26111:16;;26046:5;;26053:31;;24230:1906;;-1:-1:-1;26103:6:0;;-1:-1:-1;26111:16:0;;-1:-1:-1;24230:1906:0;;-1:-1:-1;;;;24230:1906:0:o;21381:890::-;21483:17;21503:19;;;:9;:19;;;;;;:26;;;;21562:28;;;;;21633:18;;21648:2;21633:18;;;;;;;;;21439:26;;21503;;;;;21562:28;;21483:17;21633:18;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21633:18:0;;;;;;;;;;;;;;;-1:-1:-1;21603:48:0;-1:-1:-1;21675:1:0;21664:573;21680:2;21677:1;:5;21664:573;;21712:13;21728:9;:12;21738:1;21728:12;;;;;;;;;;;21712:28;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21755:29;21787:293;;;;;;;;21818:1;21787:293;;;;21847:1;:6;;;21787:293;;;;21884:1;:10;;;21787:293;;;;21941:1;:10;;;21952:7;21941:18;;;;:::i;:::-;21926:14;:33;:67;;21979:14;21926:67;;;21960:10;;;;:18;;21971:7;21960:18;:::i;:::-;21787:293;;;;22033:1;22019:12;:15;;:45;;;;;;;;;;;;;;;-1:-1:-1;;;22019:45:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;22019:45:0;;;;21787:293;;21755:325;-1:-1:-1;21755:325:0;22095:9;22105:3;22107:1;22105;:3;:::i;:::-;22095:14;;;;;;;;:::i;:::-;;;;;;:28;;;;22169:1;:10;;;22180:7;22169:18;;;;:::i;:::-;22153:14;:34;;:72;;22224:1;22153:72;;;22204:10;;;;:18;;22215:7;22204:18;:::i;:::-;22188:35;;:14;:35;:::i;:::-;22138:87;;21697:540;;21683:3;;;;;:::i;:::-;;;;21664:573;;;-1:-1:-1;22254:9:0;21381:890;-1:-1:-1;;;;21381:890:0:o;23682:540::-;23884:23;;;23904:2;23884:23;;;;;;;;;23750:32;;;;;;23853:28;;23884:23;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;23884:23:0;;;;;;;;;;;;-1:-1:-1;;23951:14:0;;;23962:2;23951:14;;;;;;;;;23853:54;;-1:-1:-1;23918:30:0;;23951:14;;;;;;;;;;;-1:-1:-1;;23918:47:0;-1:-1:-1;23988:1:0;23976:159;23994:2;23991:1;:5;;;23976:159;;24038:27;;;;:17;:27;;;;;;;;:30;;;;;;;;;;;24027:41;;;;;;;;;;;;;;;;;;;;;;;;:5;;24033:3;;24066:1;24033:3;:::i;:::-;24027:10;;;;;;;;;;:::i;:::-;;;;;;;;;;;:41;;;;24105:18;;;;;;;:15;:18;;;;;;;24083:16;24100:3;24102:1;24121;24100:3;:::i;:::-;24083:21;;;;;;;;;;:::i;:::-;;;;;;;;;;:40;23998:3;;;;:::i;:::-;;;;23976:159;;;;24155:5;24162:16;24180:9;:19;24190:8;24180:19;;;;;;;;;;;:33;;24147:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23682:540;;;;;:::o;16589:1210::-;16679:10;16651:13;16667:23;;;:11;:23;;;;;;;16724:32;16667:23;16724:22;:32::i;:::-;16701:55;;16784:1;16775:8;:10;16767:36;;;;-1:-1:-1;;;16767:36:0;;;;;;;:::i;:::-;;;;;;;;;16839:6;16822:15;:23;;16814:70;;;;-1:-1:-1;;;16814:70:0;;17189:2:1;16814:70:0;;;17171:21:1;17228:2;17208:18;;;17201:30;17267:34;17247:18;;;17240:62;-1:-1:-1;;;17318:18:1;;;17311:32;17360:19;;16814:70:0;16987:398:1;16814:70:0;16897:39;16908:8;16918:17;;16897:10;:39::i;:::-;16949:14;16976:3;16966:9;:6;16973:2;16966:9;:::i;:::-;:13;;;;:::i;:::-;16949:30;-1:-1:-1;16990:19:0;17012:16;16949:30;17012:6;:16;:::i;:::-;16990:38;;17088:6;17049:9;:19;17059:8;17049:19;;;;;;;;;;;:37;;;:45;;;;;;;:::i;:::-;;;;-1:-1:-1;;17130:141:0;;;;;;;;;;;17107:20;17130:141;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;17130:141:0;;;;;;;;17284:30;;;:20;:30;;;;;17315:9;:19;;;;;;;:36;;;17130:141;;;;17284:30;;17107:20;17315:38;;:36;:38;:::i;:::-;17284:70;;;;;;;;;;;;;;-1:-1:-1;17284:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;17371:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;-1:-1:-1;17422:8:0;;-1:-1:-1;17443:3:0;17433:9;:6;17440:2;17433:9;:::i;:::-;:13;;;;:::i;:::-;17422:24;;17457:50;17471:8;17481:6;17489:3;17457:50;;;;;;;;;;;;;-1:-1:-1;;;17457:50:0;;;:13;:50::i;:::-;17520:44;;17528:10;;17520:44;;;;;17549:14;;17520:44;;;;17549:14;17528:10;17520:44;;;;;;;;;;;;;;;;;;;;;17585:24;17612:98;;;;;;;;17648:10;:8;:10::i;:::-;17612:98;;17683:15;17612:98;;;;;17741:16;;;-1:-1:-1;17721:37:0;;;:19;:37;;;;;:41;;;;;;;;;;;;;;;;17773:18;;17585:125;;-1:-1:-1;17741:16:0;17773:18;;;:::i;:::-;;;;;;16640:1159;;;;;;;16589:1210;:::o;20977:396::-;21076:23;21102:19;;;:9;:19;;;;;;;;:29;;21076:55;;;;;;;;;;;;;;;;;21033:25;;21076:23;:55;;21102:29;21076:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21142:30;21188:9;:16;21173:32;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;21142:63;;21222:6;21218:118;21234:9;:16;21232:1;:18;21218:118;;;21299:25;21311:9;21321:1;21311:12;;;;;;;;:::i;:::-;;;;;;;21299:11;:25::i;:::-;21281:12;21294:1;21281:15;;;;;;;;:::i;:::-;;;;;;:43;;;;21252:3;;;;;:::i;:::-;;;;21218:118;;;-1:-1:-1;21353:12:0;20977:396;-1:-1:-1;;;20977:396:0:o;22524:817::-;22605:4;22642:19;;;:9;:19;;;;;:31;;;;22709:43;;;;;22780:17;;22773:24;;;:48;;22804:17;;22773:48;;;22798:5;22773:48;22765:56;;22865:16;;22857:7;:24;;;;:::i;:::-;22850:5;:31;;22842:104;;;;-1:-1:-1;;;22842:104:0;;20018:2:1;22842:104:0;;;20000:21:1;20057:2;20037:18;;;20030:30;20096:34;20076:18;;;20069:62;20167:30;20147:18;;;20140:58;20215:19;;22842:104:0;19816:424:1;22842:104:0;22959:16;22988:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;22988:27:0;22978:38;;;;;;;;23027:282;23041:5;23033:7;:13;23027:282;;;23076:32;;;;:23;:32;;;;;:43;;;:53;;23072:202;;23163:10;23188:32;;;:23;:32;;;;;:37;;;23176:49;;:11;:49;:::i;:::-;23163:62;-1:-1:-1;23244:14:0;23163:62;23244:14;;:::i;:::-;;;23144:130;23072:202;23288:9;;;;:::i;:::-;;;;23027:282;;;-1:-1:-1;23326:7:0;;22524:817;-1:-1:-1;;;;22524:817:0:o;5161:1097::-;5231:12;5246:19;;;:9;:19;;;;;:43;;;5317:17;;5310:24;;;:48;;5341:17;;5310:48;;;5335:5;5310:48;5302:56;-1:-1:-1;5394:11:0;:7;5402:3;5394:11;:::i;:::-;5387:5;:18;;:36;;5412:11;:7;5420:3;5412:11;:::i;:::-;5387:36;;;5406:5;5387:36;5436:16;5465:19;;;:9;:19;;;;;;;;:27;;;;-1:-1:-1;;;;;5465:27:0;5455:38;;;;;;;;5379:44;;-1:-1:-1;5504:460:0;5518:5;5510:7;:13;5504:460;;;5553:9;;5566:1;5553:14;5549:139;;5621:32;;;;:23;:32;;;;;;;;:51;;;5588:19;;;:9;:19;;;;;:31;;:84;;5621:51;;5588:31;;:84;;5621:51;;5588:84;:::i;:::-;;;;-1:-1:-1;;5549:139:0;5706:32;;;;:23;:32;;;;;:43;;;:53;;5702:227;;5794:10;5819:32;;;:23;:32;;;;;:37;;;5807:49;;:11;:49;:::i;:::-;5794:62;;5908:5;5875:9;:19;5885:8;5875:19;;;;;;;;;;;:31;;;:38;;;;;;;:::i;:::-;;;;-1:-1:-1;;;5702:227:0;5943:9;;;;:::i;:::-;;;;5504:460;;;5974:19;;;;:9;:19;;;;;;:43;;:49;;;6071:98;;;;;;;;;6107:10;:8;:10::i;:::-;6071:98;;6142:15;6071:98;;;;;6200:16;;;-1:-1:-1;6180:37:0;;;:19;:37;;;;;:41;;;;;;;;;;;;;;;;6232:18;;6044:125;;-1:-1:-1;6200:16:0;6232:18;;;:::i;:::-;;;;;;5220:1038;;;5161:1097;;:::o;4781:372::-;4862:10;11819:4;11848:21;;;:11;:21;;;;;;4883:55;;;;-1:-1:-1;;;4883:55:0;;;;;;;:::i;:::-;4967:1;4957:9;:11;4949:39;;;;-1:-1:-1;;;4949:39:0;;20447:2:1;4949:39:0;;;20429:21:1;20486:2;20466:18;;;20459:30;-1:-1:-1;;;20505:18:1;;;20498:45;20560:18;;4949:39:0;20245:339:1;4949:39:0;5019:11;5007:9;:24;;4999:64;;;;-1:-1:-1;;;4999:64:0;;20791:2:1;4999:64:0;;;20773:21:1;20830:2;20810:18;;;20803:30;20869:29;20849:18;;;20842:57;20916:18;;4999:64:0;20589:351:1;4999:64:0;-1:-1:-1;;;;;5099:27:0;;;;;;:11;:27;;;;;;5076:69;;5128:9;;5076:22;:69::i;3607:110::-;3663:13;3702:7;3695:14;;;;;:::i;26572:886::-;26640:32;26690:19;26730:8;:5;26736:2;26730:8;:::i;:::-;:11;;26739:2;26730:11;:::i;:::-;:14;;26742:2;26730:14;:::i;:::-;26712:32;;:15;:32;:::i;:::-;26690:54;;26757:8;26784:6;26808:1;26791:16;;:18;;;;:::i;:::-;26784:25;;26780:183;26814:1;26811;:4;26780:183;;26849:22;;;;:19;:22;;;;;:32;;;:48;-1:-1:-1;26846:106:0;;26931:5;;;;:::i;:::-;;;;26846:106;26817:3;;;;:::i;:::-;;;;26780:183;;;;26975:8;26992:1;26987:4;:6;:15;;26999:3;26987:15;;;26994:4;26987:15;26975:28;-1:-1:-1;27014:9:0;27026:7;26975:28;27026:3;:7;:::i;:::-;27014:19;-1:-1:-1;27061:7:0;;:14;;27071:4;27061:14;;;27069:1;27061:14;27054:21;;27126:3;27104:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;27104:26:0;;;;;;;;;;;;;;;;27096:34;;27143:8;27170:6;27194:1;27177:16;;:18;;;;:::i;:::-;27170:25;;27166:258;27200:4;27197:1;:7;27166:258;;27242:22;;;;:19;:22;;;;;:32;;;:48;-1:-1:-1;27239:160:0;;27337:22;;;;:19;:22;;;;;;;;;27324:35;;;;;;;;;;;;;;;;;;;:12;;:7;;27332:3;;27324:12;;;;;;:::i;:::-;;;;;;:35;;;;27378:5;;;;;:::i;:::-;;;;27239:160;27206:7;27209:4;27206:7;;:::i;:::-;;;27166:258;;;;27436:14;;;;;26572:886;;;;:::o;23349:325::-;23422:4;23498:19;;;:9;:19;;;;;;;;:33;;23469:62;;;;;;;;;;;;;;;;;23422:4;;;;23469:62;23498:33;23469:62;;;23498:33;23469:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23546:6;23542:100;23557:12;:19;23555:1;:21;23542:100;;;23615:12;23628:1;23615:15;;;;;;;;:::i;:::-;;;;;;;23606:24;;;;;:::i;:::-;;-1:-1:-1;23577:3:0;;;;:::i;:::-;;;;23542:100;;;-1:-1:-1;23659:7:0;;23349:325;-1:-1:-1;;;23349:325:0:o;11887:202::-;11949:4;-1:-1:-1;;11974:10:0;:19;11971:110;;-1:-1:-1;12002:21:0;;11887:202;-1:-1:-1;11887:202:0:o;11971:110::-;12068:13;:11;:13::i;:::-;12046:21;:11;12059:7;12046:21;:::i;:::-;:35;;;;:::i;:::-;12039:42;11887:202;-1:-1:-1;;11887:202:0:o;19648:143::-;19727:10;1084:42;19727:17;19719:26;;;;;;19756:16;:27;19648:143::o;22279:237::-;22347:4;22471:19;;;:9;:19;;;;;:37;;;22431;22481:8;22431:27;:37::i;:::-;22376:52;22400:8;22410:17;;22376:23;:52::i;:::-;:92;;;;:::i;:::-;:132;;;;:::i;19799:1170::-;19855:24;;:::i;:::-;19897:21;19921:19;;;:9;:19;;;;;;;;19897:43;;;;;;;;;;;;;;;-1:-1:-1;;;;;19897:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19921:19;;19897:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19951:30;19984:9;:27;19994:9;:16;;;19984:27;;;;;;;;;;;;;:32;;19951:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20027:27;20074:1;20057:9;:16;;;:18;;;:56;;;;;;;;;;;;;;;;;20076:9;:29;20086:9;:16;;;20103:1;20086:18;;;;:::i;:::-;20076:29;;;;;;;;;;;;;:34;;20057:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20027:86;;20124:33;20160:9;:29;20170:9;:16;;;20187:1;20170:18;;;;:::i;:::-;20160:29;;;;;;;;;;;;;:38;;;20124:74;;20209:14;20226:13;:11;:13::i;:::-;20281:17;;;;;-1:-1:-1;;;;;20271:28:0;20250:18;20271:28;;;;;;;;;;;20209:30;;-1:-1:-1;20337:37:0;20365:8;20337:27;:37::i;:::-;20310:64;;20385:22;20410:52;20434:8;20444:17;;20410:23;:52::i;:::-;20495:443;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20495:443:0;;;;;;;;;;;;;;;;;;;20806:16;;;;20495:443;;;;;;;;;;;;;;;;;;;;;;;;19799:1170;-1:-1:-1;;19799:1170:0:o;12418:119::-;12461:4;12483:10;12496;:8;:10::i;17807:1833::-;17901:10;17873:13;17889:23;;;:11;:23;;;;;;17931:10;17923:36;;;;-1:-1:-1;;;17923:36:0;;;;;;;:::i;:::-;17970:13;18004:19;;;:9;:19;;;;;:32;;;17986:50;;:15;:50;:::i;:::-;17970:66;;18067:8;18055;:20;;18047:64;;;;-1:-1:-1;;;18047:64:0;;21356:2:1;18047:64:0;;;21338:21:1;21395:2;21375:18;;;21368:30;21434:33;21414:18;;;21407:61;21485:18;;18047:64:0;21154:355:1;18047:64:0;18140:10;18130:9;:21;;;;;;;;;;;:34;-1:-1:-1;18130:34:0;18122:74;;;;-1:-1:-1;;;18122:74:0;;21716:2:1;18122:74:0;;;21698:21:1;21755:2;21735:18;;;21728:30;21794:29;21774:18;;;21767:57;21841:18;;18122:74:0;21514:351:1;18122:74:0;18209:16;18228:26;18242:11;18228:13;:26::i;:::-;18209:45;;18298:11;18275:21;:34;;18267:77;;;;-1:-1:-1;;;18267:77:0;;22072:2:1;18267:77:0;;;22054:21:1;22111:2;22091:18;;;22084:30;22150:32;22130:18;;;22123:60;22200:18;;18267:77:0;21870:354:1;18267:77:0;18428:10;18357:24;18418:21;;;;;;;;;;;18384:2;;18443:3;;18418:23;;18440:1;18418:23;:::i;:::-;18417:29;;;;:::i;:::-;18402:11;:45;:96;;;;-1:-1:-1;18478:10:0;18468:9;:21;;;;;;;;;;;18494:3;;18468:24;;18490:2;18468:24;:::i;:::-;18467:30;;;;:::i;:::-;18451:11;:47;;18402:96;18399:287;;;-1:-1:-1;18546:2:0;18399:287;;;18604:10;18594:9;:21;;;;;;;;;;;18620:3;;18594:24;;18616:2;18594:24;:::i;:::-;18593:30;;;;:::i;:::-;18578:11;:46;18575:111;;;-1:-1:-1;18672:2:0;18575:111;18698:14;18749:3;18716:31;18728:19;18716:11;:31;:::i;:::-;18715:37;;;;:::i;:::-;18698:54;-1:-1:-1;18763:19:0;18785:21;18698:54;18785:11;:21;:::i;:::-;18763:43;;18827:20;18850:160;;;;;;;;18884:11;18850:160;;;;18922:11;18850:160;;;;18953:13;:11;:13::i;:::-;18850:160;;;;;;;;;;;;;-1:-1:-1;;;18850:160:0;;;;;;;;;;;;-1:-1:-1;19023:30:0;;;:20;:30;;;;;19054:9;:19;;;;;;;:36;;;18827:183;;-1:-1:-1;18827:183:0;;19023:30;;-1:-1:-1;;19054:38:0;;;:::i;:::-;19023:70;;;;;;;;;;;;;;-1:-1:-1;19023:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;19110:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;-1:-1:-1;;19161:19:0;;;;:9;:19;;;;;19196:15;19161:32;;;;:50;19245:17;;19224:39;;19171:8;;19224:10;:39::i;:::-;19276:30;19282:10;19294:11;19276:5;:30::i;:::-;19337:11;19322:13;;:26;19319:159;;19389:11;19374:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;19319:159:0;;-1:-1:-1;19319:159:0;;19465:1;19451:13;:15;19319:159;19490:44;;19498:10;;19490:44;;;;;19519:14;;19490:44;;;;19519:14;19498:10;19490:44;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19550:11:0;;19547:86;;19587:34;;1084:42;;19587:34;;;;;19611:9;;19587:34;;;;19611:9;1084:42;19587:34;;;;;;;;;;;;;;;;;;;;;19547:86;17862:1778;;;;;;;17807:1833;:::o;26144:416::-;26260:21;26284:19;;;:9;:19;;;;;:36;;;26209:33;;26284:36;26346:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26346:35:0;;;;;;;;;;;;;;;;-1:-1:-1;26333:48:0;-1:-1:-1;26405:1:0;26394:127;26411:16;26408:1;:19;26394:127;;26476:20;:30;26497:8;26476:30;;;;;;;;;;;:33;26507:1;26476:33;;;;;;;;;;;26458:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;26473:1;26471;:3;;;;:::i;:::-;26458:17;;;;;;;;:::i;:::-;;;;;;:51;;;;26429:3;;;;;:::i;:::-;;;;26394:127;;;;26533:19;26144:416;;;:::o;12097:313::-;12137:4;12179:16;12163:13;;:32;12159:244;;;12263:6;12249:13;;12247:1;:15;;;;:::i;:::-;:22;;;;:::i;:::-;12236:34;;12237:7;12236:34;:::i;:::-;12219:52;;:15;:52;:::i;:::-;12212:59;;12097:313;:::o;12159:244::-;12325:7;12309:13;;:24;;:82;;-1:-1:-1;12375:16:0;;;12097:313::o;12309:82::-;12361:13;;12334:16;;:26;;12352:7;12334:26;:::i;:::-;:40;;;;:::i;6266:1399::-;6365:10;6396:9;6388:39;;;;-1:-1:-1;;;6388:39:0;;20447:2:1;6388:39:0;;;20429:21:1;20486:2;20466:18;;;20459:30;-1:-1:-1;;;20505:18:1;;;20498:45;20560:18;;6388:39:0;20245:339:1;6388:39:0;6458:11;6446:9;:24;;6438:64;;;;-1:-1:-1;;;6438:64:0;;20791:2:1;6438:64:0;;;20773:21:1;20830:2;20810:18;;;20803:30;20869:29;20849:18;;;20842:57;20916:18;;6438:64:0;20589:351:1;6438:64:0;-1:-1:-1;;;;;11848:21:0;;11819:4;11848:21;;;:11;:21;;;;;;6515:1143;;-1:-1:-1;;;;;11848:21:0;;11819:4;11848:21;;;:11;:21;;;;;;6578:59;;;;-1:-1:-1;;;6578:59:0;;22431:2:1;6578:59:0;;;22413:21:1;22470:2;22450:18;;;22443:30;-1:-1:-1;;;22489:18:1;;;22482:46;22545:18;;6578:59:0;22229:340:1;6578:59:0;-1:-1:-1;;;;;6671:28:0;;6654:14;6671:28;;;:11;:28;;;;;;6722:9;;6671:28;;6654:14;6722:11;;6732:1;6722:11;:::i;:::-;6714:19;;6750:13;6766:601;;;;;;;;6793:2;6766:601;;;;6822:14;-1:-1:-1;;;;;6766:601:0;;;;;6865:9;6766:601;;;;6902:1;6766:601;;;;6939:1;6766:601;;;;6970:1;6766:601;;;;6997:1;6766:601;;;;;;7038:1;7027:13;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7027:13:0;-1:-1:-1;6766:601:0;;7071:1;6766:601;;;;;7105:14;;7116:2;7105:14;;;;;;;;6766:601;;;;;7105:14;;;;;;;;;;;-1:-1:-1;;;6766:601:0;;7156:1;6766:601;;;;;;;7200:17;;6766:601;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7384:13;;;:9;:13;;;;;;;:15;;;;;;;;;;;;;-1:-1:-1;;;;;;7384:15:0;-1:-1:-1;;;;;7384:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7384:15:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;7384:15:0;;:13;;:15;;;;;;;;;;;:::i;:::-;-1:-1:-1;7384:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7384:15:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7414:27:0;;-1:-1:-1;7414:27:0;;;:11;:27;;;;;:32;;;7463:11;;;7384:15;7463:11;;;:::i;:::-;;;;-1:-1:-1;;7491:20:0;;;;:9;:20;;;;;;;:30;;:39;;;;;;;;;;;;;;;;;;7547:43;;7527:2;;7574:9;;7547:22;:43::i;:::-;6549:1053;;;6329:1336;6266:1399;:::o;6515:1143::-;7631:15;:13;:15::i;:::-;6329:1336;6266:1399;:::o;10964:645::-;11104:12;;11076:10;;11104:14;11101:80;;11157:12;;11152:17;;:4;:17;:::i;:::-;11144:25;;11101:80;11226:282;;;;;;;;11277:17;;11226:282;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11458:12;;11226:282;;;;11191:32;11521:42;;;:23;:42;;;;;;;:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11226:282;;;;11521:50;;;;;;;;:::i;:::-;-1:-1:-1;11521:50:0;;;;;;;;;;;11582:17;:19;;;:17;:19;;;:::i;:::-;;;;;;11065:544;;10964:645;;;;:::o;7673:2685::-;7783:10;7796;:8;:10::i;:::-;7783:23;-1:-1:-1;7817:11:0;7850;7783:23;7832:9;:6;7839:2;7832:9;:::i;:::-;:15;;;;:::i;:::-;7831:31;;;;:::i;:::-;7817:45;;7907:6;7875:9;:19;7885:8;7875:19;;;;;;;;;;;:30;;;:38;;;;;;;:::i;:::-;;;;;;;;7926:39;7937:8;7947:17;;7926:10;:39::i;:::-;8001:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8001:141:0;;;;;;;;7978:20;8155:30;;;:20;:30;;;;;8186:9;:19;;;;;;;:36;;;8001:141;;;;8155:30;;8186:38;;:36;:38;:::i;:::-;8155:70;;;;;;;;;;;;;;-1:-1:-1;8155:70:0;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;8242:19:0;;;;:9;:19;;;;;:36;;:38;;;;;;:::i;:::-;;;;;;8297:6;8293:2;;:10;;;;;;;:::i;:::-;;;;-1:-1:-1;;8316:11:0;8353:19;;;8328:1;8353:19;;;;;;;;:29;;;8393:1396;8399:7;;8393:1396;;8432:16;;;;:9;:16;;;;;:25;;:33;;8459:6;;8432:16;:33;;8459:6;;8432:33;:::i;:::-;;;;-1:-1:-1;;8494:16:0;;;;:9;:16;;;;;:33;;:41;;8529:6;;8494:16;:41;;8529:6;;8494:41;:::i;:::-;;;;-1:-1:-1;;8558:1:0;8552:7;;;;8549:75;;;8574:24;;;;:17;:24;;;;;;;;:31;;;;;;;;;;:42;;:50;;8618:6;;8574:24;:50;;8618:6;;8574:50;:::i;:::-;;;;-1:-1:-1;;8549:75:0;8642:18;8639:116;;;8694:24;;;;:17;:24;;;;;;;;:31;;;;;;;;;;:45;;;;;;:::i;:::-;;;;;;8639:116;8779:2;8772:5;:9;;;8769:894;;8825:17;8865:16;;;:9;:16;;;;;:23;;;:30;;;;:23;;:30;8862:785;;8959:22;;;;;;;:15;:22;;;;;;8984:7;;8952:29;;:6;:29;:::i;:::-;8951:41;;;;:::i;:::-;8936:56;;9018:5;:8;;9025:1;9018:8;9015:467;;9076:17;9094:16;;;:9;:16;;;;;;;;:23;;;;;9167:26;;;:13;:26;;;;;;;9196:7;;9160:33;;:6;:33;:::i;:::-;9159:45;;;;:::i;:::-;9144:60;;9272:12;9231:9;:16;9241:5;9231:16;;;;;;;;;;;:30;;9268:1;9262:5;:7;;;;:::i;:::-;9231:39;;;;;;;;;;:::i;:::-;;;;;;;;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;9317:11:0;;-1:-1:-1;8862:785:0;;-1:-1:-1;8862:785:0;9015:467;9446:12;9405:9;:16;9415:5;9405:16;;;;;;;;;;;:30;;9442:1;9436:5;:7;;;;:::i;:::-;9405:39;;;;;;;;;;:::i;:::-;;;;;;;;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;8862:785:0;;-1:-1:-1;8862:785:0;;9578:9;:12;;;;;;;;9615;;9578:26;;9605:7;;:5;:7;:::i;:::-;9578:35;;;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;8862:785:0;8796:867;8769:894;9688:17;9699:5;9688:10;:17::i;:::-;9729:16;;;;:9;:16;;;;;:26;;;9770:7;;;;:::i;:::-;;;;8393:1396;;;9814:2;9807:5;:9;;;9801:200;;9870:22;;;9842:17;9870:22;;;:15;:22;;;;;;9895:7;;9863:29;;:6;:29;:::i;:::-;9862:41;;;;:::i;:::-;9918:9;:12;;;;;;;;9842:61;;-1:-1:-1;9842:61:0;;9918:26;;9945:7;;:5;:7;:::i;:::-;9918:35;;;;;;;;;;:::i;:::-;;;;;;;;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;9982:7:0;;-1:-1:-1;9982:7:0;;;:::i;:::-;;;;9827:174;9801:200;;;10011:57;10025:8;10035:6;10053:3;10043:9;10035:6;10050:2;10043:9;:::i;:::-;:13;;;;:::i;:::-;10011:57;;;;;;;;;;;;;-1:-1:-1;;;10011:57:0;;;:13;:57::i;:::-;10082:9;;10095:1;10082:14;10079:84;;10112:39;10123:8;10133:17;;10112:10;:39::i;:::-;10181:19;;;;:9;:19;;;;;;;;:27;;10175:42;;-1:-1:-1;;;;;10181:27:0;10210:6;10175:5;:42::i;:::-;10256:3;10246:9;:6;10253:2;10246:9;:::i;:::-;:13;;;;:::i;:::-;10230;;:30;;;;;;;:::i;:::-;;;;-1:-1:-1;;10323:22:0;;1174:42;;10281:69;;10346:3;;10316:29;;:6;:29;:::i;:::-;:33;;;;:::i;:::-;10281:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4190:464;-1:-1:-1;;;;;4280:21:0;;4272:67;;;;-1:-1:-1;;;4272:67:0;;22776:2:1;4272:67:0;;;22758:21:1;22815:2;22795:18;;;22788:30;22854:34;22834:18;;;22827:62;-1:-1:-1;;;22905:18:1;;;22898:31;22946:19;;4272:67:0;22574:397:1;4272:67:0;-1:-1:-1;;;;;4377:18:0;;4352:22;4377:18;;;;;;;;;;;4414:24;;;;4406:71;;;;-1:-1:-1;;;4406:71:0;;23178:2:1;4406:71:0;;;23160:21:1;23217:2;23197:18;;;23190:30;23256:34;23236:18;;;23229:62;-1:-1:-1;;;23307:18:1;;;23300:32;23349:19;;4406:71:0;22976:398:1;4406:71:0;4510:6;4496:12;;:20;;4488:58;;;;-1:-1:-1;;;4488:58:0;;23581:2:1;4488:58:0;;;23563:21:1;23620:2;23600:18;;;23593:30;23659:27;23639:18;;;23632:55;23704:18;;4488:58:0;23379:349:1;4488:58:0;4580:23;4597:6;4580:14;:23;:::i;:::-;-1:-1:-1;;;;;4559:18:0;;:9;:18;;;;;;;;;;:44;;;;4624:12;:22;;4640:6;;4559:9;4624:22;;4640:6;;4624:22;:::i;:::-;;;;-1:-1:-1;;;;;4190:464:0:o;10367:471::-;10428:17;10448:20;;;:9;:20;;;;;;;:27;;;;;;10428:17;10503:13;;10448:27;;10503:13;:::i;:::-;10571:19;;;;;;;:9;:19;;;;;:28;;;10486:30;;-1:-1:-1;10571:38:0;;10601:7;10571:38;:::i;:::-;10532:20;;;;:9;:20;;;;;:37;;;:77;;;;:153;;;10683:2;10671:11;:14;;;10532:153;10529:302;;;10757:1;10719:20;;;:9;:20;;;;;:37;;;:39;;;;10777:27;;:38;;-1:-1:-1;;10777:38:0;;;;;;;10529:302;10417:421;;10367:471;:::o;3953:229::-;-1:-1:-1;;;;;4043:21:0;;4035:65;;;;-1:-1:-1;;;4035:65:0;;23935:2:1;4035:65:0;;;23917:21:1;23974:2;23954:18;;;23947:30;24013:33;23993:18;;;23986:61;24064:18;;4035:65:0;23733:355:1;4035:65:0;4129:6;4113:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;4146:18:0;;:9;:18;;;;;;;;;;:28;;4168:6;;4146:9;:28;;4168:6;;4146:28;:::i;:::-;;;;-1:-1:-1;;;;3953:229:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:286:1;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:1;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:1:o;305:472::-;347:3;385:5;379:12;412:6;407:3;400:19;437:1;447:162;461:6;458:1;455:13;447:162;;;523:4;579:13;;;575:22;;569:29;551:11;;;547:20;;540:59;476:12;447:162;;;627:6;624:1;621:13;618:87;;;693:1;686:4;677:6;672:3;668:16;664:27;657:38;618:87;-1:-1:-1;759:2:1;738:15;-1:-1:-1;;734:29:1;725:39;;;;766:4;721:50;;305:472;-1:-1:-1;;305:472:1:o;782:220::-;931:2;920:9;913:21;894:4;951:45;992:2;981:9;977:18;969:6;951:45;:::i;1007:180::-;1066:6;1119:2;1107:9;1098:7;1094:23;1090:32;1087:52;;;1135:1;1132;1125:12;1087:52;-1:-1:-1;1158:23:1;;1007:180;-1:-1:-1;1007:180:1:o;1192:362::-;1397:6;1386:9;1379:25;1440:2;1435;1424:9;1420:18;1413:30;1360:4;1460:45;1501:2;1490:9;1486:18;1478:6;1460:45;:::i;:::-;1452:53;;1541:6;1536:2;1525:9;1521:18;1514:34;1192:362;;;;;;:::o;1741:248::-;1809:6;1817;1870:2;1858:9;1849:7;1845:23;1841:32;1838:52;;;1886:1;1883;1876:12;1838:52;-1:-1:-1;;1909:23:1;;;1979:2;1964:18;;;1951:32;;-1:-1:-1;1741:248:1:o;2199:2031::-;2527:4;2556:3;2597:2;2586:9;2582:18;2627:2;2616:9;2609:21;2650:6;2685;2679:13;2716:6;2708;2701:22;2742:3;2732:13;;2776:2;2765:9;2761:18;2754:25;;2838:2;2828:6;2825:1;2821:14;2810:9;2806:30;2802:39;2860:4;2899:2;2891:6;2887:15;2920:1;2930:1084;2944:6;2941:1;2938:13;2930:1084;;;3037:3;3033:8;3021:9;3013:6;3009:22;3005:37;3000:3;2993:50;3072:6;3066:13;3102:6;3142:2;3136:9;3128:6;3121:25;3197:2;3193;3189:11;3183:18;3178:2;3170:6;3166:15;3159:43;3225:4;3276:2;3272;3268:11;3262:18;3293:49;3338:2;3330:6;3326:15;3312:12;-1:-1:-1;;;;;2060:31:1;2048:44;;1994:104;3293:49;-1:-1:-1;;3365:4:1;3412:11;;;3406:18;3389:15;;;3382:43;3448:4;3495:11;;;3489:18;3472:15;;;3465:43;3551:11;;;3545:18;3528:15;;;3521:43;3605:11;;;3599:18;3637:15;;;3630:27;;;3684:50;3718:15;;;3599:18;3684:50;:::i;:::-;3757:4;3804:11;;;3798:18;3781:15;;;3774:43;3841:6;3891:12;;;3885:19;3867:16;;;;3860:45;;;;-1:-1:-1;;3992:12:1;;;;3957:15;;;;2966:1;2959:9;2930:1084;;;-1:-1:-1;;4053:18:1;;4046:34;;;2173:13;;2166:21;4128:4;4113:20;;2154:34;4031:6;-1:-1:-1;4089:45:1;;-1:-1:-1;;;;2103:91:1;4089:45;4165:4;4150:20;;4143:36;;;;4210:4;4195:20;4188:36;2199:2031;;-1:-1:-1;;;2199:2031:1:o;4504:1398::-;4696:4;4725:2;4765;4754:9;4750:18;4795:2;4784:9;4777:21;4818:6;4853;4847:13;4884:6;4876;4869:22;4910:2;4900:12;;4943:2;4932:9;4928:18;4921:25;;5005:2;4995:6;4992:1;4988:14;4977:9;4973:30;4969:39;5043:2;5035:6;5031:15;5064:1;5074:799;5088:6;5085:1;5082:13;5074:799;;;5181:2;5177:7;5165:9;5157:6;5153:22;5149:36;5144:3;5137:49;5215:6;5209:13;5245:4;5283:2;5277:9;5269:6;5262:25;5334:2;5330;5326:11;5320:18;5375:2;5370;5362:6;5358:15;5351:27;5405:48;5449:2;5441:6;5437:15;5423:12;5405:48;:::i;:::-;5391:62;;;5504:2;5500;5496:11;5490:18;5485:2;5477:6;5473:15;5466:43;5532:4;5587:2;5583;5579:11;5573:18;5568:2;5560:6;5556:15;5549:43;;5615:4;5668:2;5664;5660:11;5654:18;5632:40;;5721:6;5713;5709:19;5704:2;5696:6;5692:15;5685:44;;5752:41;5786:6;5770:14;5752:41;:::i;:::-;5851:12;;;;5742:51;-1:-1:-1;;;5816:15:1;;;;5110:1;5103:9;5074:799;;;-1:-1:-1;5890:6:1;;4504:1398;-1:-1:-1;;;;;;;;4504:1398:1:o;6319:435::-;6372:3;6410:5;6404:12;6437:6;6432:3;6425:19;6463:4;6492:2;6487:3;6483:12;6476:19;;6529:2;6522:5;6518:14;6550:1;6560:169;6574:6;6571:1;6568:13;6560:169;;;6635:13;;6623:26;;6669:12;;;;6704:15;;;;6596:1;6589:9;6560:169;;;-1:-1:-1;6745:3:1;;6319:435;-1:-1:-1;;;;;6319:435:1:o;6759:1100::-;7165:2;7177:21;;;7247:13;;7150:18;;;7269:22;;;7117:4;;7345;;7322:3;7307:19;;;7372:15;;;7117:4;7415:196;7429:6;7426:1;7423:13;7415:196;;;7478:51;7525:3;7516:6;7510:13;6239:12;;6227:25;;6301:4;6290:16;;;6284:23;6268:14;;6261:47;6160:154;7478:51;7558:4;7549:14;;;;;7586:15;;;;7451:1;7444:9;7415:196;;;7419:3;;;7656:9;7651:3;7647:19;7642:2;7631:9;7627:18;7620:47;7690:41;7727:3;7719:6;7690:41;:::i;:::-;7676:55;;;7781:9;7773:6;7769:22;7762:4;7751:9;7747:20;7740:52;7809:44;7846:6;7838;7809:44;:::i;:::-;7801:52;6759:1100;-1:-1:-1;;;;;;6759:1100:1:o;7864:1412::-;7911:3;7939:6;7972:5;7966:12;7961:3;7954:25;8025:4;8018:5;8014:16;8008:23;8040:48;8082:4;8077:3;8073:14;8059:12;-1:-1:-1;;;;;2060:31:1;2048:44;;1994:104;8040:48;;8137:4;8130:5;8126:16;8120:23;8113:4;8108:3;8104:14;8097:47;8193:4;8186:5;8182:16;8176:23;8169:4;8164:3;8160:14;8153:47;8249:4;8242:5;8238:16;8232:23;8225:4;8220:3;8216:14;8209:47;8305:4;8298:5;8294:16;8288:23;8281:4;8276:3;8272:14;8265:47;8360:4;8353:5;8349:16;8343:23;8375:48;8417:4;8412:3;8408:14;8392;4302:4;4291:16;4279:29;;4235:75;8375:48;;8471:4;8464:5;8460:16;8454:23;8509:2;8502:4;8497:3;8493:14;8486:26;8533:58;8587:2;8582:3;8578:12;8562:14;8533:58;:::i;:::-;8521:70;;;8610:6;8663:2;8656:5;8652:14;8646:21;8641:2;8636:3;8632:12;8625:43;;8687:6;8741:2;8734:5;8730:14;8724:21;8785:3;8779:4;8775:14;8770:2;8765:3;8761:12;8754:36;8813:50;8858:4;8842:14;8813:50;:::i;:::-;8882:6;8924:14;;;8918:21;8904:12;;;8897:43;8959:6;9001:14;;;8995:21;8981:12;;;8974:43;9036:6;9078:14;;;9072:21;9058:12;;;9051:43;9113:6;9155:14;;;9149:21;9135:12;;;9128:43;9190:6;9232:14;;;9226:21;9212:12;;;;9205:43;;;;-1:-1:-1;8799:64:1;;7864:1412;-1:-1:-1;;;7864:1412:1:o;9281:936::-;9332:3;9360:6;9401:5;9395:12;9428:2;9423:3;9416:15;9452:50;9498:2;9493:3;9489:12;9475;9452:50;:::i;:::-;9440:62;;;9550:4;9543:5;9539:16;9533:23;9598:3;9592:4;9588:14;9581:4;9576:3;9572:14;9565:38;9626:39;9660:4;9644:14;9626:39;:::i;:::-;9612:53;;;9713:4;9706:5;9702:16;9696:23;9763:3;9755:6;9751:16;9744:4;9739:3;9735:14;9728:40;9791:41;9825:6;9809:14;9791:41;:::i;:::-;9777:55;;;9881:4;9874:5;9870:16;9864:23;9857:4;9852:3;9848:14;9841:47;9937:4;9930:5;9926:16;9920:23;9913:4;9908:3;9904:14;9897:47;9993:4;9986:5;9982:16;9976:23;9969:4;9964:3;9960:14;9953:47;10049:4;10042:5;10038:16;10032:23;10025:4;10020:3;10016:14;10009:47;10105:4;10098:5;10094:16;10088:23;10081:4;10076:3;10072:14;10065:47;10131:6;10184:2;10177:5;10173:14;10167:21;10162:2;10157:3;10153:12;10146:43;;10205:6;10198:13;;;9281:936;;;;:::o;10222:842::-;10414:4;10443:2;10483;10472:9;10468:18;10513:2;10502:9;10495:21;10536:6;10571;10565:13;10602:6;10594;10587:22;10640:2;10629:9;10625:18;10618:25;;10702:2;10692:6;10689:1;10685:14;10674:9;10670:30;10666:39;10652:53;;10740:2;10732:6;10728:15;10761:1;10771:264;10785:6;10782:1;10779:13;10771:264;;;10878:2;10874:7;10862:9;10854:6;10850:22;10846:36;10841:3;10834:49;10906;10948:6;10939;10933:13;10906:49;:::i;:::-;10896:59;-1:-1:-1;11013:12:1;;;;10978:15;;;;10807:1;10800:9;10771:264;;;-1:-1:-1;11052:6:1;;10222:842;-1:-1:-1;;;;;;;10222:842:1:o;12360:742::-;12595:2;12647:21;;;12717:13;;12620:18;;;12739:22;;;12566:4;;12595:2;12780;;12798:18;;;;12839:15;;;12566:4;12882:194;12896:6;12893:1;12890:13;12882:194;;;12945:51;12992:3;12983:6;12977:13;6239:12;;6227:25;;6301:4;6290:16;;;6284:23;6268:14;;6261:47;6160:154;12945:51;13016:12;;;;13051:15;;;;12918:1;12911:9;12882:194;;;-1:-1:-1;13093:3:1;;12360:742;-1:-1:-1;;;;;;;12360:742:1:o;13107:259::-;13286:2;13275:9;13268:21;13249:4;13306:54;13356:2;13345:9;13341:18;13333:6;13306:54;:::i;13371:1199::-;13569:4;13598:2;13638;13627:9;13623:18;13668:2;13657:9;13650:21;13691:6;13726;13720:13;13757:6;13749;13742:22;13783:2;13773:12;;13816:2;13805:9;13801:18;13794:25;;13878:2;13868:6;13865:1;13861:14;13850:9;13846:30;13842:39;13916:2;13908:6;13904:15;13937:1;13947:594;13961:6;13958:1;13955:13;13947:594;;;14026:22;;;-1:-1:-1;;14022:36:1;14010:49;;14082:13;;14150:9;;14135:25;;14203:11;;;14197:18;14180:15;;;14173:43;14259:11;;;14253:18;14236:15;;;14229:43;14295:4;14338:11;;;14332:18;14118:4;14370:15;;;14363:27;;;14332:18;14413:48;14445:15;;;14332:18;14413:48;:::i;:::-;14519:12;;;;14403:58;-1:-1:-1;;;14484:15:1;;;;13983:1;13976:9;13947:594;;14767:380;14846:1;14842:12;;;;14889;;;14910:61;;14964:4;14956:6;14952:17;14942:27;;14910:61;15017:2;15009:6;15006:14;14986:18;14983:38;14980:161;;15063:10;15058:3;15054:20;15051:1;15044:31;15098:4;15095:1;15088:15;15126:4;15123:1;15116:15;14980:161;;14767:380;;;:::o;15152:127::-;15213:10;15208:3;15204:20;15201:1;15194:31;15244:4;15241:1;15234:15;15268:4;15265:1;15258:15;15284:128;15324:3;15355:1;15351:6;15348:1;15345:13;15342:39;;;15361:18;;:::i;:::-;-1:-1:-1;15397:9:1;;15284:128::o;15417:125::-;15457:4;15485:1;15482;15479:8;15476:34;;;15490:18;;:::i;:::-;-1:-1:-1;15527:9:1;;15417:125::o;15547:127::-;15608:10;15603:3;15599:20;15596:1;15589:31;15639:4;15636:1;15629:15;15663:4;15660:1;15653:15;15679:136;15718:3;15746:5;15736:39;;15755:18;;:::i;:::-;-1:-1:-1;;;15791:18:1;;15679:136::o;15820:168::-;15860:7;15926:1;15922;15918:6;15914:14;15911:1;15908:21;15903:1;15896:9;15889:17;15885:45;15882:71;;;15933:18;;:::i;:::-;-1:-1:-1;15973:9:1;;15820:168::o;15993:127::-;16054:10;16049:3;16045:20;16042:1;16035:31;16085:4;16082:1;16075:15;16109:4;16106:1;16099:15;16125:135;16164:3;16185:17;;;16182:43;;16205:18;;:::i;:::-;-1:-1:-1;16252:1:1;16241:13;;16125:135::o;16265:195::-;16303:4;16340;16337:1;16333:12;16372:4;16369:1;16365:12;16397:3;16392;16389:12;16386:38;;;16404:18;;:::i;:::-;16441:13;;;16265:195;-1:-1:-1;;;16265:195:1:o;16465:175::-;16502:3;16546:4;16539:5;16535:16;16575:4;16566:7;16563:17;16560:43;;16583:18;;:::i;:::-;16632:1;16619:15;;16465:175;-1:-1:-1;;16465:175:1:o;16645:337::-;16847:2;16829:21;;;16886:2;16866:18;;;16859:30;-1:-1:-1;;;16920:2:1;16905:18;;16898:43;16973:2;16958:18;;16645:337::o;17390:217::-;17430:1;17456;17446:132;;17500:10;17495:3;17491:20;17488:1;17481:31;17535:4;17532:1;17525:15;17563:4;17560:1;17553:15;17446:132;-1:-1:-1;17592:9:1;;17390:217::o;17738:545::-;17840:2;17835:3;17832:11;17829:448;;;17876:1;17901:5;17897:2;17890:17;17946:4;17942:2;17932:19;18016:2;18004:10;18000:19;17997:1;17993:27;17987:4;17983:38;18052:4;18040:10;18037:20;18034:47;;;-1:-1:-1;18075:4:1;18034:47;18130:2;18125:3;18121:12;18118:1;18114:20;18108:4;18104:31;18094:41;;18185:82;18203:2;18196:5;18193:13;18185:82;;;18248:17;;;18229:1;18218:13;18185:82;;;18189:3;;;17738:545;;;:::o;18459:1352::-;18585:3;18579:10;18612:18;18604:6;18601:30;18598:56;;;18634:18;;:::i;:::-;18663:97;18753:6;18713:38;18745:4;18739:11;18713:38;:::i;:::-;18707:4;18663:97;:::i;:::-;18815:4;;18879:2;18868:14;;18896:1;18891:663;;;;19598:1;19615:6;19612:89;;;-1:-1:-1;19667:19:1;;;19661:26;19612:89;-1:-1:-1;;18416:1:1;18412:11;;;18408:24;18404:29;18394:40;18440:1;18436:11;;;18391:57;19714:81;;18861:944;;18891:663;17685:1;17678:14;;;17722:4;17709:18;;-1:-1:-1;;18927:20:1;;;19045:236;19059:7;19056:1;19053:14;19045:236;;;19148:19;;;19142:26;19127:42;;19240:27;;;;19208:1;19196:14;;;;19075:19;;19045:236;;;19049:3;19309:6;19300:7;19297:19;19294:201;;;19370:19;;;19364:26;-1:-1:-1;;19453:1:1;19449:14;;;19465:3;19445:24;19441:37;19437:42;19422:58;19407:74;;19294:201;-1:-1:-1;;;;;19541:1:1;19525:14;;;19521:22;19508:36;;-1:-1:-1;18459:1352:1:o;20945:204::-;20983:3;21019:4;21016:1;21012:12;21051:4;21048:1;21044:12;21086:3;21080:4;21076:14;21071:3;21068:23;21065:49;;;21094:18;;:::i;:::-;21130:13;;20945:204;-1:-1:-1;;;20945:204:1:o

Swarm Source

ipfs://2f43eef73adf1766c9c6fcde00c5a188d0dc65d8beda2de972bdaf1cdebebb4c
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.