Contract 0x35bec47922b187d819c3d71ce872086f22f60477

Contract Overview

Balance:
0 CRO

CRO Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xfdfcd78fde3e0bdc8f5c00dcba3e7f289eac89c1f71edc0ef71a82b9db520d6cTransfer86786692023-06-06 23:02:0517 hrs 19 mins ago0x8447f6f3a3eb7e889eed68369b24f192ade637f0 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.9465918894360
0x04f0f78ddd099d27f463b6d77b3a389784d75446690811b29f7bedbdfb39e7cbApprove86781852023-06-06 22:16:2418 hrs 4 mins ago0xbd7bfcb2f6cebe2ade0949a1d77199c7f88d2acf IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2196718781890
0xdc79ab504418bdf0317c8e18a11fec17ce43aef888b8e84243909e18f8f43283Approve86771052023-06-06 20:34:2519 hrs 46 mins ago0xad052d55d389072c55daa677cc0e48f4d84fa8ab IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2196741710430
0x33424383bac5a335768b94df40b8de58e8c9d31a31516720e5004dec901e1040Transfer86767362023-06-06 19:59:3020 hrs 21 mins ago0x8447f6f3a3eb7e889eed68369b24f192ade637f0 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.94660958640
0x813c9fcfee7def46a8a66b88c32138f4d753e99cf6bf81007d33110cdf23a4bfApprove86766992023-06-06 19:56:0020 hrs 25 mins ago0x8447f6f3a3eb7e889eed68369b24f192ade637f0 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2196750269920
0xf1fd6f7e13eeda478eeb10afa34e6bda0995e1cb57b78beb3c4294142fe837fcApprove86743712023-06-06 16:16:111 day 5 mins ago0xf79e9aa61657fd19a94f75380ccc4364e56f0c23 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2196799448010
0xa44375085f9dd17d2e8aeb947d91d068352d73e5320f2c3e02ee628038977717Approve86632322023-06-05 22:44:401 day 17 hrs ago0x589057b2a47f79d6b433afb5799f59ab41670d53 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2197037348090
0xe2dc160a90fe8ab5dae7faa0e27b4262d922cead78f41443f54bcea56a207f9cApprove86627702023-06-05 22:01:031 day 18 hrs ago0x881420a347b81fb691b348a9b412c39e695dd6ae IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.218410587134 4,735.188880971
0xe2bcb1290156736f495999659acc97ef35ed63bd91e8dbf501ac5cf982962de9Approve86620752023-06-05 20:55:241 day 19 hrs ago0x2ae5aa38418e5f3a3b6ac662503083740b19fc60 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2197061787560
0x049db3c582b62dc5214e1ea31cdd58a02c5cb2faac6ef80c50a4525f66ba678dApprove86614592023-06-05 19:57:041 day 20 hrs ago0xe073099dde6d475c4e8aceeb6c7e8cfadc65aeca IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.218356510547 4,735.248423381
0x5578d968d14b9b6bc6dd1ac0ac0d0da44910cbeb38a9636a273ebd04d7a442d9Approve86603342023-06-05 18:10:441 day 22 hrs ago0x1630f28d091146ee7df5322b5f7e50c5a9bdf9bb IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.219779433694 4,735.299026018
0xda6d9a572e95074ceeeb4350cb2092b2e1ec6e9af67c6b2be9a4ea020901c0e3Approve86595832023-06-05 16:59:481 day 23 hrs ago0xc05f6e693a727aca4c605dd413a6b751b2ca87c3 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2197113924290
0x129c62ec36a0313af0fa7dcc2e9da0dae17cc50eae0f36e5a73da84212c4ab36Approve86481652023-06-04 23:00:392 days 17 hrs ago0x14b24a96e55adb12d19551be5837f8262d79dd3e IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2197356474550
0xccdb10024e9f76c0e414d1b4627d7319e7eb7489d1ad96b332be74255762854dApprove86351372023-06-04 2:29:413 days 13 hrs ago0x7969a708e2c986c3269a3c5753947f3eeb06989f IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2197633642270
0xa3c4eda95dbb77cb824a3de1b9e55d96d3129d1a1c88b084c8883f6927decfd8Approve86341942023-06-04 1:00:433 days 15 hrs agoCronos ID Name legion.cro IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.218470882006 4,736.496086853
0x647b982af09d2a5758f700ddbded2a60ddb7da6ee2be47191e7d600fb05e29faApprove86329092023-06-03 22:59:203 days 17 hrs ago0x9fbe54c08ad130271fc1224a99f6970d49ba78af IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2182339867210
0x9517f743320d702d7694dc467a99bd81f8d62b261ce965a5fa5e6bf8004d570bApprove86038112023-06-02 1:11:095 days 15 hrs ago0x9ae293893f19e12e1a56faa179680e0e652ec63a IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.218535313481 4,737.892975211
0xffeddab99a92705f66ea8791bbaa14be79e93e22534d5b11cadd0718b86b0c91Approve86035792023-06-02 0:49:145 days 15 hrs ago0x189ff68c3c1edf4506581c7aee0d6d50d773fd99 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.137517650529 4,737.903549672
0x79ebf39371dacba9f3f4426ee0efe7d5db86b72e7252e4ff73ef5dbe074f74a4Change Is Tx Lim...85978542023-06-01 15:47:556 days 33 mins ago0x62b0dc15e2b7c7ef3429c22300956990a4e6f995 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.219604935093 4,737.663907272
0x7d64bc1dbf3609b8c811d877bffbf6572ca1205f8b8c0f5fe8f65a0dafec8225Change Is Fee Ex...85978512023-06-01 15:47:376 days 33 mins ago0x62b0dc15e2b7c7ef3429c22300956990a4e6f995 IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.125334902253 4,737.664042841
0x80d34158c3e27e4649fffb92e1b5ee623e53a05fc43ee615f7d8b84c46ba3290Approve85957232023-06-01 12:26:386 days 3 hrs ago0xcfee857a7b92d9ef40264f7b7e266eced077d3cb IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2198473023450
0x175ef572d3dba61f9fe1349c9a574b925dbc06ed0c70fa28c10de9d768bb44bfApprove85898392023-06-01 3:10:596 days 13 hrs ago0x7074a0adfc8a55b1a8827bcc4e870a2e909d914f IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2198598737020
0xae3394c6b297c6bb29d6ccadc1a2c097daac7164ce461b748aca215c3be0379dApprove85863382023-05-31 21:40:246 days 18 hrs ago0x881420a347b81fb691b348a9b412c39e695dd6ae IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.218572200499 4,738.692693749
0x81abab1e84e5d7a56b845cb2c61acbd4dc0c82628e13d0c804b1568ffc0f02cdApprove85858512023-05-31 20:54:216 days 19 hrs ago0x9ae293893f19e12e1a56faa179680e0e652ec63a IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.137541206738 4,738.715133095
0xbd4abe19d494c8ad13099c698b8ec957fa402fdbb66ca7a69e51c6473ba70c67Approve85856352023-05-31 20:33:596 days 19 hrs ago0x65a3cc3cb87f2a696d48c898e47981fb8ddeb08d IN  0x35bec47922b187d819c3d71ce872086f22f604770 CRO0.2198688339330
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x6a5da29871a68ab63d14ef4de4cd63e034ef14fe157e50df42b412df5a4af45686894932023-06-07 16:04:3816 mins ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be42.003931829829561399 CRO
0x6a5da29871a68ab63d14ef4de4cd63e034ef14fe157e50df42b412df5a4af45686894932023-06-07 16:04:3816 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99524.502293567400577484 CRO
0x6a5da29871a68ab63d14ef4de4cd63e034ef14fe157e50df42b412df5a4af45686894932023-06-07 16:04:3816 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d573.50688070220173245 CRO
0x6a5da29871a68ab63d14ef4de4cd63e034ef14fe157e50df42b412df5a4af45686894932023-06-07 16:04:3816 mins ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f60477140.013106099431871333 CRO
0x58fd963d685973669d34e270ef375b08c2b59518b5b3d2ad5d5556e71b91d7c086864292023-06-07 11:15:275 hrs 5 mins ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be30.094109697180552372 CRO
0x58fd963d685973669d34e270ef375b08c2b59518b5b3d2ad5d5556e71b91d7c086864292023-06-07 11:15:275 hrs 5 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99517.554897323355322217 CRO
0x58fd963d685973669d34e270ef375b08c2b59518b5b3d2ad5d5556e71b91d7c086864292023-06-07 11:15:275 hrs 5 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d552.664691970065966651 CRO
0x58fd963d685973669d34e270ef375b08c2b59518b5b3d2ad5d5556e71b91d7c086864292023-06-07 11:15:275 hrs 5 mins ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f60477100.31369899060184124 CRO
0xeb4fbe3443e9b4f3b829e19b6ffe5d293614d16f179fbd25fd4d226899097a5486774932023-06-06 21:11:0519 hrs 10 mins ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be32.860711442976727016 CRO
0xeb4fbe3443e9b4f3b829e19b6ffe5d293614d16f179fbd25fd4d226899097a5486774932023-06-06 21:11:0519 hrs 10 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99519.168748341736424094 CRO
0xeb4fbe3443e9b4f3b829e19b6ffe5d293614d16f179fbd25fd4d226899097a5486774932023-06-06 21:11:0519 hrs 10 mins ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d557.506245025209272279 CRO
0xeb4fbe3443e9b4f3b829e19b6ffe5d293614d16f179fbd25fd4d226899097a5486774932023-06-06 21:11:0519 hrs 10 mins ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f60477109.535704809922423389 CRO
0x16cf372acdb5cec6daabf127d6e376ceabc66f5a7f7b6a951884d2a0bc987ae386647612023-06-06 1:08:551 day 15 hrs ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be41.38027122236344703 CRO
0x16cf372acdb5cec6daabf127d6e376ceabc66f5a7f7b6a951884d2a0bc987ae386647612023-06-06 1:08:551 day 15 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99524.138491546378677435 CRO
0x16cf372acdb5cec6daabf127d6e376ceabc66f5a7f7b6a951884d2a0bc987ae386647612023-06-06 1:08:551 day 15 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d572.415474639136032304 CRO
0x16cf372acdb5cec6daabf127d6e376ceabc66f5a7f7b6a951884d2a0bc987ae386647612023-06-06 1:08:551 day 15 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f60477137.934237407878156769 CRO
0x34d55a9ac9e0dbc21a160592dbc20a2c350d919a22b4d58939dc9ca7f5367c9986614382023-06-05 19:55:041 day 20 hrs ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be23.509140055305651346 CRO
0x34d55a9ac9e0dbc21a160592dbc20a2c350d919a22b4d58939dc9ca7f5367c9986614382023-06-05 19:55:041 day 20 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99513.713665032261629953 CRO
0x34d55a9ac9e0dbc21a160592dbc20a2c350d919a22b4d58939dc9ca7f5367c9986614382023-06-05 19:55:041 day 20 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d541.140995096784889857 CRO
0x34d55a9ac9e0dbc21a160592dbc20a2c350d919a22b4d58939dc9ca7f5367c9986614382023-06-05 19:55:041 day 20 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f6047778.363800184352171156 CRO
0x14c0ecdc58bf5553db04b1c3a9a29d93baeca1986f866de4f24db6cec314f74e86488122023-06-05 0:01:422 days 16 hrs ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be22.571203761544885816 CRO
0x14c0ecdc58bf5553db04b1c3a9a29d93baeca1986f866de4f24db6cec314f74e86488122023-06-05 0:01:422 days 16 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770x62b0dc15e2b7c7ef3429c22300956990a4e6f99513.16653552756785006 CRO
0x14c0ecdc58bf5553db04b1c3a9a29d93baeca1986f866de4f24db6cec314f74e86488122023-06-05 0:01:422 days 16 hrs ago 0x35bec47922b187d819c3d71ce872086f22f604770xb07268522985e0f51bbdb6475cb529b9d5c579d539.49960658270355018 CRO
0x14c0ecdc58bf5553db04b1c3a9a29d93baeca1986f866de4f24db6cec314f74e86488122023-06-05 0:01:422 days 16 hrs ago 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be 0x35bec47922b187d819c3d71ce872086f22f6047775.237345871816286056 CRO
0x9197ddde9902db316ad7172c94569ec037a1e71a24b2573f1eed44ac537b4bd286481692023-06-04 23:01:022 days 17 hrs ago 0x35bec47922b187d819c3d71ce872086f22f60477 0xec0a7a0c2439e8cb67b992b12ecd020ea943c7be29.032950040294508103 CRO
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CROnk

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2023-04-26
*/

//SPDX-License-Identifier: Unlicensed
pragma solidity ^0.7.4;

library SafeMath {

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

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

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

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

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

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

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

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {

    using SafeMath for uint256;
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IDEXRouter router;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be;
    IBEP20 RewardToken = IBEP20(0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23);

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;
    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 30 minutes ;
    uint256 public minDistribution = 1 / 100000 * (10 ** 18);

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token); _;
    }

    constructor (address _router) {
        router = _router != address(0) ? IDEXRouter(_router) : IDEXRouter(routerAddress);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 newMinPeriod, uint256 newMinDistribution) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {

        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {

        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = RewardToken.balanceOf(address(this)).sub(balanceBefore);
        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while(gasUsed < gas && iterations < shareholderCount) {

            if(currentIndex >= shareholderCount){ currentIndex = 0; }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }
    
    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
                && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend() external {

        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

contract CROnk is IBEP20, Auth {
    
    using SafeMath for uint256;

    string constant _name = "CROnk";
    string constant _symbol = "CROnk";
    uint8 constant _decimals = 9;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address routerAddress = 0xeC0A7a0C2439E8Cb67b992b12ecd020Ea943c7Be;
    address RewardToken = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;

    uint256 _totalSupply = 10* 10**11 * (10 ** _decimals);
    uint256 public _maxTxAmount = 1 * 10**10 * (10 ** _decimals);
    uint256 public _walletMax = 1 * 10**10 * (10 ** _decimals);
    
    bool public restrictWhales = true;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isDividendExempt;

    uint256 public liquidityFee = 2;
    uint256 public marketingFee = 2;
    uint256 public rewardsFee = 5;
    uint256 public extraFeeOnSell = 0;

    uint256 public totalFee = 0;
    uint256 public totalFeeIfSelling = 0;

    address public autoLiquidityReceiver;
    address public marketingWallet;
    address public devWallet;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;
    bool public tradingOpen = false;

    DividendDistributor public dividendDistributor;
    uint256 distributorGas = 300000;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    uint256 public swapThreshold = 1 * 10**9 * (10 ** _decimals);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor () Auth(msg.sender) {
        
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        dividendDistributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isFeeExempt[address(this)] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[pair] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[msg.sender] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;
        isDividendExempt[ZERO] = true;

        // NICE!
        autoLiquidityReceiver = 0x62b0Dc15e2B7C7eF3429c22300956990A4E6F995;
        marketingWallet = 0xB07268522985e0F51BBdb6475cb529B9d5C579d5;
        devWallet = 0x62b0Dc15e2B7C7eF3429c22300956990A4E6F995;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function getOwner() external view override returns (address) { return owner; }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
    }

    function changeTxLimit(uint256 newLimit) external authorized {
        _maxTxAmount = newLimit;
    }

    function changeWalletLimit(uint256 newLimit) external authorized {
        _walletMax  = newLimit;
    }

    function changeRestrictWhales(bool newValue) external authorized {
       restrictWhales = newValue;
    }
    
    function changeIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function changeIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function changeIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        
        if(exempt){
            dividendDistributor.setShare(holder, 0);
        }else{
            dividendDistributor.setShare(holder, _balances[holder]);
        }
    }

    function changeFees(uint256 newLiqFee, uint256 newRewardFee, uint256 newMarketingFee, uint256 newExtraSellFee) external authorized {
        liquidityFee = newLiqFee;
        rewardsFee = newRewardFee;
        marketingFee = newMarketingFee;
        extraFeeOnSell = newExtraSellFee;
        
        totalFee = liquidityFee.add(marketingFee).add(rewardsFee);
        totalFeeIfSelling = totalFee.add(extraFeeOnSell);
    }

    function changeFeeReceivers(address newLiquidityReceiver, address newMarketingWallet, address newDevWallet) external authorized {
        autoLiquidityReceiver = newLiquidityReceiver;
        marketingWallet = newMarketingWallet;
        devWallet = newDevWallet;
    }

    function changeSwapBackSettings(bool enableSwapBack, uint256 newSwapBackLimit, bool swapByLimitOnly) external authorized {
        swapAndLiquifyEnabled  = enableSwapBack;
        swapThreshold = newSwapBackLimit;
        swapAndLiquifyByLimitOnly = swapByLimitOnly;
    }

    function changeDistributionCriteria(uint256 newinPeriod, uint256 newMinDistribution) external authorized {
        dividendDistributor.setDistributionCriteria(newinPeriod, newMinDistribution);
    }

    function changeDistributorSettings(uint256 gas) external authorized {
        require(gas < 300000);
        distributorGas = gas;
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        
        if(inSwapAndLiquify){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen, "Trading not open yet");
        }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");

        if(msg.sender != pair && !inSwapAndLiquify && swapAndLiquifyEnabled && _balances[address(this)] >= swapThreshold){ swapBack(); }

        if(!launched() && recipient == pair) {
            require(_balances[sender] > 0);
            launch();
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        
        if(!isTxLimitExempt[recipient] && restrictWhales)
        {
            require(_balances[recipient].add(amount) <= _walletMax);
        }

        uint256 finalAmount = !isFeeExempt[sender] && !isFeeExempt[recipient] ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(finalAmount);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try dividendDistributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try dividendDistributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }

        try dividendDistributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, finalAmount);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint256 feeApplicable = pair == recipient ? totalFeeIfSelling : totalFee;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function tradingStatus(bool newStatus) public onlyOwner {
        tradingOpen = newStatus;
    }

    function swapBack() internal lockTheSwap {
        
        uint256 tokensToLiquify = _balances[address(this)];
        uint256 amountToLiquify = tokensToLiquify.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = tokensToLiquify.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance;

        uint256 totalBNBFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountBNBLiquidity = amountBNB.mul(liquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(rewardsFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.sub(amountBNBLiquidity).sub(amountBNBReflection);

        try dividendDistributor.deposit{value: amountBNBReflection}() {} catch {}
        
        uint256 marketingShare = amountBNBMarketing.mul(3).div(4);
        uint256 devShare = amountBNBMarketing.sub(marketingShare);
        
        (bool tmpSuccess,) = payable(marketingWallet).call{value: marketingShare, gas: 30000}("");
        (bool tmpSuccess1,) = payable(devWallet).call{value: devShare, gas: 30000}("");
        
        // only to supress warning msg
        tmpSuccess = false;
        tmpSuccess1 = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);

}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"changeDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"changeDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newLiquidityReceiver","type":"address"},{"internalType":"address","name":"newMarketingWallet","type":"address"},{"internalType":"address","name":"newDevWallet","type":"address"}],"name":"changeFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLiqFee","type":"uint256"},{"internalType":"uint256","name":"newRewardFee","type":"uint256"},{"internalType":"uint256","name":"newMarketingFee","type":"uint256"},{"internalType":"uint256","name":"newExtraSellFee","type":"uint256"}],"name":"changeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"changeIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"changeRestrictWhales","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enableSwapBack","type":"bool"},{"internalType":"uint256","name":"newSwapBackLimit","type":"uint256"},{"internalType":"bool","name":"swapByLimitOnly","type":"bool"}],"name":"changeSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"changeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendDistributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraFeeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"restrictWhales","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFeeIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"newStatus","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b031990811661dead178255600380548216905560048054821673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be17905560058054909116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae23178155683635c9adc5dea00000600655678ac7230489e8000060078190556008556009805460ff19908116600117909155600f839055601092909255601155600060128190556013819055601455601b80549091169055620493e0601c55601d805462ff00001961ff001990911661010017169055670de0b6b3a7640000601e55348015620000ea57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff191690921790915560048054601880549094166001600160a01b039182161793849055845163c45a015560e01b8152945193169363c45a01559381830193929091829003018186803b1580156200016a57600080fd5b505afa1580156200017f573d6000803e3d6000fd5b505050506040513d60208110156200019657600080fd5b5051601854604080516315ab88c960e31b815290516001600160a01b039384169363c9c6539693169163ad5c4648916004808301926020929190829003018186803b158015620001e557600080fd5b505afa158015620001fa573d6000803e3d6000fd5b505050506040513d60208110156200021157600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b0390921660048301523060248301525160448083019260209291908290030181600087803b1580156200026157600080fd5b505af115801562000276573d6000803e3d6000fd5b505050506040513d60208110156200028d57600080fd5b5051601980546001600160a01b0319166001600160a01b03928316179055306000908152600b6020908152604080832060188054861685529252918290206000199055549051911690620002e19062000545565b6001600160a01b03909116815260405190819003602001906000f0801580156200030f573d6000803e3d6000fd5b50601b8054610100600160a81b0319166101006001600160a01b0393841602179055336000818152600c60209081526040808320805460ff199081166001908117909255308086528386208054831684179055868652600d85528386208054831684179055601980548916875284872080548416851790555488168652600e8552838620805483168417905595855282852080548216831790559484528184208054861682179055600254861684528184208054861682179055600354909516835290912080549092169092179055601580547362b0dc15e2b7c7ef3429c22300956990a4e6f9956001600160a01b031991821681179092556016805473b07268522985e0f51bbdb6475cb529b9d5c579d5908316179055601780549091169091179055601154601054600f546200046a93620004569290620004e3811b6200167217901c565b620004e360201b620016721790919060201c565b6013819055506200048e601254601354620004e360201b620016721790919060201c565b601455600654336000818152600a60209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a362000553565b6000828201838110156200053e576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610f768062002a1d83390190565b6124ba80620005636000396000f3fe6080604052600436106103035760003560e01c80637db1342c11610190578063bf56b371116100dc578063e66b1d1e11610095578063f887ea401161006f578063f887ea4014610ab3578063fabe628314610ac8578063fe9fbb8014610b03578063ffb54a9914610b365761030a565b8063e66b1d1e14610a21578063f0b37c0414610a4d578063f2fde38b14610a805761030a565b8063bf56b37114610968578063ca33e64c1461097d578063ca987b0e14610992578063d920334e146109a7578063da00097d146109d1578063dd62ed3e146109e65761030a565b806398118cb411610149578063a9059cbb11610123578063a9059cbb146108b7578063a9f7864b146108f0578063b6a5d7de14610920578063bad3ea6a146109535761030a565b806398118cb414610852578063a3a2e89e14610867578063a8aa1b31146108a25761030a565b80637db1342c146107b6578063807c2d9c146107e0578063893d20e8146107f55780638b42507f1461080a5780638ea5220f1461083d57806395d89b41146103365761030a565b80633f4218e01161024f578063650c42261161020857806370a08231116101e257806370a082311461070257806375f0a87414610735578063773fcb5c146107665780637d1db4a5146107a15761030a565b8063650c42261461069c57806369cf17d4146106d85780636b67c4df146106ed5761030a565b80633f4218e0146105af5780634355855a146105e257806344de2e4c14610615578063479f66d81461062a5780634a74bb0214610654578063571ac8b0146106695761030a565b806323b872dd116102bc5780632f54bf6e116102965780632f54bf6e146104d2578063313ce56714610505578063315dca291461053057806334c70889146105755761030a565b806323b872dd146104655780632b112e49146104a85780632bb14e1d146104bd5761030a565b80630445b6671461030f57806306fdde0314610336578063095ea7b3146103c05780630d2959801461040d57806318160ddd1461043b5780631df4ccfc146104505761030a565b3661030a57005b600080fd5b34801561031b57600080fd5b50610324610b4b565b60408051918252519081900360200190f35b34801561034257600080fd5b5061034b610b51565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561038557818101518382015260200161036d565b50505050905090810190601f1680156103b25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103cc57600080fd5b506103f9600480360360408110156103e357600080fd5b506001600160a01b038135169060200135610b70565b604080519115158252519081900360200190f35b34801561041957600080fd5b506104396004803603602081101561043057600080fd5b50351515610bd7565b005b34801561044757600080fd5b50610324610c2d565b34801561045c57600080fd5b50610324610c33565b34801561047157600080fd5b506103f96004803603606081101561048857600080fd5b506001600160a01b03813581169160208101359091169060400135610c39565b3480156104b457600080fd5b50610324610cfb565b3480156104c957600080fd5b50610324610d44565b3480156104de57600080fd5b506103f9600480360360208110156104f557600080fd5b50356001600160a01b0316610d4a565b34801561051157600080fd5b5061051a610d5e565b6040805160ff9092168252519081900360200190f35b34801561053c57600080fd5b506104396004803603606081101561055357600080fd5b506001600160a01b038135811691602081013582169160409091013516610d63565b34801561058157600080fd5b506104396004803603606081101561059857600080fd5b508035151590602081013590604001351515610dea565b3480156105bb57600080fd5b506103f9600480360360208110156105d257600080fd5b50356001600160a01b0316610e64565b3480156105ee57600080fd5b506103f96004803603602081101561060557600080fd5b50356001600160a01b0316610e79565b34801561062157600080fd5b506103f9610e8e565b34801561063657600080fd5b506104396004803603602081101561064d57600080fd5b5035610e97565b34801561066057600080fd5b506103f9610ef3565b34801561067557600080fd5b506103f96004803603602081101561068c57600080fd5b50356001600160a01b0316610f01565b3480156106a857600080fd5b50610439600480360360808110156106bf57600080fd5b5080359060208101359060408101359060600135610f0f565b3480156106e457600080fd5b50610324610f9a565b3480156106f957600080fd5b50610324610fa0565b34801561070e57600080fd5b506103246004803603602081101561072557600080fd5b50356001600160a01b0316610fa6565b34801561074157600080fd5b5061074a610fc1565b604080516001600160a01b039092168252519081900360200190f35b34801561077257600080fd5b506104396004803603604081101561078957600080fd5b506001600160a01b0381351690602001351515610fd0565b3480156107ad57600080fd5b5061032461116d565b3480156107c257600080fd5b50610439600480360360208110156107d957600080fd5b5035611173565b3480156107ec57600080fd5b506103246111c0565b34801561080157600080fd5b5061074a6111c6565b34801561081657600080fd5b506103f96004803603602081101561082d57600080fd5b50356001600160a01b03166111d5565b34801561084957600080fd5b5061074a6111ea565b34801561085e57600080fd5b506103246111f9565b34801561087357600080fd5b506104396004803603604081101561088a57600080fd5b506001600160a01b03813516906020013515156111ff565b3480156108ae57600080fd5b5061074a611272565b3480156108c357600080fd5b506103f9600480360360408110156108da57600080fd5b506001600160a01b038135169060200135611281565b3480156108fc57600080fd5b506104396004803603604081101561091357600080fd5b508035906020013561128e565b34801561092c57600080fd5b506104396004803603602081101561094357600080fd5b50356001600160a01b0316611339565b34801561095f57600080fd5b5061074a6113a3565b34801561097457600080fd5b506103246113b7565b34801561098957600080fd5b5061074a6113bd565b34801561099e57600080fd5b506103246113cc565b3480156109b357600080fd5b50610439600480360360208110156109ca57600080fd5b50356113d2565b3480156109dd57600080fd5b506103f961141f565b3480156109f257600080fd5b5061032460048036036040811015610a0957600080fd5b506001600160a01b038135811691602001351661142e565b348015610a2d57600080fd5b5061043960048036036020811015610a4457600080fd5b50351515611459565b348015610a5957600080fd5b5061043960048036036020811015610a7057600080fd5b50356001600160a01b03166114b4565b348015610a8c57600080fd5b5061043960048036036020811015610aa357600080fd5b50356001600160a01b0316611518565b348015610abf57600080fd5b5061074a6115c9565b348015610ad457600080fd5b5061043960048036036040811015610aeb57600080fd5b506001600160a01b03813516906020013515156115d8565b348015610b0f57600080fd5b506103f960048036036020811015610b2657600080fd5b50356001600160a01b031661164b565b348015610b4257600080fd5b506103f9611669565b601e5481565b60408051808201909152600581526443524f6e6b60d81b602082015290565b336000818152600b602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b610be033610d4a565b610c1a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601b805460ff1916911515919091179055565b60065490565b60135481565b6001600160a01b0383166000908152600b6020908152604080832033845290915281205460001914610ce6576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600b82528381203382529091529190912054610cc19184906116cc565b6001600160a01b0385166000908152600b602090815260408083203384529091529020555b610cf1848484611763565b90505b9392505050565b600354600090610d3f90610d17906001600160a01b0316610fa6565b600254610d3990610d30906001600160a01b0316610fa6565b60065490611c7f565b90611c7f565b905090565b60115481565b6000546001600160a01b0390811691161490565b600990565b610d6c3361164b565b610dab576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601580546001600160a01b039485166001600160a01b031991821617909155601680549385169382169390931790925560178054919093169116179055565b610df33361164b565b610e32576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601d8054601e93909355901515620100000262ff0000199315156101000261ff00199093169290921792909216179055565b600c6020526000908152604090205460ff1681565b600e6020526000908152604090205460ff1681565b60095460ff1681565b610ea03361164b565b610edf576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620493e08110610eee57600080fd5b601c55565b601d54610100900460ff1681565b6000610bd182600019610b70565b610f183361164b565b610f57576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600f849055601183905560108290556012819055610f7f83610f798685611672565b90611672565b6013819055601254610f919190611672565b60145550505050565b60125481565b60105481565b6001600160a01b03166000908152600a602052604090205490565b6016546001600160a01b031681565b610fd93361164b565b611018576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b038216301480159061103f57506019546001600160a01b03838116911614155b61104857600080fd5b6001600160a01b0382166000908152600e60205260409020805460ff191682158015919091179091556110ea57601b5460408051630a5b654b60e11b81526001600160a01b038581166004830152600060248301819052925161010090940416926314b6ca969260448084019391929182900301818387803b1580156110cd57600080fd5b505af11580156110e1573d6000803e3d6000fd5b50505050611169565b601b546001600160a01b038381166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b15801561115057600080fd5b505af1158015611164573d6000803e3d6000fd5b505050505b5050565b60075481565b61117c3361164b565b6111bb576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600855565b60085481565b6000546001600160a01b031690565b600d6020526000908152604090205460ff1681565b6017546001600160a01b031681565b600f5481565b6112083361164b565b611247576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6019546001600160a01b031681565b6000610cf4338484611763565b6112973361164b565b6112d6576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601b60019054906101000a90046001600160a01b03166001600160a01b0316632d48e89683836040518363ffffffff1660e01b81526004018083815260200182815260200192505050600060405180830381600087803b15801561115057600080fd5b61134233610d4a565b61137c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b601b5461010090046001600160a01b031681565b601a5481565b6015546001600160a01b031681565b60145481565b6113db3361164b565b61141a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600755565b601d5462010000900460ff1681565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b6114623361164b565b6114a1576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6009805460ff1916911515919091179055565b6114bd33610d4a565b6114f7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b61152133610d4a565b61155b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b6018546001600160a01b031681565b6115e13361164b565b611620576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b601b5460ff1681565b600082820183811015610cf4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561175b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611720578181015183820152602001611708565b50505050905090810190601f16801561174d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b601d5460009060ff16156117835761177c848484611cc1565b9050610cf4565b6001600160a01b03841660009081526001602052604090205460ff161580156117c557506001600160a01b03831660009081526001602052604090205460ff16155b1561181857601b5460ff16611818576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b6007548211158061184157506001600160a01b0384166000908152600d602052604090205460ff165b611886576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b6019546001600160a01b031633148015906118a45750601d5460ff16155b80156118b75750601d54610100900460ff165b80156118d45750601e54306000908152600a602052604090205410155b156118e1576118e1611da2565b6118e961229b565b15801561190357506019546001600160a01b038481169116145b15611932576001600160a01b0384166000908152600a602052604090205461192a57600080fd5b6119326122a3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600a90915291909120546119849184906116cc565b6001600160a01b038086166000908152600a60209081526040808320949094559186168152600d909152205460ff161580156119c2575060095460ff165b156119f8576008546001600160a01b0384166000908152600a60205260409020546119ed9084611672565b11156119f857600080fd5b6001600160a01b0384166000908152600c602052604081205460ff16158015611a3a57506001600160a01b0384166000908152600c602052604090205460ff16155b611a445782611a4f565b611a4f8585856122a9565b6001600160a01b0385166000908152600a6020526040902054909150611a759082611672565b6001600160a01b038086166000908152600a60209081526040808320949094559188168152600e909152205460ff16611b2157601b546001600160a01b038681166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611b0e57600080fd5b505af1925050508015611b1f575060015b505b6001600160a01b0384166000908152600e602052604090205460ff16611bba57601b546001600160a01b038581166000818152600a6020526040808220548151630a5b654b60e11b81526004810194909452602484015251610100909404909216926314b6ca969260448084019391929182900301818387803b158015611ba757600080fd5b505af1925050508015611bb8575060015b505b601b60019054906101000a90046001600160a01b03166001600160a01b031663ffb2c479601c546040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015611c1757600080fd5b505af1925050508015611c28575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b6000610cf483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116cc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600a90915291822054611d129184906116cc565b6001600160a01b038086166000908152600a60205260408082209390935590851681522054611d419083611672565b6001600160a01b038085166000818152600a602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b601d805460ff19166001179055306000908152600a6020526040812054601354600f54919291611de391600291611ddd919082908790612368565b906123c1565b90506000611df18383611c7f565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110611e2357fe5b6001600160a01b03928316602091820292909201810191909152601854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b158015611e7757600080fd5b505afa158015611e8b573d6000803e3d6000fd5b505050506040513d6020811015611ea157600080fd5b5051815182906001908110611eb257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050601860009054906101000a90046001600160a01b03166001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015611f6c578181015183820152602001611f54565b505050509050019650505050505050600060405180830381600087803b158015611f9557600080fd5b505af1158015611fa9573d6000803e3d6000fd5b5050600f5447925060009150611fcd90611fc49060026123c1565b60135490611c7f565b90506000611fef6002611ddd84611ddd600f548861236890919063ffffffff16565b9050600061200c83611ddd6011548761236890919063ffffffff16565b9050600061201e82610d398786611c7f565b9050601b60019054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561207057600080fd5b505af193505050508015612082575060015b5060006120956004611ddd846003612368565b905060006120a38383611c7f565b6016546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d80600081146120fa576040519150601f19603f3d011682016040523d82523d6000602084013e6120ff565b606091505b50506017546040519192506000916001600160a01b039091169061753090859084818181858888f193505050503d8060008114612158576040519150601f19603f3d011682016040523d82523d6000602084013e61215d565b606091505b5060009350839250508c15905061228257601860009054906101000a90046001600160a01b03166001600160a01b031663f305d71988308f600080601560009054906101000a90046001600160a01b0316426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561221957600080fd5b505af115801561222d573d6000803e3d6000fd5b50505050506040513d606081101561224457600080fd5b505060408051888152602081018e905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b5050601d805460ff191690555050505050505050505050565b601a54151590565b43601a55565b60195460009081906001600160a01b038581169116146122cb576013546122cf565b6014545b905060006122e26064611ddd8685612368565b306000908152600a60205260409020549091506122ff9082611672565b306000818152600a6020908152604091829020939093558051848152905191926001600160a01b038a16927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a361235e8482611c7f565b9695505050505050565b60008261237757506000610bd1565b8282028284828161238457fe5b0414610cf45760405162461bcd60e51b81526004018080602001828103825260218152602001806124646021913960400191505060405180910390fd5b6000610cf483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506000818361244d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611720578181015183820152602001611708565b50600083858161245957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207e512b21486adc08d3b028eac98799da742e148e742d7e84f9fc61c0576e608d64736f6c634300070400336080604052600280546001600160a01b031990811673ec0a7a0c2439e8cb67b992b12ecd020ea943c7be1790915560038054909116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae231790556ec097ce7bc90715b34b9f1000000000600c55610708600d556509184e72a000600e5534801561007b57600080fd5b50604051610f76380380610f768339818101604052602081101561009e57600080fd5b50516001600160a01b0381166100bf576002546001600160a01b03166100c1565b805b600180546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610e7b806100fb6000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f76107bd565b34801561026057600080fd5b506100f76107c3565b34801561027557600080fd5b506101426107c9565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b503561082e565b3480156102b457600080fd5b506100f7610913565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610919565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610a41565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d82610aa2565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610b8f565b90610bda565b6008556001600160a01b03821660009081526007602052604090208190556103c581610c34565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610c34565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610b8f565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600354604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b50516040805160028082526060808301845293945090916020830190803683375050600154604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156105bf57600080fd5b505afa1580156105d3573d6000803e3d6000fd5b505050506040513d60208110156105e957600080fd5b5051815182906000906105f857fe5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061062357fe5b6001600160a01b0392831660209182029290920181019190915260015460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b838110156106b557818101518382015260200161069d565b50505050905001955050505050506000604051808303818588803b1580156106dc57600080fd5b505af11580156106f0573d6000803e3d6000fd5b5050600354604080516370a0823160e01b815230600482015290516000955061077b94508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561074957600080fd5b505afa15801561075d573d6000803e3d6000fd5b505050506040513d602081101561077357600080fd5b505190610b8f565b60095490915061078b9082610bda565b600955600854600c546107b5916107ac916107a69085610c51565b90610caa565b600b5490610bda565b600b55505050565b600b5481565b600a5481565b6107d233610cec565b610823576040805162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f207761697421000000000000000000604482015290519081900360640190fd5b61082c33610919565b565b6000546001600160a01b0316331461084557600080fd5b600454806108535750610910565b60008060005a90505b848210801561086a57508383105b1561090b5783600f541061087e576000600f555b6108aa6004600f548154811061089057fe5b6000918252602090912001546001600160a01b0316610cec565b156108db576108db6004600f54815481106108c157fe5b6000918252602090912001546001600160a01b0316610919565b6108f06108e95a8390610b8f565b8390610bda565b91505a600f805460019081019091559390930192905061085c565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461093b57610910565b6000610946826103e8565b90508015610a3d57600a5461095b9082610bda565b600a556003546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156109b457600080fd5b505af11580156109c8573d6000803e3d6000fd5b505050506040513d60208110156109de57600080fd5b50506001600160a01b03821660009081526006602090815260408083204290556007909152902060020154610a139082610bda565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610c34565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b600480546000198101908110610ab457fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610aec57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610b3a57fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610b6a57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610bd183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d28565b90505b92915050565b600082820183811015610bd1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610bd4600c546107a6600b5485610c5190919063ffffffff16565b600082610c6057506000610bd4565b82820282848281610c6d57fe5b0414610bd15760405162461bcd60e51b8152600401808060200182810382526021815260200180610e256021913960400191505060405180910390fd5b6000610bd183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610dbf565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610bd45750600e54610d21836103e8565b1192915050565b60008184841115610db75760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610d7c578181015183820152602001610d64565b50505050905090810190601f168015610da95780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610e0e5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610d7c578181015183820152602001610d64565b506000838581610e1a57fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220a13aa9937a4a537910ac170f219766788abb3eeb43c273560220f23b8cca0d6a64736f6c63430007040033

Deployed ByteCode Sourcemap

11257:11928:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12943:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;14377:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15221:216;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15221:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;21090:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21090:98:0;;;;:::i;:::-;;14639:88;;;;;;;;;;;;;:::i;12398:27::-;;;;;;;;;;;;;:::i;18272:372::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18272:372:0;;;;;;;;;;;;;;;;;:::i;14819:142::-;;;;;;;;;;;;;:::i;12320:29::-;;;;;;;;;;;;;:::i;10627:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10627:103:0;-1:-1:-1;;;;;10627:103:0;;:::i;14553:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17184:273;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17184:273:0;;;;;;;;;;;;;;;;;;;:::i;17465:276::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17465:276:0;;;;;;;;;;;;;;;;:::i;12080:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12080:44:0;-1:-1:-1;;;;;12080:44:0;;:::i;12186:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12186:49:0;-1:-1:-1;;;;;12186:49:0;;:::i;11923:33::-;;;;;;;;;;;;;:::i;17957:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17957:139:0;;:::i;12842:40::-;;;;;;;;;;;;;:::i;15445:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15445:116:0;-1:-1:-1;;;;;15445:116:0;;:::i;16745:431::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16745:431:0;;;;;;;;;;;;;;;;;:::i;12356:33::-;;;;;;;;;;;;;:::i;12282:31::-;;;;;;;;;;;;;:::i;14969:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14969:105:0;-1:-1:-1;;;;;14969:105:0;;:::i;12520:30::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;12520:30:0;;;;;;;;;;;;;;16361:376;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16361:376:0;;;;;;;;;;:::i;11785:60::-;;;;;;;;;;;;;:::i;15857:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15857:106:0;;:::i;11852:58::-;;;;;;;;;;;;;:::i;14733:78::-;;;;;;;;;;;;;:::i;12131:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12131:48:0;-1:-1:-1;;;;;12131:48:0;;:::i;12557:24::-;;;;;;;;;;;;;:::i;12244:31::-;;;;;;;;;;;;;:::i;16091:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16091:123:0;;;;;;;;;;:::i;12621:19::-;;;;;;;;;;;;;:::i;18108:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18108:156:0;;;;;;;;:::i;17749:200::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17749:200:0;;;;;;;:::i;10300:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10300:94:0;-1:-1:-1;;;;;10300:94:0;;:::i;12721:46::-;;;;;;;;;;;;;:::i;12649:25::-;;;;;;;;;;;;;:::i;12477:36::-;;;;;;;;;;;;;:::i;12432:::-;;;;;;;;;;;;;:::i;15746:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15746:103:0;;:::i;12889:45::-;;;;;;;;;;;;;:::i;15080:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15080:133:0;;;;;;;;;;:::i;15971:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15971:108:0;;;;:::i;10470:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10470:97:0;-1:-1:-1;;;;;10470:97:0;;:::i;11027:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11027:173:0;-1:-1:-1;;;;;11027:173:0;;:::i;12590:24::-;;;;;;;;;;;;;:::i;16222:131::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16222:131:0;;;;;;;;;;:::i;10801:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10801:107:0;-1:-1:-1;;;;;10801:107:0;;:::i;12681:31::-;;;;;;;;;;;;;:::i;12943:60::-;;;;:::o;14377:80::-;14449:5;;;;;;;;;;;;-1:-1:-1;;;14449:5:0;;;;14377:80;:::o;15221:216::-;15325:10;15296:4;15313:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15313:32:0;;;;;;;;;;;:41;;;15370:37;;;;;;;15296:4;;15313:32;;15325:10;;15370:37;;;;;;;;-1:-1:-1;15425:4:0;15221:216;;;;;:::o;21090:98::-;10016:19;10024:10;10016:7;:19::i;:::-;10008:38;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;;;;21157:11:::1;:23:::0;;-1:-1:-1;;21157:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21090:98::o;14639:88::-;14712:12;;14639:88;:::o;12398:27::-;;;;:::o;18272:372::-;-1:-1:-1;;;;;18402:19:0;;18372:4;18402:19;;;:11;:19;;;;;;;;18422:10;18402:31;;;;;;;;-1:-1:-1;;18402:46:0;18399:180;;18498:69;;;;;;;;;;;-1:-1:-1;;;18498:69:0;;;;;;;;-1:-1:-1;;;;;18498:19:0;;-1:-1:-1;18498:19:0;;;:11;:19;;;;;18518:10;18498:31;;;;;;;;;;:69;;18534:6;;18498:35;:69::i;:::-;-1:-1:-1;;;;;18464:19:0;;;;;;:11;:19;;;;;;;;18484:10;18464:31;;;;;;;:103;18399:180;18596:40;18610:6;18618:9;18629:6;18596:13;:40::i;:::-;18589:47;;18272:372;;;;;;:::o;14819:142::-;14947:4;;14872:7;;14899:54;;14937:15;;-1:-1:-1;;;;;14947:4:0;14937:9;:15::i;:::-;14926:4;;14899:33;;14916:15;;-1:-1:-1;;;;;14926:4:0;14916:9;:15::i;:::-;14899:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;14892:61;;14819:142;:::o;12320:29::-;;;;:::o;10627:103::-;10682:4;10717:5;-1:-1:-1;;;;;10717:5:0;;;10706:16;;;;10627:103::o;14553:80::-;11441:1;14553:80;:::o;17184:273::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;17323:21:::1;:44:::0;;-1:-1:-1;;;;;17323:44:0;;::::1;-1:-1:-1::0;;;;;;17323:44:0;;::::1;;::::0;;;17378:15:::1;:36:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17425:9:::1;:24:::0;;;;;::::1;::::0;::::1;;::::0;;17184:273::o;17465:276::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;17597:21:::1;:39:::0;;17647:13:::1;:32:::0;;;;17690:43;::::1;;::::0;::::1;-1:-1:-1::0;;17597:39:0;::::1;;;;-1:-1:-1::0;;17597:39:0;;::::1;::::0;;;::::1;17690:43:::0;;;::::1;;::::0;;17465:276::o;12080:44::-;;;;;;;;;;;;;;;:::o;12186:49::-;;;;;;;;;;;;;;;:::o;11923:33::-;;;;;;:::o;17957:139::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;18050:6:::1;18044:3;:12;18036:21;;;::::0;::::1;;18068:14;:20:::0;17957:139::o;12842:40::-;;;;;;;;;:::o;15445:116::-;15500:4;15524:29;15532:7;-1:-1:-1;;15524:7:0;:29::i;16745:431::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;16887:12:::1;:24:::0;;;16922:10:::1;:25:::0;;;16958:12:::1;:30:::0;;;16999:14:::1;:32:::0;;;17063:46:::1;16935:12:::0;17063:30:::1;16902:9:::0;16973:15;17063:16:::1;:30::i;:::-;:34:::0;::::1;:46::i;:::-;17052:8;:57:::0;;;17153:14:::1;::::0;17140:28:::1;::::0;17052:57;17140:12:::1;:28::i;:::-;17120:17;:48:::0;-1:-1:-1;;;;16745:431:0:o;12356:33::-;;;;:::o;12282:31::-;;;;:::o;14969:105::-;-1:-1:-1;;;;;15053:18:0;15035:7;15053:18;;;:9;:18;;;;;;;14969:105::o;12520:30::-;;;-1:-1:-1;;;;;12520:30:0;;:::o;16361:376::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16461:23:0;::::1;16479:4;16461:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;16498:4:0::1;::::0;-1:-1:-1;;;;;16488:14:0;;::::1;16498:4:::0;::::1;16488:14;;16461:41;16453:50;;;::::0;::::1;;-1:-1:-1::0;;;;;16514:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;16514:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;16568:162:::1;;16593:19;::::0;:39:::1;::::0;;-1:-1:-1;;;16593:39:0;;-1:-1:-1;;;;;16593:39:0;;::::1;;::::0;::::1;::::0;16630:1:::1;16593:39:::0;;;;;;;;:19:::1;::::0;;::::1;;::::0;:28:::1;::::0;:39;;;;;16630:1;;16593:39;;;;;;16630:1;16593:19;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16568:162;;;16663:19;::::0;-1:-1:-1;;;;;16700:17:0;;::::1;;::::0;;;:9:::1;:17;::::0;;;;;;16663:55;;-1:-1:-1;;;16663:55:0;;::::1;::::0;::::1;::::0;;;;;;;;;:19:::1;::::0;;::::1;::::0;;::::1;::::0;:28:::1;::::0;:55;;;;;16700:17;;16663:55;;;;;;16700:17;16663:19;:55;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16568:162;16361:376:::0;;:::o;11785:60::-;;;;:::o;15857:106::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;15933:10:::1;:22:::0;15857:106::o;11852:58::-;;;;:::o;14733:78::-;14785:7;14803:5;-1:-1:-1;;;;;14803:5:0;14733:78;:::o;12131:48::-;;;;;;;;;;;;;;;:::o;12557:24::-;;;-1:-1:-1;;;;;12557:24:0;;:::o;12244:31::-;;;;:::o;16091:123::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16178:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16178:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16091:123::o;12621:19::-;;;-1:-1:-1;;;;;12621:19:0;;:::o;18108:156::-;18188:4;18212:44;18226:10;18238:9;18249:6;18212:13;:44::i;17749:200::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;17865:19:::1;;;;;;;;;-1:-1:-1::0;;;;;17865:19:0::1;-1:-1:-1::0;;;;;17865:43:0::1;;17909:11;17922:18;17865:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;10300:94:::0;10016:19;10024:10;10016:7;:19::i;:::-;10008:38;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10360:19:0::1;;::::0;;;10382:4:::1;10360:19;::::0;;;;;;;:26;;-1:-1:-1;;10360:26:0::1;::::0;;::::1;::::0;;10300:94::o;12721:46::-;;;;;;-1:-1:-1;;;;;12721:46:0;;:::o;12649:25::-;;;;:::o;12477:36::-;;;-1:-1:-1;;;;;12477:36:0;;:::o;12432:::-;;;;:::o;15746:103::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;15818:12:::1;:23:::0;15746:103::o;12889:45::-;;;;;;;;;:::o;15080:133::-;-1:-1:-1;;;;;15182:19:0;;;15164:7;15182:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15080:133::o;15971:108::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;16046:14:::1;:25:::0;;-1:-1:-1;;16046:25:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15971:108::o;10470:97::-;10016:19;10024:10;10016:7;:19::i;:::-;10008:38;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;10532:19:0::1;10554:5;10532:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;10532:27:0::1;::::0;;10470:97::o;11027:173::-;10016:19;10024:10;10016:7;:19::i;:::-;10008:38;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;-1:-1:-1;;;10008:38:0;;;;;;;;;;;;;;;11103:5:::1;:11:::0;;-1:-1:-1;;;;;;11103:11:0::1;-1:-1:-1::0;;;;;11103:11:0;::::1;::::0;;::::1;::::0;;11125:19;;;-1:-1:-1;11125:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;11125:26:0::1;::::0;;::::1;::::0;;;11167:25;;;;;;;::::1;::::0;;;;;;;;;::::1;11027:173:::0;:::o;12590:24::-;;;-1:-1:-1;;;;;12590:24:0;;:::o;16222:131::-;10185:24;10198:10;10185:12;:24::i;:::-;10177:48;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;-1:-1:-1;;;10177:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;16313:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16313:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16222:131::o;10801:107::-;-1:-1:-1;;;;;10881:19:0;10857:4;10881:19;;;:14;:19;;;;;;;;;10801:107::o;12681:31::-;;;;;;:::o;92:179::-;150:7;182:5;;;206:6;;;;198:46;;;;;-1:-1:-1;;;198:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;423:190;509:7;545:12;537:6;;;;529:29;;;;-1:-1:-1;;;529:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;581:5:0;;;423:190::o;18652:1641::-;18774:16;;18744:4;;18774:16;;18771:73;;;18800:41;18815:6;18823:9;18834:6;18800:14;:41::i;:::-;18793:48;;;;18771:73;-1:-1:-1;;;;;18860:22:0;;;;;;:14;:22;;;;;;;;18859:23;:53;;;;-1:-1:-1;;;;;;18887:25:0;;;;;;:14;:25;;;;;;;;18886:26;18859:53;18856:128;;;18936:11;;;;18928:44;;;;;-1:-1:-1;;;18928:44:0;;;;;;;;;;;;-1:-1:-1;;;18928:44:0;;;;;;;;;;;;;;;19014:12;;19004:6;:22;;:49;;;-1:-1:-1;;;;;;19030:23:0;;;;;;:15;:23;;;;;;;;19004:49;18996:79;;;;;-1:-1:-1;;;18996:79:0;;;;;;;;;;;;-1:-1:-1;;;18996:79:0;;;;;;;;;;;;;;;19105:4;;-1:-1:-1;;;;;19105:4:0;19091:10;:18;;;;:39;;-1:-1:-1;19114:16:0;;;;19113:17;19091:39;:64;;;;-1:-1:-1;19134:21:0;;;;;;;19091:64;:109;;;;-1:-1:-1;19187:13:0;;19177:4;19159:24;;;;:9;:24;;;;;;:41;;19091:109;19088:128;;;19203:10;:8;:10::i;:::-;19232;:8;:10::i;:::-;19231:11;:32;;;;-1:-1:-1;19259:4:0;;-1:-1:-1;;;;;19246:17:0;;;19259:4;;19246:17;19231:32;19228:117;;;-1:-1:-1;;;;;19288:17:0;;19308:1;19288:17;;;:9;:17;;;;;;19280:30;;;;;;19325:8;:6;:8::i;:::-;19404:53;;;;;;;;;;;-1:-1:-1;;;19404:53:0;;;;;;;;-1:-1:-1;;;;;19404:17:0;;-1:-1:-1;19404:17:0;;;:9;:17;;;;;;;;:53;;19426:6;;19404:21;:53::i;:::-;-1:-1:-1;;;;;19384:17:0;;;;;;;:9;:17;;;;;;;;:73;;;;19482:26;;;;;:15;:26;;;;;;;19481:27;:45;;;;-1:-1:-1;19512:14:0;;;;19481:45;19478:141;;;19596:10;;-1:-1:-1;;;;;19560:20:0;;;;;;:9;:20;;;;;;:32;;19585:6;19560:24;:32::i;:::-;:46;;19552:55;;;;;;-1:-1:-1;;;;;19654:19:0;;19631;19654;;;:11;:19;;;;;;;;19653:20;:47;;;;-1:-1:-1;;;;;;19678:22:0;;;;;;:11;:22;;;;;;;;19677:23;19653:47;:93;;19740:6;19653:93;;;19703:34;19711:6;19719:9;19730:6;19703:7;:34::i;:::-;-1:-1:-1;;;;;19780:20:0;;;;;;:9;:20;;;;;;19631:115;;-1:-1:-1;19780:37:0;;19631:115;19780:24;:37::i;:::-;-1:-1:-1;;;;;19757:20:0;;;;;;;:9;:20;;;;;;;;:60;;;;19863:24;;;;;:16;:24;;;;;;;19859:127;;19908:19;;-1:-1:-1;;;;;19945:17:0;;;;;;;:9;:17;;;;;;;19908:55;;-1:-1:-1;;;19908:55:0;;;;;;;;;;;;;;:19;;;;;;;;:28;;:55;;;;;19945:17;;19908:55;;;;;;19945:17;19908:19;:55;;;;;;;;;;;;;;;;;;;;;;;;;19904:71;;-1:-1:-1;;;;;20002:27:0;;;;;;:16;:27;;;;;;;;19998:137;;20050:19;;-1:-1:-1;;;;;20090:20:0;;;;;;;:9;:20;;;;;;;20050:61;;-1:-1:-1;;;20050:61:0;;;;;;;;;;;;;;:19;;;;;;;;:28;;:61;;;;;20090:20;;20050:61;;;;;;20090:20;20050:19;:61;;;;;;;;;;;;;;;;;;;;;;;;;20046:77;;20151:19;;;;;;;;;-1:-1:-1;;;;;20151:19:0;-1:-1:-1;;;;;20151:27:0;;20179:14;;20151:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20147:59;20240:9;-1:-1:-1;;;;;20223:40:0;20232:6;-1:-1:-1;;;;;20223:40:0;;20251:11;20223:40;;;;;;;;;;;;;;;;;;-1:-1:-1;20281:4:0;;18652:1641;-1:-1:-1;;;;18652:1641:0:o;279:136::-;337:7;364:43;368:1;371;364:43;;;;;;;;;;;;;;;;;:3;:43::i;20305:330::-;20435:53;;;;;;;;;;;-1:-1:-1;;;20435:53:0;;;;;;;;-1:-1:-1;;;;;20435:17:0;;20398:4;20435:17;;;:9;:17;;;;;;;:53;;20457:6;;20435:21;:53::i;:::-;-1:-1:-1;;;;;20415:17:0;;;;;;;:9;:17;;;;;;:73;;;;20522:20;;;;;;;:32;;20547:6;20522:24;:32::i;:::-;-1:-1:-1;;;;;20499:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;20570:35;;;;;;;20499:20;;20570:35;;;;;;;;;;;;;-1:-1:-1;20623:4:0;20305:330;;;;;:::o;21196:1920::-;13048:16;:23;;-1:-1:-1;;13048:23:0;13067:4;13048:23;;;21302:4:::1;13048:16:::0;21284:24;;;:9:::1;:24;::::0;;;;;21383:8:::1;::::0;21365:12:::1;::::0;21284:24;;13048:16;21345:54:::1;::::0;21397:1:::1;::::0;21345:47:::1;::::0;21383:8;21345:47;;21284:24;;21345:19:::1;:33::i;:::-;:37:::0;::::1;:47::i;:54::-;21319:80:::0;-1:-1:-1;21410:20:0::1;21433:36;:15:::0;21319:80;21433:19:::1;:36::i;:::-;21506:16;::::0;;21520:1:::1;21506:16:::0;;;21482:21:::1;21506:16:::0;;::::1;::::0;;21410:59;;-1:-1:-1;21506:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21506:16:0::1;21482:40;;21551:4;21533;21538:1;21533:7;;;;;;;;-1:-1:-1::0;;;;;21533:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;21577:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;21577:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;21533:7;;21577:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;21577:13:0;21567:7;;:4;;21572:1:::1;::::0;21567:7;::::1;;;;;;;;;;:23;-1:-1:-1::0;;;;;21567:23:0::1;;;-1:-1:-1::0;;;;;21567:23:0::1;;;::::0;::::1;21603:6;;;;;;;;;-1:-1:-1::0;;;;;21603:6:0::1;-1:-1:-1::0;;;;;21603:57:0::1;;21675:12;21702:1;21718:4;21745;21765:15;21603:188;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;21603:188:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21893:12:0::1;::::0;21824:21:::1;::::0;-1:-1:-1;21804:17:0::1;::::0;-1:-1:-1;21880:33:0::1;::::0;21893:19:::1;::::0;21910:1:::1;21893:16;:19::i;:::-;21880:8;::::0;;:12:::1;:33::i;:::-;21858:55;;21934:26;21963:51;22012:1;21963:44;21995:11;21963:27;21977:12;;21963:9;:13;;:27;;;;:::i;:51::-;21934:80;;22025:27;22055:42;22085:11;22055:25;22069:10;;22055:9;:13;;:25;;;;:::i;:42::-;22025:72:::0;-1:-1:-1;22108:26:0::1;22137:58;22025:72:::0;22137:33:::1;:9:::0;22151:18;22137:13:::1;:33::i;:58::-;22108:87;;22212:19;;;;;;;;;-1:-1:-1::0;;;;;22212:19:0::1;-1:-1:-1::0;;;;;22212:27:0::1;;22247:19;22212:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;22208:73:::0;22301:22:::1;22326:32;22356:1;22326:25;:18:::0;22349:1:::1;22326:22;:25::i;:32::-;22301:57:::0;-1:-1:-1;22369:16:0::1;22388:38;:18:::0;22301:57;22388:22:::1;:38::i;:::-;22476:15;::::0;22468:68:::1;::::0;22369:57;;-1:-1:-1;22448:15:0::1;::::0;-1:-1:-1;;;;;22476:15:0;;::::1;::::0;22526:5:::1;::::0;22505:14;;22448:15;22468:68;22448:15;22468:68;22505:14;22476:15;22526:5;22468:68:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22577:9:0::1;::::0;22569:56:::1;::::0;22447:89;;-1:-1:-1;22548:16:0::1;::::0;-1:-1:-1;;;;;22577:9:0;;::::1;::::0;22615:5:::1;::::0;22600:8;;22548:16;22569:56;22548:16;22569:56;22600:8;22577:9;22615:5;22569:56:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22699:5:0::1;::::0;-1:-1:-1;22699:5:0;;-1:-1:-1;;22750:19:0;;;-1:-1:-1;22747:362:0::1;;22785:6;;;;;;;;;-1:-1:-1::0;;;;;22785:6:0::1;-1:-1:-1::0;;;;;22785:22:0::1;;22815:18;22861:4;22885:15;22919:1;22939::::0;22959:21:::1;;;;;;;;;-1:-1:-1::0;;;;;22959:21:0::1;22999:15;22785:244;;;;;;;;;;;;;-1:-1:-1::0;;;;;22785:244:0::1;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;22785:244:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;22785:244:0;23049:48;;;;;22785:244:::1;23049:48:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22747:362;-1:-1:-1::0;;13094:16:0;:24;;-1:-1:-1;;13094:24:0;;;-1:-1:-1;;;;;;;;;;;21196:1920:0:o;15569:90::-;15636:10;;:15;;15569:90;:::o;15667:71::-;15718:12;15705:10;:25;15667:71::o;20643:439::-;20783:4;;20729:7;;;;-1:-1:-1;;;;;20783:17:0;;;:4;;:17;:48;;20823:8;;20783:48;;;20803:17;;20783:48;20759:72;-1:-1:-1;20842:17:0;20862:34;20892:3;20862:25;:6;20759:72;20862:10;:25::i;:34::-;20954:4;20936:24;;;;:9;:24;;;;;;20842:54;;-1:-1:-1;20936:39:0;;20842:54;20936:28;:39::i;:::-;20927:4;20909:24;;;;:9;:24;;;;;;;;;:66;;;;20991:42;;;;;;;20927:4;;-1:-1:-1;;;;;20991:42:0;;;;;;;;;;;;;21053:21;:6;21064:9;21053:10;:21::i;:::-;21046:28;20643:439;-1:-1:-1;;;;;;20643:439:0:o;621:224::-;679:7;703:6;699:25;;-1:-1:-1;720:1:0;713:8;;699:25;746:5;;;750:1;746;:5;:1;770:5;;;;;:10;762:56;;;;-1:-1:-1;;;762:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;853:132;911:7;938:39;942:1;945;938:39;;;;;;;;;;;;;;;;;1079:7;1114:12;1107:5;1099:28;;;;-1:-1:-1;;;1099:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1138:9;1154:1;1150;:5;;;;;;;993:189;-1:-1:-1;;;;;993:189:0:o

Swarm Source

ipfs://a13aa9937a4a537910ac170f219766788abb3eeb43c273560220f23b8cca0d6a
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.