Contract 0x3010b34277dcb9067a2a7b33910b61c3e86d0c08

 

Contract Overview

ShibaElonMars: ShibaE Token
Balance:
0.041639802540506905 BNB

BNB Value:
$17.66 (@ $424.19/BNB)

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xef09c73116b8db053fd21ac98a08d225d7502cb876b6106d57014b71068bc125Approve145237332022-01-20 7:16:1522 hrs 12 mins ago0xdce78ea228f21414a4d16f5e2b3b74fb3abf6503 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x7192c655b4dba32b38e4018b8012ef2da99294dbea43900963294e858dbe4002Approve144272212022-01-16 22:07:134 days 7 hrs ago0x35de91c6d590ef05c605e6c13fc92e91148a6fb7 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x501abb20eaefacca11064d4db59d611f26b3993d7e8b5fb4dc97a51ac3971631Approve144269822022-01-16 21:55:164 days 7 hrs ago0x874b31229bb4c4bda710df703d0616676f589a3b IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xe40b8ed003270d0344e59a483102da6df8fc8eada8bd4e3f609adab771e086b9Approve144269442022-01-16 21:53:224 days 7 hrs ago0xef19cea803eee0d692f618516a145b8b2830f048 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x2aa86bb757b701c5ff13f9c1d5f6c5453e843d6d1558d5252239f6f77b9e303bApprove144268492022-01-16 21:48:374 days 7 hrs ago0x28b276610c9d080b2dcd8ee97345ab42ff032b05 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x382fea43381abee1e8a665e56fe8fc75eff405825ba50c3bf18dbaec140169e0Approve144267882022-01-16 21:45:344 days 7 hrs ago0xdc2f4295cf54065aeef50951fe36d4221968d75d IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xfa4fc7c79b9f9ab777b5d93ddfc9071d113aad403484953f5017159805eac553Approve144266222022-01-16 21:37:164 days 7 hrs ago0xd4e4cdff58af431c53b0efd5026b70eabe10561c IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xeeb669641bf80d0e3ce06fa1bd2ecacd8b2338218b0d12c45ace57a945cdb7c3Approve142774352022-01-11 16:59:359 days 12 hrs ago0x968988467150b567698f97de04f124abde458359 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xbe9e302e9c0f6fa37fc4e26131f25830cbfcbecf0a846b2f3c414d12d8d95652Approve142442402022-01-10 13:13:3610 days 16 hrs ago0x8e51747b008f767f251f78d3ec95d4e05b23dc3a IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xfecfd67eb4c654e221819af492a8903fd97be0cebda57b137f8346112b69c0c3Approve141952772022-01-08 20:24:2812 days 9 hrs ago0x32484bb69e24a06c7e4e35346e8900b73997392d IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xfbc6a4b60a6132fc0f1356cefdebc3c49eab1cc5ce61e5d9e8c09bc4445cde00Approve141657932022-01-07 19:47:5813 days 9 hrs ago0x13dc7bf8a25df89cd40e1883334c7e62b7fd04f6 IN  ShibaElonMars: ShibaE Token0 BNB0.000126255
0xf5fb2729cf1fa6701abdcf725d061581baaa1a766e0501ba10253ac06083197cApprove141657862022-01-07 19:47:3713 days 9 hrs ago0x13dc7bf8a25df89cd40e1883334c7e62b7fd04f6 IN  ShibaElonMars: ShibaE Token0 BNB0.000126255
0x2a9cf1def6e20f366d8186635c72b7dfcd5707a4fbe1c3e71a5c63c29da803caApprove141657812022-01-07 19:47:2213 days 9 hrs ago0x13dc7bf8a25df89cd40e1883334c7e62b7fd04f6 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x0a9b23e74880f977d30d684ccdd05de9811ffee1c57bf70fe4e34ac8d5dc0984Approve140192772022-01-02 17:27:0818 days 12 hrs ago0x2ec02845c3472e96ac7ef075971d7c2d7cf91847 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x88b6098253be19c6ba210a50cf164a9bf695b9b667ccf8af1679afe527b26cd1Transfer137481602021-12-24 7:11:5527 days 22 hrs ago0x768051104d0aa8e2068de7b08f9ce9e5304d87f6 IN  ShibaElonMars: ShibaE Token0 BNB0.001765855
0xad0cd64818c81b533227246c8618fb3f02976e624e8149a5672f4b32ad7030caApprove136224612021-12-19 21:44:3732 days 7 hrs ago0xb5a85aafc878c5fcd419fde0fbe8469633ed2d28 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x920ee1477f21d4ae8bb6e333180f5a44e957686a080e75b59822c1dd2330ed2bApprove133638472021-12-10 21:28:5541 days 7 hrs ago0x3f697d1d20de9641ff86bde04d389a56b6689011 IN  ShibaElonMars: ShibaE Token0 BNB0.000126255
0xa3853daca1b619478e4a768f2dfffb951ddee45e785ddcf12abde12da58f5bfbApprove133638442021-12-10 21:28:4641 days 7 hrs ago0x3f697d1d20de9641ff86bde04d389a56b6689011 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x754bc5d253d7cb4211018eeb97662a8a405d3e39791b2692a24226465cab3b77Approve133010512021-12-08 16:44:4443 days 12 hrs ago0x46d1fb015cd29f4be1198de8407aebaabea21b01 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x264414ba53459d5a2e72a68f9a177a2872e36b8c09cc86bed377cf991024d68bApprove132825312021-12-07 22:27:0744 days 7 hrs ago0xd4a6e3948e9d7f7aa96e4855d9a1f29472b4ed23 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xd8b7356f6deca491c86252950ab63358ec3615a77fbbbaf2ff0fc34fec5f2b45Approve132790012021-12-07 19:24:2744 days 10 hrs ago0x8d0f4173b4df0358ef455e5f1d77628d37cf16bb IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x5fdde6d8f226628b16e0011d8d88065ed434e2225f569cfff98491c763355630Approve132756032021-12-07 16:19:2044 days 13 hrs ago0xb338336d34e7888865eb64e2e4978770918ef886 IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xfa34bb92b5738bf9949db7be9426cbcf25395f2fc69466fe1d7367e78e20bb30Approve132729492021-12-07 13:41:3844 days 15 hrs ago0xafe6a45854e3b20cb3cb004843a18ae7cdf9f54f IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0x9e98ad44e6ab4f70679798e2719b685f1642a2136995676ae1d27cd40cdd1dd5Approve132684032021-12-07 9:35:2144 days 19 hrs ago0x75e03132013be2921a52cfa04a06f1d954bde89c IN  ShibaElonMars: ShibaE Token0 BNB0.000222255
0xc2b3036324205de6a87b5441275c1f98ad741d4c514699fe79a7e01dca3e6ffeTransfer132662122021-12-07 7:44:0644 days 21 hrs ago0x7ffe0b10154e8588057f0f96761e0e7ef7aca3f4 IN  ShibaElonMars: ShibaE Token0 BNB0.001766215
[ Download CSV Export 

OVERVIEW

ShibaElonMars is a community-driven, deflationary token on BSC.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xabb34565e3194dc07149faedf0b610234c422e16baa356120d7c56ed76c2c2cd122585852021-10-31 20:59:5281 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0x23501a6e9440fd4dbc33ca313106a5851feed0f72b654e37b4c5bb9a8b2a4085122585842021-10-31 20:59:4981 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0x86afe30b5acbf3cd75e526090d194a9f35a6fd2c4e998d7df0404c51aae05c2a122585712021-10-31 20:59:1081 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.25 BNB
0xe9d15ced2ad94bf7b7ad7dddf25c4eb21ffccb549a76043be63d2104fdc6ee79122585692021-10-31 20:59:0481 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.15 BNB
0xc223215c18a5da6cfe810afb75d485743bdc0d151966fcbd286a692745be3a47122585682021-10-31 20:59:0181 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0x512797049a64f8bd186841b46ff9a58da92f1fe5b0f71c3e7b62e8665adfbd4f122585662021-10-31 20:58:5581 days 8 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.1 BNB
0x50169f7edfd89ba7e01451fd29657098d29deeaf15de5972f9481fd09ef482d0122559302021-10-31 18:47:0581 days 10 hrs ago ShibaElonMars: ShibaE Token0x3a73ab0b0af9d7f4ae888b7b68f89140d549074a0.950408739374278273 BNB
0x50169f7edfd89ba7e01451fd29657098d29deeaf15de5972f9481fd09ef482d0122559302021-10-31 18:47:0581 days 10 hrs ago PancakeSwap: Router v2 ShibaElonMars: ShibaE Token1.584014565623797122 BNB
0xfcb3c0e714408895988aa05d860e4ec313be73554a5f3e032ffffd6d3b3071e3122456612021-10-31 10:08:0881 days 19 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.2 BNB
0x7e1224e09b26eef276813fda12ac466ce97edd4729265c0c4911345703b461e9122456572021-10-31 10:07:5681 days 19 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.2 BNB
0x60dd9c41a19c63882c411dfa06967d4cfe8a9485e98ad73c6f7f344f0677ce09122456442021-10-31 10:07:1781 days 19 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.02 BNB
0x9639f2bdb161a3f16fb1efdaa99eb8952949bc2707e35ddbab3d79f26b33d1cf122456142021-10-31 10:05:4781 days 19 hrs ago ShibaElonMars: ShibaE Token0x3a73ab0b0af9d7f4ae888b7b68f89140d549074a0.672693303900954037 BNB
0x9639f2bdb161a3f16fb1efdaa99eb8952949bc2707e35ddbab3d79f26b33d1cf122456142021-10-31 10:05:4781 days 19 hrs ago PancakeSwap: Router v2 ShibaElonMars: ShibaE Token1.121155506501590063 BNB
0x7d5272a4f0fd7fa52301e76ee4e7bdd3a1aeb49f1dda8291ef98ec5775abc6de122449002021-10-31 9:30:0481 days 19 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0xfac3862ab8542ee92e9491400ae69fddcf73cf3ec0a2a3c29d6692c9ed96559c122448992021-10-31 9:30:0181 days 19 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0xf1f2e4866082658eabb00ff53abfa917139c58ec0a7ff3fdddb182c375cd8241122448722021-10-31 9:28:4081 days 20 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.05 BNB
0x035654be015648fec86f79aa439ecb9e3fceb05531a923921aa74894582596f5122448722021-10-31 9:28:4081 days 20 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.1 BNB
0xea55f08c3fb051c0e26ad1c2ea84fec196c1e0f0d3a3e71b6d4c9e25c5bd403b122448722021-10-31 9:28:4081 days 20 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v21 BNB
0x6f227dbf70f577d58b1f009cf3c1a0f5721a56b531d2ae75ab45923fd4f50855122445552021-10-31 9:12:4981 days 20 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v21 BNB
0x194d5f10edf8858c6f1fd55e04fd2eac27e39d74dc6628c16ce31b86fcc3cfd2122445482021-10-31 9:12:2881 days 20 hrs ago ShibaElonMars: ShibaE Token PancakeSwap: Router v20.1 BNB
0x2c26fa5ac8d00ff6256f7fea38e8f35051b5a425ba05d3a54854d22e903a6c4d122434432021-10-31 8:17:1381 days 21 hrs ago ShibaElonMars: ShibaE Token0x3a73ab0b0af9d7f4ae888b7b68f89140d549074a0.380972003745697558 BNB
0x2c26fa5ac8d00ff6256f7fea38e8f35051b5a425ba05d3a54854d22e903a6c4d122434432021-10-31 8:17:1381 days 21 hrs ago PancakeSwap: Router v2 ShibaElonMars: ShibaE Token0.634953339576162598 BNB
0x7c584eac681609667605b64301bef6a9440550450ec54f1efd68e38493ca15fd122433042021-10-31 8:10:1681 days 21 hrs ago ShibaElonMars: ShibaE Token0x3a73ab0b0af9d7f4ae888b7b68f89140d549074a0.769724974821073228 BNB
0x7c584eac681609667605b64301bef6a9440550450ec54f1efd68e38493ca15fd122433042021-10-31 8:10:1681 days 21 hrs ago PancakeSwap: Router v2 ShibaElonMars: ShibaE Token1.282874958035122047 BNB
0xaec928cf77e567e4ba596133d6e29220f26c2483df5037e3f5cadb9a5bb3a525122432052021-10-31 8:05:1981 days 21 hrs ago ShibaElonMars: ShibaE Token0x3a73ab0b0af9d7f4ae888b7b68f89140d549074a0.241421129826345066 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ShibaElonMars

Compiler Version
v0.8.5+commit.a4f2e591

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-10-29
*/

/**
*/

//SPDX-License-Identifier: MIT
 
pragma solidity ^0.8.5;

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
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) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

/**
 * BEP20 standard interface.
 */
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);
}

/**
 * Allows for contract ownership along with multi-address authorization
 */
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);
}

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;
    }

    IBEP20 Cake = IBEP20(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c);
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    IDEXRouter router;

    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 = 1 hours;
    uint256 public minDistribution = 1 * (10 ** 8);

    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(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    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 = Cake.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(Cake);

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

        uint256 amount = Cake.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 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        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);
            Cake.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }
    
    function claimDividend(address shareholder) external onlyToken{
        distributeDividend(shareholder);
    }

    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();
    }
}

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

    address Cake = 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c  ;
    address WBNB = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "ShibaElonMars";
    string constant _symbol = "ShibaE";
    uint8 constant _decimals = 18;

    uint256 _totalSupply = 200000000000 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply ; // 1%

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

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

    uint256 liquidityFee = 0;
    uint256 buybackFee = 800;
    uint256 reflectionFee = 300;
    uint256 marketingFee = 0;
    uint256 totalFee = 1200;
    uint256 feeDenominator = 10000;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 25;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    uint256 public launchedAt;

    uint256 buybackMultiplierNumerator = 200;
    uint256 buybackMultiplierDenominator = 100;
    uint256 buybackMultiplierTriggeredAt;
    uint256 buybackMultiplierLength = 30 minutes;

    bool public autoBuybackEnabled = false;
    bool public autoBuybackMultiplier = true;
    uint256 autoBuybackCap;
    uint256 autoBuybackAccumulator;
    uint256 autoBuybackAmount;
    uint256 autoBuybackBlockPeriod;
    uint256 autoBuybackBlockLast;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 200; // 5%
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        distributor = new DividendDistributor(address(router));
        
        address _presaler = 0x01889B7063dB1A01ef3D346342Ef6074c728F6aC;
        isFeeExempt[_presaler] = true;
        isTxLimitExempt[_presaler] = true;
        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[DEAD] = true;

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;

        _balances[_presaler] = _totalSupply;
        emit Transfer(address(0), _presaler, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    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, type(uint256).max);
    }

    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] != type(uint256).max){
            _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(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }
        if(shouldAutoBuyback()){ triggerAutoBuyback(); }

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

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

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

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

        emit Transfer(sender, recipient, amountReceived);
        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 checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + 1 >= block.number){ return feeDenominator.sub(1); }
        if(selling && buybackMultiplierTriggeredAt.add(buybackMultiplierLength) > block.timestamp){ return getMultipliedFee(); }
        return totalFee;
    }

    function getMultipliedFee() public view returns (uint256) {
        uint256 remainingTime = buybackMultiplierTriggeredAt.add(buybackMultiplierLength).sub(block.timestamp);
        uint256 feeIncrease = totalFee.mul(buybackMultiplierNumerator).div(buybackMultiplierDenominator).sub(totalFee);
        return totalFee.add(feeIncrease.mul(remainingTime).div(buybackMultiplierLength));
    }

    function takeFee(address sender, address receiver, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(getTotalFee(receiver == pair)).div(feeDenominator);

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

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 amountBNB = address(this).balance.sub(balanceBefore);
        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool success, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
        require(success, "receiver rejected ETH transfer");

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

    function shouldAutoBuyback() internal view returns (bool) {
        return msg.sender != pair
            && !inSwap
            && autoBuybackEnabled
            && autoBuybackBlockLast + autoBuybackBlockPeriod <= block.number
            && address(this).balance >= autoBuybackAmount;
    }

    function triggerManualBuyback(uint256 amount, bool triggerBuybackMultiplier) external authorized {
        buyTokens(amount, DEAD);
        if(triggerBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
    }
    
    function clearBuybackMultiplier() external authorized {
        buybackMultiplierTriggeredAt = 0;
    }

    function triggerAutoBuyback() internal {
        buyTokens(autoBuybackAmount, DEAD);
        if(autoBuybackMultiplier){
            buybackMultiplierTriggeredAt = block.timestamp;
            emit BuybackMultiplierActive(buybackMultiplierLength);
        }
        autoBuybackBlockLast = block.number;
        autoBuybackAccumulator = autoBuybackAccumulator.add(autoBuybackAmount);
        if(autoBuybackAccumulator > autoBuybackCap){ autoBuybackEnabled = false; }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function setAutoBuybackSettings(bool _enabled, uint256 _cap, uint256 _amount, uint256 _period, bool _autoBuybackMultiplier) external authorized {
        autoBuybackEnabled = _enabled;
        autoBuybackCap = _cap;
        autoBuybackAccumulator = 0;
        autoBuybackAmount = _amount;
        autoBuybackBlockPeriod = _period;
        autoBuybackBlockLast = block.number;
        autoBuybackMultiplier = _autoBuybackMultiplier;
    }

    function setBuybackMultiplierSettings(uint256 numerator, uint256 denominator, uint256 length) external authorized {
        require(numerator / denominator <= 2 && numerator > denominator);
        buybackMultiplierNumerator = numerator;
        buybackMultiplierDenominator = denominator;
        buybackMultiplierLength = length;
    }

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

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

    function setTxLimit(uint256 amount) external authorized {
        require(amount >= _totalSupply );
        _maxTxAmount = amount;
    }

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

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }
     function  burn(address account, uint256 amount) onlyOwner  public virtual {
        require(account != address(0), "ERC20: burn to the zero address");
        _beforeTokenTransfer(address(0), account, amount);
        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }
 function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
    
     function AddBuybackContract(address _owner) authorized public {
        owner = owner;
    }

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

    function setFees(uint256 _liquidityFee, uint256 _buybackFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        buybackFee = _buybackFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_buybackFee).add(_reflectionFee).add(_marketingFee);
        feeDenominator = _feeDenominator;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function manualSend() external authorized {
        uint256 contractETHBalance = address(this).balance;
        payable(marketingFeeReceiver).transfer(contractETHBalance);
    }
    
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }
    
    function claimDividend() external {
        distributor.claimDividend(msg.sender);
    }
    
    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        return distributor.getUnpaidEarnings(shareholder);
    } 

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }
    
    event AutoLiquify(uint256 amountBNB, uint256 amountBOG);
    event BuybackMultiplierActive(uint256 duration);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"BuybackMultiplierActive","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":[{"internalType":"address","name":"_owner","type":"address"}],"name":"AddBuybackContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","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":"autoBuybackEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBuybackMultiplier","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearBuybackMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMultipliedFee","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":"bool","name":"selling","type":"bool"}],"name":"getTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","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":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_cap","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"},{"internalType":"bool","name":"_autoBuybackMultiplier","type":"bool"}],"name":"setAutoBuybackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numerator","type":"uint256"},{"internalType":"uint256","name":"denominator","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"setBuybackMultiplierSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_buybackFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bool","name":"triggerBuybackMultiplier","type":"bool"}],"name":"triggerManualBuyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116737130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c1790915560038054821673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c17905560048054821661dead1790556005805490911690556200006e6012600a620004c9565b6200007f90642e90edd0006200058a565b600681905560078190556000600d819055610320600e5561012c600f556010556104b060115561271060125560196015556064601681905560c8601a819055601b91909155610708601d55601e805461ffff19166101001790556207a1206025556026805460ff19166001179055620000f8916200045d565b6027553480156200010857600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601780547310ed43c718714eb63d5aa57b78b54704e256024e931683179055825163c45a015560e01b81529251919263c45a01559260048083019392829003018186803b1580156200018a57600080fd5b505afa1580156200019f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c591906200042b565b6003546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b1580156200021257600080fd5b505af115801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d91906200042b565b601880546001600160a01b0319166001600160a01b03928316179055306000908152600960209081526040808320601780548616855292529182902060001990555490519116906200029f906200041d565b6001600160a01b039091168152602001604051809103906000f080158015620002cc573d6000803e3d6000fd5b50602480546001600160a01b03199081166001600160a01b03938416179091557f1f9f01bccc0b87b057fe5f91528ab2db325a1c8916aea307fc62e8ade4930e54805460ff1990811660019081179092557f03612b0fb7c084c4c2bc657458d5d347ee402a9aaf252e0ace0ad1c15ee9f7bb805482168317905560185484166000908152600c6020908152604080832080548516861790553083528083208054851686179055600454909616825285822080549093169093179091556013805433908516811790915560148054909416179092556006547301889b7063db1a01ef3d346342ef6074c728f6ac808452600883527fd1505f8c4ab7a180a4d479c8ce8f7147e980a0f1af464280beff25df3396f27b82905593519081528392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005c2565b6110678062002ce383390190565b6000602082840312156200043e57600080fd5b81516001600160a01b03811681146200045657600080fd5b9392505050565b6000826200047b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620004c1578160001904821115620004a557620004a5620005ac565b80851615620004b357918102915b93841c939080029062000485565b509250929050565b60006200045660ff841683600082620004e55750600162000584565b81620004f45750600062000584565b81600181146200050d5760028114620005185762000538565b600191505062000584565b60ff8411156200052c576200052c620005ac565b50506001821b62000584565b5060208310610133831016604e8410600b84101617156200055d575081810a62000584565b62000569838362000480565b8060001904821115620005805762000580620005ac565b0290505b92915050565b6000816000190483118215151615620005a757620005a7620005ac565b500290565b634e487b7160e01b600052601160045260246000fd5b61271180620005d26000396000f3fe6080604052600436106102cd5760003560e01c806395d89b4111610175578063dd62ed3e116100dc578063f1f3bca311610095578063f708a64f1161006f578063f708a64f146108d8578063f84ba65d146108f8578063f887ea4014610918578063fe9fbb801461093857600080fd5b8063f1f3bca314610883578063f2fde38b146108a3578063f4293890146108c357600080fd5b8063dd62ed3e146107a9578063df20fd49146107ef578063e1dcc71f1461080f578063e96fada21461082e578063f0b37c041461084e578063f0fc6bca1461086e57600080fd5b8063b210b06d1161012e578063b210b06d14610709578063b6a5d7de1461071e578063bf56b3711461073e578063ca33e64c14610754578063d51ed1c814610774578063d806d12f1461079457600080fd5b806395d89b411461063a5780639d1944f5146106695780639dc29fac14610689578063a4b45c00146106a9578063a8aa1b31146106c9578063a9059cbb146106e957600080fd5b80632f54bf6e116102345780635c85974f116101ed57806370a08231116101c757806370a082311461059c5780637d1db4a5146105d257806382334b94146105e8578063893d20e81461060857600080fd5b80635c85974f14610542578063658d4b7f146105625780636ddd17131461058257600080fd5b80632f54bf6e1461047d5780632f5620d1146104ac578063313ce567146104cc5780633bb8a8d4146104e8578063506adba514610502578063571ac8b01461052257600080fd5b8063201e799111610286578063201e7991146103c85780632375ce40146103e857806323b872dd1461040857806328fd3198146104285780632b112e49146104485780632d48e8961461045d57600080fd5b80630445b667146102d957806304a66b481461030257806306fdde0314610324578063095ea7b3146103635780631161ae391461039357806318160ddd146103b357600080fd5b366102d457005b600080fd5b3480156102e557600080fd5b506102ef60275481565b6040519081526020015b60405180910390f35b34801561030e57600080fd5b5061032261031d36600461247d565b610958565b005b34801561033057600080fd5b5060408051808201909152600d81526c5368696261456c6f6e4d61727360981b60208201525b6040516102f99190612531565b34801561036f57600080fd5b5061038361037e3660046122f9565b6109bc565b60405190151581526020016102f9565b34801561039f57600080fd5b506103836103ae366004612401565b610a29565b3480156103bf57600080fd5b506006546102ef565b3480156103d457600080fd5b506103226103e3366004612401565b610a3d565b3480156103f457600080fd5b50610322610403366004612423565b610a6d565b34801561041457600080fd5b50610383610423366004612283565b610ac2565b34801561043457600080fd5b506102ef61044336600461222d565b610b84565b34801561045457600080fd5b506102ef610c02565b34801561046957600080fd5b50610322610478366004612401565b610c54565b34801561048957600080fd5b5061038361049836600461222d565b6000546001600160a01b0391821691161490565b3480156104b857600080fd5b506103226104c736600461235c565b610ce1565b3480156104d857600080fd5b50604051601281526020016102f9565b3480156104f457600080fd5b50601e546103839060ff1681565b34801561050e57600080fd5b5061032261051d36600461222d565b610d47565b34801561052e57600080fd5b5061038361053d36600461222d565b610d8c565b34801561054e57600080fd5b5061032261055d3660046123ac565b610d9a565b34801561056e57600080fd5b5061032261057d3660046122c4565b610dd3565b34801561058e57600080fd5b506026546103839060ff1681565b3480156105a857600080fd5b506102ef6105b736600461222d565b6001600160a01b031660009081526008602052604090205490565b3480156105de57600080fd5b506102ef60075481565b3480156105f457600080fd5b506103226106033660046123de565b610e23565b34801561061457600080fd5b506000546001600160a01b03165b6040516001600160a01b0390911681526020016102f9565b34801561064657600080fd5b5060408051808201909152600681526553686962614560d01b6020820152610356565b34801561067557600080fd5b506103226106843660046123ac565b610ea4565b34801561069557600080fd5b506103226106a43660046122f9565b610edd565b3480156106b557600080fd5b506103226106c436600461224a565b610fd4565b3480156106d557600080fd5b50601854610622906001600160a01b031681565b3480156106f557600080fd5b506103836107043660046122f9565b611027565b34801561071557600080fd5b50610322611034565b34801561072a57600080fd5b5061032261073936600461222d565b611060565b34801561074a57600080fd5b506102ef60195481565b34801561076057600080fd5b50601354610622906001600160a01b031681565b34801561078057600080fd5b506102ef61078f3660046123ac565b6110b1565b3480156107a057600080fd5b506102ef6110f5565b3480156107b557600080fd5b506102ef6107c436600461224a565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156107fb57600080fd5b5061032261080a366004612340565b611168565b34801561081b57600080fd5b50601e5461038390610100900460ff1681565b34801561083a57600080fd5b50601454610622906001600160a01b031681565b34801561085a57600080fd5b5061032261086936600461222d565b6111a4565b34801561087a57600080fd5b506103226111ef565b34801561088f57600080fd5b506102ef61089e366004612325565b61124d565b3480156108af57600080fd5b506103226108be36600461222d565b6112a9565b3480156108cf57600080fd5b5061032261133f565b3480156108e457600080fd5b506103226108f33660046122c4565b61139e565b34801561090457600080fd5b506103226109133660046122c4565b6114a6565b34801561092457600080fd5b50601754610622906001600160a01b031681565b34801561094457600080fd5b5061038361095336600461222d565b6114f6565b610961336114f6565b6109865760405162461bcd60e51b815260040161097d906125a6565b60405180910390fd5b600d859055600e849055600f83905560108290556109b0826109aa85818989611514565b90611514565b60115560125550505050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a179086815260200190565b60405180910390a35060015b92915050565b600082610a35836110b1565b119392505050565b610a46336114f6565b610a625760405162461bcd60e51b815260040161097d906125a6565b601591909155601655565b610a76336114f6565b610a925760405162461bcd60e51b815260040161097d906125a6565b6002610a9e838561261f565b11158015610aab57508183115b610ab457600080fd5b601a92909255601b55601d55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914610b6f576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600982528381203382529091529190912054610b4a918490611573565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b610b7a8484846115ad565b90505b9392505050565b6024805460405163051fa63360e31b81526001600160a01b0384811660048301526000939216916328fd3198910160206040518083038186803b158015610bca57600080fd5b505afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2391906123c5565b6005546001600160a01b0316600090815260086020526040812054610c4f906004546001600160a01b0316600090815260086020526040902054610c4990600654906118e9565b906118e9565b905090565b610c5d336114f6565b610c795760405162461bcd60e51b815260040161097d906125a6565b602480546040516316a4744b60e11b8152600481018590529182018390526001600160a01b031690632d48e896906044015b600060405180830381600087803b158015610cc557600080fd5b505af1158015610cd9573d6000803e3d6000fd5b505050505050565b610cea336114f6565b610d065760405162461bcd60e51b815260040161097d906125a6565b601e8054601f9590955560006020556021939093556022919091554360235561ffff1990921692151561ff0019169290921761010091151591909102179055565b610d50336114f6565b610d6c5760405162461bcd60e51b815260040161097d906125a6565b50600080546001600160a01b031981166001600160a01b03909116179055565b6000610a23826000196109bc565b610da3336114f6565b610dbf5760405162461bcd60e51b815260040161097d906125a6565b600654811015610dce57600080fd5b600755565b610ddc336114f6565b610df85760405162461bcd60e51b815260040161097d906125a6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b610e2c336114f6565b610e485760405162461bcd60e51b815260040161097d906125a6565b600454610e5f9083906001600160a01b031661192b565b8015610ea05742601c55601d546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b5050565b610ead336114f6565b610ec95760405162461bcd60e51b815260040161097d906125a6565b620b71b08110610ed857600080fd5b602555565b6000546001600160a01b03163314610f075760405162461bcd60e51b815260040161097d90612586565b6001600160a01b038216610f5d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206275726e20746f20746865207a65726f206164647265737300604482015260640161097d565b8060066000828254610f6f9190612607565b90915550506001600160a01b03821660009081526008602052604081208054839290610f9c908490612607565b90915550506040518181526001600160a01b038316906000906000805160206126bc8339815191529060200160405180910390a35050565b610fdd336114f6565b610ff95760405162461bcd60e51b815260040161097d906125a6565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610b7d3384846115ad565b61103d336114f6565b6110595760405162461bcd60e51b815260040161097d906125a6565b6000601c55565b6000546001600160a01b0316331461108a5760405162461bcd60e51b815260040161097d90612586565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610a236110be610c02565b6018546001600160a01b03166000908152600860205260409020546110ef906110e8906002611a34565b8590611a34565b90611ab3565b60008061111342610c49601d54601c5461151490919063ffffffff16565b9050600061113a601154610c49601b546110ef601a54601154611a3490919063ffffffff16565b9050611161611158601d546110ef8585611a3490919063ffffffff16565b60115490611514565b9250505090565b611171336114f6565b61118d5760405162461bcd60e51b815260040161097d906125a6565b6026805460ff191692151592909217909155602755565b6000546001600160a01b031633146111ce5760405162461bcd60e51b815260040161097d90612586565b6001600160a01b03166000908152600160205260409020805460ff19169055565b60248054604051630afbf02f60e11b81523360048201526001600160a01b03909116916315f7e05e9101600060405180830381600087803b15801561123357600080fd5b505af1158015611247573d6000803e3d6000fd5b50505050565b600043601954600161125f9190612607565b1061127257601254610a239060016118e9565b818015611294575042611292601d54601c5461151490919063ffffffff16565b115b156112a157610a236110f5565b505060115490565b6000546001600160a01b031633146112d35760405162461bcd60e51b815260040161097d90612586565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611348336114f6565b6113645760405162461bcd60e51b815260040161097d906125a6565b60145460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610ea0573d6000803e3d6000fd5b6113a7336114f6565b6113c35760405162461bcd60e51b815260040161097d906125a6565b6001600160a01b03821630148015906113ea57506018546001600160a01b03838116911614155b6113f357600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff1916821580159190911790915561145b5760248054604051630a5b654b60e11b81526001600160a01b0385811660048301526000938201939093529116906314b6ca9690604401610cab565b602480546001600160a01b0384811660008181526008602052604090819020549051630a5b654b60e11b815260048101929092529381019390935216906314b6ca9690604401610cab565b6114af336114f6565b6114cb5760405162461bcd60e51b815260040161097d906125a6565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6000806115218385612607565b905083811015610b7d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161097d565b600081848411156115975760405162461bcd60e51b815260040161097d9190612531565b5060006115a48486612660565b95945050505050565b60285460009060ff16156115cd576115c6848484611af5565b9050610b7d565b6115d78483611bc9565b6115df611c32565b156115ec576115ec611c81565b6115f461205d565b15611601576116016120b8565b60195415801561161e57506018546001600160a01b038481169116145b1561164e576001600160a01b03841660009081526008602052604090205461164557600080fd5b61164e43601955565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600890915291909120546116a0918490611573565b6001600160a01b038516600090815260086020908152604080832093909355600a90529081205460ff16156116d557826116e0565b6116e085858561214a565b6001600160a01b0385166000908152600860205260409020549091506117069082611514565b6001600160a01b038086166000908152600860209081526040808320949094559188168152600c909152205460ff166117ac57602480546001600160a01b0387811660008181526008602052604090819020549051630a5b654b60e11b815260048101929092529381019390935216906314b6ca9690604401600060405180830381600087803b15801561179957600080fd5b505af19250505080156117aa575060015b505b6001600160a01b0384166000908152600c602052604090205460ff1661183f57602480546001600160a01b0386811660008181526008602052604090819020549051630a5b654b60e11b815260048101929092529381019390935216906314b6ca9690604401600060405180830381600087803b15801561182c57600080fd5b505af192505050801561183d575060015b505b6024546025546040516001624d3b8760e01b031981526001600160a01b039092169163ffb2c479916118779160040190815260200190565b600060405180830381600087803b15801561189157600080fd5b505af19250505080156118a2575060015b50836001600160a01b0316856001600160a01b03166000805160206126bc833981519152836040516118d691815260200190565b60405180910390a3506001949350505050565b6000610b7d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611573565b6028805460ff19166001179055604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b0316918391506000906119795761197961268d565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106119ad576119ad61268d565b6001600160a01b03928316602091820292909201015260175460405163b6f9de9560e01b815291169063b6f9de959085906119f3906000908690889042906004016124fc565b6000604051808303818588803b158015611a0c57600080fd5b505af1158015611a20573d6000803e3d6000fd5b50506028805460ff19169055505050505050565b600082611a4357506000610a23565b6000611a4f8385612641565b905082611a5c858361261f565b14610b7d5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161097d565b6000610b7d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121ea565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386166000908152600890915291822054611b46918490611573565b6001600160a01b038086166000908152600860205260408082209390935590851681522054611b759083611514565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206126bc83398151915290611bb79086815260200190565b60405180910390a35060019392505050565b60075481111580611bf257506001600160a01b0382166000908152600b602052604090205460ff165b610ea05760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015260640161097d565b6018546000906001600160a01b03163314801590611c53575060285460ff16155b8015611c61575060265460ff165b8015610c4f57505060275430600090815260086020526040902054101590565b6028805460ff19166001179055601554601654600091611ca091610a29565b611cac57600d54611caf565b60005b90506000611cd360026110ef6011546110ef86602754611a3490919063ffffffff16565b90506000611cec826027546118e990919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611d2657611d2661268d565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611d5757611d5761268d565b6001600160a01b03928316602091820292909201015260175460405163791ac94760e01b81524792919091169063791ac94790611da19086906000908790309042906004016125cb565b600060405180830381600087803b158015611dbb57600080fd5b505af1158015611dcf573d6000803e3d6000fd5b505050506000611de882476118e990919063ffffffff16565b90506000611e03611dfa886002611ab3565b601154906118e9565b90506000611e1860026110ef8481878d611a34565b90506000611e35836110ef600f5487611a3490919063ffffffff16565b90506000611e52846110ef60105488611a3490919063ffffffff16565b9050602460009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ea457600080fd5b505af193505050508015611eb6575060015b506014546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114611f09576040519150601f19603f3d011682016040523d82523d6000602084013e611f0e565b606091505b5050905080611f5f5760405162461bcd60e51b815260206004820152601e60248201527f72656365697665722072656a656374656420455448207472616e736665720000604482015260640161097d565b89156120465760175460135460405163f305d71960e01b8152306004820152602481018d905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990869060c4016060604051808303818588803b158015611fd057600080fd5b505af1158015611fe4573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612009919061244f565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506028805460ff19169055505050505050505050565b6018546000906001600160a01b0316331480159061207e575060285460ff16155b801561208c5750601e5460ff165b80156120a75750436022546023546120a49190612607565b11155b8015610c4f57505060215447101590565b6021546004546120d191906001600160a01b031661192b565b601e54610100900460ff161561211c5742601c55601d546040519081527f39d2389ec5c1fa77b2c0d374bc61b6d7bd97ccba280fcdeb4e9c7644898d7c3a9060200160405180910390a15b4360235560215460205461212f91611514565b6020819055601f54101561214857601e805460ff191690555b565b601254601854600091829161217c91906110ef90612175906001600160a01b0389811691161461124d565b8690611a34565b306000908152600860205260409020549091506121999082611514565b30600081815260086020526040908190209290925590516001600160a01b038716906000805160206126bc833981519152906121d89085815260200190565b60405180910390a36115a483826118e9565b6000818361220b5760405162461bcd60e51b815260040161097d9190612531565b5060006115a4848661261f565b8035801515811461222857600080fd5b919050565b60006020828403121561223f57600080fd5b8135610b7d816126a3565b6000806040838503121561225d57600080fd5b8235612268816126a3565b91506020830135612278816126a3565b809150509250929050565b60008060006060848603121561229857600080fd5b83356122a3816126a3565b925060208401356122b3816126a3565b929592945050506040919091013590565b600080604083850312156122d757600080fd5b82356122e2816126a3565b91506122f060208401612218565b90509250929050565b6000806040838503121561230c57600080fd5b8235612317816126a3565b946020939093013593505050565b60006020828403121561233757600080fd5b610b7d82612218565b6000806040838503121561235357600080fd5b61231783612218565b600080600080600060a0868803121561237457600080fd5b61237d86612218565b94506020860135935060408601359250606086013591506123a060808701612218565b90509295509295909350565b6000602082840312156123be57600080fd5b5035919050565b6000602082840312156123d757600080fd5b5051919050565b600080604083850312156123f157600080fd5b823591506122f060208401612218565b6000806040838503121561241457600080fd5b50508035926020909101359150565b60008060006060848603121561243857600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561246457600080fd5b8351925060208401519150604084015190509250925092565b600080600080600060a0868803121561249557600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b600081518084526020808501945080840160005b838110156124f15781516001600160a01b0316875295820195908201906001016124cc565b509495945050505050565b84815260806020820152600061251560808301866124b8565b6001600160a01b03949094166040830152506060015292915050565b600060208083528351808285015260005b8181101561255e57858101830151858201604001528201612542565b81811115612570576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b85815284602082015260a0604082015260006125ea60a08301866124b8565b6001600160a01b0394909416606083015250608001529392505050565b6000821982111561261a5761261a612677565b500190565b60008261263c57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561265b5761265b612677565b500290565b60008282101561267257612672612677565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146126b857600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122057c144897bc4314b701da2864983800d2b791a126b4373e33559870d23ecf24f64736f6c634300080500336080604052600180546001600160a01b0319908116737130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610e10600d556305f5e100600e5534801561007957600080fd5b50604051611067380380611067833981016040819052610098916100f2565b6001600160a01b0381166100c0577310ed43c718714eb63d5aa57b78b54704e256024e6100c2565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610122565b60006020828403121561010457600080fd5b81516001600160a01b038116811461011b57600080fd5b9392505050565b610f36806101316000396000f3fe6080604052600436106100dd5760003560e01c8063997664d71161007f578063e2d2e21911610059578063e2d2e2191461022e578063efca2eed14610244578063ffb2c4791461025a578063ffd49c841461027a57600080fd5b8063997664d7146101b9578063ce7c2ac2146101cf578063d0e30db01461022657600080fd5b806328fd3198116100bb57806328fd31981461014d5780632d48e8961461016d5780633a98ef391461018d5780634fab0ae8146101a357600080fd5b806311ce023d146100e257806314b6ca961461010b57806315f7e05e1461012d575b600080fd5b3480156100ee57600080fd5b506100f8600c5481565b6040519081526020015b60405180910390f35b34801561011757600080fd5b5061012b610126366004610cd4565b610290565b005b34801561013957600080fd5b5061012b610148366004610cb9565b610408565b34801561015957600080fd5b506100f8610168366004610cb9565b61042b565b34801561017957600080fd5b5061012b610188366004610d52565b6104b4565b34801561019957600080fd5b506100f860085481565b3480156101af57600080fd5b506100f8600e5481565b3480156101c557600080fd5b506100f860095481565b3480156101db57600080fd5b5061020b6101ea366004610cb9565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610102565b61012b6104d6565b34801561023a57600080fd5b506100f8600b5481565b34801561025057600080fd5b506100f8600a5481565b34801561026657600080fd5b5061012b610275366004610d20565b610723565b34801561028657600080fd5b506100f8600d5481565b6000546001600160a01b031633146102a757600080fd5b6001600160a01b038216600090815260076020526040902054156102ce576102ce82610823565b6000811180156102f457506001600160a01b038216600090815260076020526040902054155b1561035a57600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561038d565b8015801561037f57506001600160a01b03821660009081526007602052604090205415155b1561038d5761038d8261094e565b6001600160a01b0382166000908152600760205260409020546008546103be9183916103b891610a63565b90610aae565b6008556001600160a01b03821660009081526007602052604090208190556103e581610b12565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6000546001600160a01b0316331461041f57600080fd5b61042881610823565b50565b6001600160a01b03811660009081526007602052604081205461045057506000919050565b6001600160a01b03821660009081526007602052604081205461047290610b12565b6001600160a01b0384166000908152600760205260409020600101549091508082116104a2575060009392505050565b6104ac8282610a63565b949350505050565b6000546001600160a01b031633146104cb57600080fd5b600d91909155600e55565b6000546001600160a01b031633146104ed57600080fd5b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561053157600080fd5b505afa158015610545573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105699190610d39565b6040805160028082526060820183529293506000929091602083019080368337505060025482519293506001600160a01b0316918391506000906105af576105af610eea565b6001600160a01b03928316602091820292909201015260018054835192169183919081106105df576105df610eea565b6001600160a01b03928316602091820292909201015260035460405163b6f9de9560e01b815291169063b6f9de9590349061062590600090869030904290600401610d74565b6000604051808303818588803b15801561063e57600080fd5b505af1158015610652573d6000803e3d6000fd5b50506001546040516370a0823160e01b8152306004820152600094506106e193508692506001600160a01b03909116906370a082319060240160206040518083038186803b1580156106a357600080fd5b505afa1580156106b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106db9190610d39565b90610a63565b6009549091506106f19082610aae565b600955600854600c5461071b916107129161070c9085610b2f565b90610bae565b600b5490610aae565b600b55505050565b6000546001600160a01b0316331461073a57600080fd5b60045480610746575050565b6000805a905060005b848310801561075d57508381105b1561081c5783600f5410610771576000600f555b6107a36004600f548154811061078957610789610eea565b6000918252602090912001546001600160a01b0316610bf0565b156107da576107da6004600f54815481106107c0576107c0610eea565b6000918252602090912001546001600160a01b0316610823565b6107ef6107e85a8490610a63565b8490610aae565b92505a600f8054919350600061080483610ea3565b9190505550808061081490610ea3565b91505061074f565b5050505050565b6001600160a01b0381166000908152600760205260409020546108435750565b600061084e8261042b565b9050801561094a57600a546108639082610aae565b600a5560015460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b1580156108b457600080fd5b505af11580156108c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ec9190610cfe565b506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109209082610aae565b6001600160a01b03831660009081526007602052604090206002810191909155546103e590610b12565b5050565b6004805461095e90600190610e8c565b8154811061096e5761096e610eea565b60009182526020808320909101546001600160a01b03848116845260059092526040909220546004805492909316929181106109ac576109ac610eea565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916109f890600190610e8c565b81548110610a0857610a08610eea565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610a3e57610a3e610ed4565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610aa583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c35565b90505b92915050565b600080610abb8385610e33565b905083811015610aa55760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064015b60405180910390fd5b6000610aa8600c5461070c600b5485610b2f90919063ffffffff16565b600082610b3e57506000610aa8565b6000610b4a8385610e6d565b905082610b578583610e4b565b14610aa55760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b09565b6000610aa583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610c6f565b600d546001600160a01b03821660009081526006602052604081205490914291610c1a9190610e33565b108015610aa85750600e54610c2e8361042b565b1192915050565b60008184841115610c595760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e8c565b95945050505050565b60008183610c905760405162461bcd60e51b8152600401610b099190610dde565b506000610c668486610e4b565b80356001600160a01b0381168114610cb457600080fd5b919050565b600060208284031215610ccb57600080fd5b610aa582610c9d565b60008060408385031215610ce757600080fd5b610cf083610c9d565b946020939093013593505050565b600060208284031215610d1057600080fd5b81518015158114610aa557600080fd5b600060208284031215610d3257600080fd5b5035919050565b600060208284031215610d4b57600080fd5b5051919050565b60008060408385031215610d6557600080fd5b50508035926020909101359150565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610dbe5784516001600160a01b031683529383019391830191600101610d99565b50506001600160a01b039690961660408501525050506060015292915050565b600060208083528351808285015260005b81811015610e0b57858101830151858201604001528201610def565b81811115610e1d576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610e4657610e46610ebe565b500190565b600082610e6857634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610e8757610e87610ebe565b500290565b600082821015610e9e57610e9e610ebe565b500390565b6000600019821415610eb757610eb7610ebe565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea2646970667358221220e547e89344ca584581eaedc3397970de8f22476649fe16924a82a1ab670e915264736f6c63430008050033

Deployed ByteCode Sourcemap

11594:15627:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13469:49;;;;;;;;;;;;;;;;;;;11509:25:1;;;11497:2;11482:18;13469:49:0;;;;;;;;24781:449;;;;;;;;;;-1:-1:-1;24781:449:0;;;;;:::i;:::-;;:::i;:::-;;14760:80;;;;;;;;;;-1:-1:-1;14832:5:0;;;;;;;;;;;;-1:-1:-1;;;14832:5:0;;;;14760:80;;;;;;;:::i;15182:216::-;;;;;;;;;;-1:-1:-1;15182:216:0;;;;;:::i;:::-;;:::i;:::-;;;7496:14:1;;7489:22;7471:41;;7459:2;7444:18;15182:216:0;7426:92:1;26946:150:0;;;;;;;;;;-1:-1:-1;26946:150:0;;;;;:::i;:::-;;:::i;14490:88::-;;;;;;;;;;-1:-1:-1;14563:12:0;;14490:88;;25638:183;;;;;;;;;;-1:-1:-1;25638:183:0;;;;;:::i;:::-;;:::i;22903:342::-;;;;;;;;;;-1:-1:-1;22903:342:0;;;;;:::i;:::-;;:::i;15700:370::-;;;;;;;;;;-1:-1:-1;15700:370:0;;;;;:::i;:::-;;:::i;26318:146::-;;;;;;;;;;-1:-1:-1;26318:146:0;;;;;:::i;:::-;;:::i;26621:142::-;;;;;;;;;;;;;:::i;26021:183::-;;;;;;;;;;-1:-1:-1;26021:183:0;;;;;:::i;:::-;;:::i;3438:103::-;;;;;;;;;;-1:-1:-1;3438:103:0;;;;;:::i;:::-;3493:4;3528:5;-1:-1:-1;;;;;3517:16:0;;;3528:5;;3517:16;;3438:103;22450:445;;;;;;;;;;-1:-1:-1;22450:445:0;;;;;:::i;:::-;;:::i;14584:80::-;;;;;;;;;;-1:-1:-1;14584:80:0;;12049:2;12527:36:1;;12515:2;12500:18;14584:80:0;12482:87:1;13090:38:0;;;;;;;;;;-1:-1:-1;13090:38:0;;;;;;;;24543:94;;;;;;;;;;-1:-1:-1;24543:94:0;;;;;:::i;:::-;;:::i;15406:122::-;;;;;;;;;;-1:-1:-1;15406:122:0;;;;;:::i;:::-;;:::i;23430:139::-;;;;;;;;;;-1:-1:-1;23430:139:0;;;;;:::i;:::-;;:::i;23932:120::-;;;;;;;;;;-1:-1:-1;23932:120:0;;;;;:::i;:::-;;:::i;13432:30::-;;;;;;;;;;-1:-1:-1;13432:30:0;;;;;;;;14930:105;;;;;;;;;;-1:-1:-1;14930:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;15014:18:0;14996:7;15014:18;;;:9;:18;;;;;;;14930:105;12122:42;;;;;;;;;;;;;;;;21151:318;;;;;;;;;;-1:-1:-1;21151:318:0;;;;;:::i;:::-;;:::i;14846:78::-;;;;;;;;;;-1:-1:-1;14898:7:0;14916:5;-1:-1:-1;;;;;14916:5:0;14846:78;;;-1:-1:-1;;;;;5893:32:1;;;5875:51;;5863:2;5848:18;14846:78:0;5830:102:1;14670:84:0;;;;;;;;;;-1:-1:-1;14744:7:0;;;;;;;;;;;;-1:-1:-1;;;14744:7:0;;;;14670:84;;26473:136;;;;;;;;;;-1:-1:-1;26473:136:0;;;;;:::i;:::-;;:::i;24059:343::-;;;;;;;;;;-1:-1:-1;24059:343:0;;;;;:::i;:::-;;:::i;25238:228::-;;;;;;;;;;-1:-1:-1;25238:228:0;;;;;:::i;:::-;;:::i;12836:19::-;;;;;;;;;;-1:-1:-1;12836:19:0;;;;-1:-1:-1;;;;;12836:19:0;;;15536:156;;;;;;;;;;-1:-1:-1;15536:156:0;;;;;:::i;:::-;;:::i;21481:105::-;;;;;;;;;;;;;:::i;3111:94::-;;;;;;;;;;-1:-1:-1;3111:94:0;;;;;:::i;:::-;;:::i;12864:25::-;;;;;;;;;;;;;;;;12634:36;;;;;;;;;;-1:-1:-1;12634:36:0;;;;-1:-1:-1;;;;;12634:36:0;;;26771:167;;;;;;;;;;-1:-1:-1;26771:167:0;;;;;:::i;:::-;;:::i;18098:391::-;;;;;;;;;;;;;:::i;15041:133::-;;;;;;;;;;-1:-1:-1;15041:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15143:19:0;;;15125:7;15143:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15041:133;25474:156;;;;;;;;;;-1:-1:-1;25474:156:0;;;;;:::i;:::-;;:::i;13135:40::-;;;;;;;;;;-1:-1:-1;13135:40:0;;;;;;;;;;;12677:35;;;;;;;;;;-1:-1:-1;12677:35:0;;;;-1:-1:-1;;;;;12677:35:0;;;3281:97;;;;;;;;;;-1:-1:-1;3281:97:0;;;;;:::i;:::-;;:::i;26216:90::-;;;;;;;;;;;;;:::i;17784:306::-;;;;;;;;;;-1:-1:-1;17784:306:0;;;;;:::i;:::-;;:::i;3838:173::-;;;;;;;;;;-1:-1:-1;3838:173:0;;;;;:::i;:::-;;:::i;25829:180::-;;;;;;;;;;;;;:::i;23577:347::-;;;;;;;;;;-1:-1:-1;23577:347:0;;;;;:::i;:::-;;:::i;24645:128::-;;;;;;;;;;-1:-1:-1;24645:128:0;;;;;:::i;:::-;;:::i;12805:24::-;;;;;;;;;;-1:-1:-1;12805:24:0;;;;-1:-1:-1;;;;;12805:24:0;;;3612:107;;;;;;;;;;-1:-1:-1;3612:107:0;;;;;:::i;:::-;;:::i;24781:449::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;;;;;;;;;24945:12:::1;:28:::0;;;24984:10:::1;:24:::0;;;25019:13:::1;:30:::0;;;25060:12:::1;:28:::0;;;25110:69:::1;25075:13:::0;25110:50:::1;25035:14:::0;25110:50;24960:13;24997:11;25110:17:::1;:30::i;:::-;:34:::0;::::1;:50::i;:69::-;25099:8;:80:::0;25190:14:::1;:32:::0;-1:-1:-1;;;;24781:449:0:o;15182:216::-;15286:10;15257:4;15274:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;15274:32:0;;;;;;;;;;:41;;;15331:37;15257:4;;15274:32;;15331:37;;;;15309:6;11509:25:1;;11497:2;11482:18;;11464:76;15331:37:0;;;;;;;;-1:-1:-1;15386:4:0;15182:216;;;;;:::o;26946:150::-;27026:4;27082:6;27050:29;27070:8;27050:19;:29::i;:::-;:38;;26946:150;-1:-1:-1;;;26946:150:0:o;25638:183::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;25736:15:::1;:25:::0;;;;25772:26:::1;:41:::0;25638:183::o;22903:342::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;23063:1:::1;23036:23;23048:11:::0;23036:9;:23:::1;:::i;:::-;:28;;:55;;;;;23080:11;23068:9;:23;23036:55;23028:64;;;::::0;::::1;;23103:26;:38:::0;;;;23152:28:::1;:42:::0;23205:23:::1;:32:::0;22903:342::o;15700:370::-;-1:-1:-1;;;;;15820:19:0;;15800:4;15820:19;;;:11;:19;;;;;;;;15840:10;15820:31;;;;;;;;-1:-1:-1;;15820:52:0;15817:186;;15922:69;;;;;;;;;;;-1:-1:-1;;;15922:69:0;;;;;;;;-1:-1:-1;;;;;15922:19:0;;-1:-1:-1;15922:19:0;;;:11;:19;;;;;15942:10;15922:31;;;;;;;;;;:69;;15958:6;;15922:35;:69::i;:::-;-1:-1:-1;;;;;15888:19:0;;;;;;:11;:19;;;;;;;;15908:10;15888:31;;;;;;;:103;15817:186;16022:40;16036:6;16044:9;16055:6;16022:13;:40::i;:::-;16015:47;;15700:370;;;;;;:::o;26318:146::-;26414:11;;;:42;;-1:-1:-1;;;26414:42:0;;-1:-1:-1;;;;;5893:32:1;;;26414:42:0;;;5875:51:1;26387:7:0;;26414:11;;;:29;;5848:18:1;26414:42:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26621:142::-;26749:4;;-1:-1:-1;;;;;26749:4:0;26674:7;15014:18;;;:9;:18;;;;;;26701:54;;26728:4;;-1:-1:-1;;;;;26728:4:0;14996:7;15014:18;;;:9;:18;;;;;;26701:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;26694:61;;26621:142;:::o;26021:183::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;26131:11:::1;::::0;;:65:::1;::::0;-1:-1:-1;;;26131:65:0;;::::1;::::0;::::1;12306:25:1::0;;;12347:18;;;12340:34;;;-1:-1:-1;;;;;26131:11:0::1;::::0;:35:::1;::::0;12279:18:1;;26131:65:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26021:183:::0;;:::o;22450:445::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;22605:18:::1;:29:::0;;22645:14:::1;:21:::0;;;;-1:-1:-1;22677:22:0::1;:26:::0;22714:17:::1;:27:::0;;;;22752:22:::1;:32:::0;;;;22818:12:::1;22795:20;:35:::0;-1:-1:-1;;22841:46:0;;;22605:29;::::1;;-1:-1:-1::0;;22841:46:0;;;;;22605:29:::1;22841:46:::0;::::1;;::::0;;;::::1;;::::0;;22450:445::o;24543:94::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;-1:-1:-1;24624:5:0::1;::::0;;-1:-1:-1;;;;;;24616:13:0;::::1;-1:-1:-1::0;;;;;24624:5:0;;::::1;24616:13;::::0;;24543:94::o;15406:122::-;15461:4;15485:35;15493:7;-1:-1:-1;;15485:7:0;:35::i;23430:139::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;23515:12:::1;;23505:6;:22;;23497:32;;;::::0;::::1;;23540:12;:21:::0;23430:139::o;23932:120::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24016:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;24016:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23932:120::o;21151:318::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;21277:4:::1;::::0;21259:23:::1;::::0;21269:6;;-1:-1:-1;;;;;21277:4:0::1;21259:9;:23::i;:::-;21296:24;21293:169;;;21367:15;21336:28;:46:::0;21426:23:::1;::::0;21402:48:::1;::::0;11509:25:1;;;21402:48:0::1;::::0;11497:2:1;11482:18;21402:48:0::1;;;;;;;21293:169;21151:318:::0;;:::o;26473:136::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;26563:6:::1;26557:3;:12;26549:21;;;::::0;::::1;;26581:14;:20:::0;26473:136::o;24059:343::-;3493:4;3528:5;-1:-1:-1;;;;;3528:5:0;2835:10;3517:16;2819:38;;;;-1:-1:-1;;;2819:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24152:21:0;::::1;24144:65;;;::::0;-1:-1:-1;;;24144:65:0;;10129:2:1;24144:65:0::1;::::0;::::1;10111:21:1::0;10168:2;10148:18;;;10141:30;10207:33;10187:18;;;10180:61;10258:18;;24144:65:0::1;10101:181:1::0;24144:65:0::1;24296:6;24280:12;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;24313:18:0;::::1;;::::0;;;:9:::1;:18;::::0;;;;:28;;24335:6;;24313:18;:28:::1;::::0;24335:6;;24313:28:::1;:::i;:::-;::::0;;;-1:-1:-1;;24357:37:0::1;::::0;11509:25:1;;;-1:-1:-1;;;;;24357:37:0;::::1;::::0;24374:1:::1;::::0;-1:-1:-1;;;;;;;;;;;24357:37:0;11497:2:1;11482:18;24357:37:0::1;;;;;;;24059:343:::0;;:::o;25238:228::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;25357:21:::1;:46:::0;;-1:-1:-1;;;;;25357:46:0;;::::1;-1:-1:-1::0;;;;;;25357:46:0;;::::1;;::::0;;;25414:20:::1;:44:::0;;;;;::::1;::::0;::::1;;::::0;;25238:228::o;15536:156::-;15616:4;15640:44;15654:10;15666:9;15677:6;15640:13;:44::i;21481:105::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;21577:1:::1;21546:28;:32:::0;21481:105::o;3111:94::-;3493:4;3528:5;-1:-1:-1;;;;;3528:5:0;2835:10;3517:16;2819:38;;;;-1:-1:-1;;;2819:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3171:19:0::1;;::::0;;;3193:4:::1;3171:19;::::0;;;;;;;:26;;-1:-1:-1;;3171:26:0::1;::::0;;::::1;::::0;;3111:94::o;26771:167::-;26839:7;26866:64;26907:22;:20;:22::i;:::-;26889:4;;-1:-1:-1;;;;;26889:4:0;14996:7;15014:18;;;:9;:18;;;;;;26866:36;;26879:22;;26899:1;26879:19;:22::i;:::-;26866:8;;:12;:36::i;:::-;:40;;:64::i;18098:391::-;18147:7;18167:21;18191:78;18253:15;18191:57;18224:23;;18191:28;;:32;;:57;;;;:::i;:78::-;18167:102;;18280:19;18302:88;18381:8;;18302:74;18347:28;;18302:40;18315:26;;18302:8;;:12;;:40;;;;:::i;:88::-;18280:110;;18408:73;18421:59;18456:23;;18421:30;18437:13;18421:11;:15;;:30;;;;:::i;:59::-;18408:8;;;:12;:73::i;:::-;18401:80;;;;18098:391;:::o;25474:156::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;25566:11:::1;:22:::0;;-1:-1:-1;;25566:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;25599:13:::1;:23:::0;25474:156::o;3281:97::-;3493:4;3528:5;-1:-1:-1;;;;;3528:5:0;2835:10;3517:16;2819:38;;;;-1:-1:-1;;;2819:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3343:19:0::1;3365:5;3343:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3343:27:0::1;::::0;;3281:97::o;26216:90::-;26261:11;;;:37;;-1:-1:-1;;;26261:37:0;;26287:10;26261:37;;;5875:51:1;-1:-1:-1;;;;;26261:11:0;;;;:25;;5848:18:1;26261:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26216:90::o;17784:306::-;17840:7;17881:12;17863:10;;17876:1;17863:14;;;;:::i;:::-;:30;17860:67;;17903:14;;:21;;17922:1;17903:18;:21::i;17860:67::-;17940:7;:86;;;;;18011:15;17951:57;17984:23;;17951:28;;:32;;:57;;;;:::i;:::-;:75;17940:86;17937:120;;;18036:18;:16;:18::i;17937:120::-;-1:-1:-1;;18074:8:0;;;17784:306::o;3838:173::-;3493:4;3528:5;-1:-1:-1;;;;;3528:5:0;2835:10;3517:16;2819:38;;;;-1:-1:-1;;;2819:38:0;;;;;;;:::i;:::-;3914:5:::1;:11:::0;;-1:-1:-1;;;;;;3914:11:0::1;-1:-1:-1::0;;;;;3914:11:0;::::1;::::0;;::::1;::::0;;3936:19;;;-1:-1:-1;3936:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3936:26:0::1;::::0;;::::1;::::0;;;3978:25;;5875:51:1;;;3978:25:0::1;::::0;5848:18:1;3978:25:0::1;;;;;;;3838:173:::0;:::o;25829:180::-;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;25951:20:::1;::::0;25943:58:::1;::::0;25911:21:::1;::::0;-1:-1:-1;;;;;25951:20:0::1;::::0;25943:58;::::1;;;::::0;25911:21;;25882:26:::1;25943:58:::0;25882:26;25943:58;25911:21;25951:20;25943:58;::::1;;;;;;;;;;;;;::::0;::::1;;;;23577:347:::0;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23674:23:0;::::1;23692:4;23674:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;23711:4:0::1;::::0;-1:-1:-1;;;;;23701:14:0;;::::1;23711:4:::0;::::1;23701:14;;23674:41;23666:50;;;::::0;::::1;;-1:-1:-1::0;;;;;23727:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;23727:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;23771:146:::1;;23796:11;::::0;;:31:::1;::::0;-1:-1:-1;;;23796:31:0;;-1:-1:-1;;;;;6353:32:1;;;23796:31:0::1;::::0;::::1;6335:51:1::0;23796:11:0::1;6402:18:1::0;;;6395:34;;;;23796:11:0;::::1;::::0;:20:::1;::::0;6308:18:1;;23796:31:0::1;6290:145:1::0;23771:146:0::1;23858:11;::::0;;-1:-1:-1;;;;;23887:17:0;;::::1;23858:11;23887:17:::0;;;:9:::1;:17;::::0;;;;;;;23858:47;;-1:-1:-1;;;23858:47:0;;::::1;::::0;::::1;6335:51:1::0;;;;6402:18;;;6395:34;;;;23858:11:0::1;::::0;:20:::1;::::0;6308:18:1;;23858:47:0::1;6290:145:1::0;24645:128:0;2996:24;3009:10;2996:12;:24::i;:::-;2988:48;;;;-1:-1:-1;;;2988:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24733:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;24733:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24645:128::o;3612:107::-;-1:-1:-1;;;;;3692:19:0;3668:4;3692:19;;;:14;:19;;;;;;;;;3612:107::o;168:181::-;226:7;;258:5;262:1;258;:5;:::i;:::-;246:17;;287:1;282;:6;;274:46;;;;-1:-1:-1;;;274:46:0;;9414:2:1;274:46:0;;;9396:21:1;9453:2;9433:18;;;9426:30;9492:29;9472:18;;;9465:57;9539:18;;274:46:0;9386:177:1;497:192:0;583:7;619:12;611:6;;;;603:29;;;;-1:-1:-1;;;603:29:0;;;;;;;;:::i;:::-;-1:-1:-1;643:9:0;655:5;659:1;655;:5;:::i;:::-;643:17;497:192;-1:-1:-1;;;;;497:192:0:o;16078:1060::-;16190:6;;16170:4;;16190:6;;16187:63;;;16206:41;16221:6;16229:9;16240:6;16206:14;:41::i;:::-;16199:48;;;;16187:63;16270:28;16283:6;16291;16270:12;:28::i;:::-;16314:16;:14;:16::i;:::-;16311:35;;;16333:10;:8;:10::i;:::-;16359:19;:17;:19::i;:::-;16356:48;;;16381:20;:18;:20::i;:::-;23320:10;;:15;;;16419:32;;-1:-1:-1;16447:4:0;;-1:-1:-1;;;;;16434:17:0;;;16447:4;;16434:17;16419:32;16416:81;;;-1:-1:-1;;;;;16462:17:0;;16482:1;16462:17;;;:9;:17;;;;;;16454:30;;;;;;16486:8;23402:12;23389:10;:25;23351:71;16486:8;16529:53;;;;;;;;;;;-1:-1:-1;;;16529:53:0;;;;;;;;-1:-1:-1;;;;;16529:17:0;;-1:-1:-1;16529:17:0;;;:9;:17;;;;;;;;:53;;16551:6;;16529:21;:53::i;:::-;-1:-1:-1;;;;;16509:17:0;;;;;;:9;:17;;;;;;;;:73;;;;17749:11;:19;;;;;;;;17748:20;16620:67;;16681:6;16620:67;;;16644:34;16652:6;16660:9;16671:6;16644:7;:34::i;:::-;-1:-1:-1;;;;;16721:20:0;;;;;;:9;:20;;;;;;16595:92;;-1:-1:-1;16721:40:0;;16595:92;16721:24;:40::i;:::-;-1:-1:-1;;;;;16698:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;16778:24;;;;;:16;:24;;;;;;;16774:96;;16809:11;;;-1:-1:-1;;;;;16838:17:0;;;16809:11;16838:17;;;:9;:17;;;;;;;;16809:47;;-1:-1:-1;;;16809:47:0;;;;;6335:51:1;;;;6402:18;;;6395:34;;;;16809:11:0;;:20;;6308:18:1;;16809:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16805:63;;-1:-1:-1;;;;;16884:27:0;;;;;;:16;:27;;;;;;;;16880:105;;16918:11;;;-1:-1:-1;;;;;16950:20:0;;;16918:11;16950:20;;;:9;:20;;;;;;;;16918:53;;-1:-1:-1;;;16918:53:0;;;;;6335:51:1;;;;6402:18;;;6395:34;;;;16918:11:0;;:20;;6308:18:1;;16918:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16914:69;;17001:11;;17021:14;;17001:35;;-1:-1:-1;;;;;;17001:35:0;;-1:-1:-1;;;;;17001:11:0;;;;:19;;:35;;;;11509:25:1;;;11497:2;11482:18;;11464:76;17001:35:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16997:51;17082:9;-1:-1:-1;;;;;17065:43:0;17074:6;-1:-1:-1;;;;;17065:43:0;-1:-1:-1;;;;;;;;;;;17093:14:0;17065:43;;;;11509:25:1;;11497:2;11482:18;;11464:76;17065:43:0;;;;;;;;-1:-1:-1;17126:4:0;;16078:1060;-1:-1:-1;;;;16078:1060:0:o;355:136::-;413:7;440:43;444:1;447;440:43;;;;;;;;;;;;;;;;;:3;:43::i;22081:361::-;13571:6;:13;;-1:-1:-1;;13571:13:0;13580:4;13571:13;;;22181:16:::1;::::0;;22195:1:::1;22181:16:::0;;;;;::::1;::::0;;-1:-1:-1;;22181:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;22218:4:0::1;::::0;22208:7;;;;-1:-1:-1;;;;;;22218:4:0::1;::::0;22208:7;;-1:-1:-1;22218:4:0::1;::::0;22208:7:::1;;;;:::i;:::-;;;;;;:14;-1:-1:-1::0;;;;;22208:14:0::1;;;-1:-1:-1::0;;;;;22208:14:0::1;;;::::0;::::1;22251:4;22233;22238:1;22233:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;22233:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;22269:6:::1;::::0;:165:::1;::::0;-1:-1:-1;;;22269:165:0;;:6;::::1;::::0;:57:::1;::::0;22334:6;;22269:165:::1;::::0;:6:::1;::::0;22372:4;;22391:2;;22408:15:::1;::::0;22269:165:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;13589:6:0;:14;;-1:-1:-1;;13589:14:0;;;-1:-1:-1;;;;;;22081:361:0:o;695:250::-;753:7;777:6;773:47;;-1:-1:-1;807:1:0;800:8;;773:47;832:9;844:5;848:1;844;:5;:::i;:::-;832:17;-1:-1:-1;877:1:0;868:5;872:1;832:17;868:5;:::i;:::-;:10;860:56;;;;-1:-1:-1;;;860:56:0;;10489:2:1;860:56:0;;;10471:21:1;10528:2;10508:18;;;10501:30;10567:34;10547:18;;;10540:62;-1:-1:-1;;;10618:18:1;;;10611:31;10659:19;;860:56:0;10461:223:1;951:132:0;1009:7;1036:39;1040:1;1043;1036:39;;;;;;;;;;;;;;;;;:3;:39::i;17150:330::-;17280:53;;;;;;;;;;;-1:-1:-1;;;17280:53:0;;;;;;;;-1:-1:-1;;;;;17280:17:0;;17243:4;17280:17;;;:9;:17;;;;;;;:53;;17302:6;;17280:21;:53::i;:::-;-1:-1:-1;;;;;17260:17:0;;;;;;;:9;:17;;;;;;:73;;;;17367:20;;;;;;;:32;;17392:6;17367:24;:32::i;:::-;-1:-1:-1;;;;;17344:20:0;;;;;;;:9;:20;;;;;;;:55;;;;17415:35;;;;;;-1:-1:-1;;;;;;;;;;;17415:35:0;;;17443:6;11509:25:1;;11497:2;11482:18;;11464:76;17415:35:0;;;;;;;;-1:-1:-1;17468:4:0;17150:330;;;;;:::o;17488:166::-;17585:12;;17575:6;:22;;:49;;;-1:-1:-1;;;;;;17601:23:0;;;;;;:15;:23;;;;;;;;17575:49;17567:79;;;;-1:-1:-1;;;17567:79:0;;9068:2:1;17567:79:0;;;9050:21:1;9107:2;9087:18;;;9080:30;-1:-1:-1;;;9126:18:1;;;9119:47;9183:18;;17567:79:0;9040:167:1;18877:197:0;18964:4;;18926;;-1:-1:-1;;;;;18964:4:0;18950:10;:18;;;;:38;;-1:-1:-1;18982:6:0;;;;18981:7;18950:38;:62;;;;-1:-1:-1;19001:11:0;;;;18950:62;:116;;;;-1:-1:-1;;19053:13:0;;19043:4;19025:24;;;;:9;:24;;;;;;:41;;;18877:197::o;19082:1755::-;13571:6;:13;;-1:-1:-1;;13571:13:0;13580:4;13571:13;;;19177:15:::1;::::0;19194:26:::1;::::0;13571:6;;19161:60:::1;::::0;:15:::1;:60::i;:::-;:79;;19228:12;;19161:79;;;19224:1;19161:79;19131:109;;19251:23;19277:59;19334:1;19277:52;19320:8;;19277:38;19295:19;19277:13;;:17;;:38;;;;:::i;:59::-;19251:85;;19347:20;19370:34;19388:15;19370:13;;:17;;:34;;;;:::i;:::-;19441:16;::::0;;19455:1:::1;19441:16:::0;;;;;::::1;::::0;;19347:57;;-1:-1:-1;19417:21:0::1;::::0;19441:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;19441:16:0::1;19417:40;;19486:4;19468;19473:1;19468:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19468:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;19512:4:::1;::::0;19502:7;;19512:4;::::1;::::0;19502;;19512;;19502:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;19502:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;19587:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;19587:188:0;;19553:21:::1;::::0;19587:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;19659:12;;19529:21:::1;::::0;19702:4;;19729::::1;::::0;19749:15:::1;::::0;19587:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19786:17;19806:40;19832:13;19806:21;:25;;:40;;;;:::i;:::-;19786:60:::0;-1:-1:-1;19857:19:0::1;19879:40;19892:26;:19:::0;19916:1:::1;19892:23;:26::i;:::-;19879:8;::::0;;:12:::1;:40::i;:::-;19857:62:::0;-1:-1:-1;19930:26:0::1;19959:58;20015:1;19959:51;19857:62:::0;19959:51;:9;19973:19;19959:13:::1;:34::i;:58::-;19930:87;;20028:27;20058:45;20091:11;20058:28;20072:13;;20058:9;:13;;:28;;;;:::i;:45::-;20028:75;;20114:26;20143:44;20175:11;20143:27;20157:12;;20143:9;:13;;:27;;;;:::i;:44::-;20114:73;;20204:11;;;;;;;;;-1:-1:-1::0;;;;;20204:11:0::1;-1:-1:-1::0;;;;;20204:19:0::1;;20231;20204:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;20325:20:0::1;::::0;20317:77:::1;::::0;20276:12:::1;::::0;-1:-1:-1;;;;;20325:20:0::1;::::0;20384:5:::1;::::0;20359:18;;20276:12;20317:77;20276:12;20317:77;20359:18;20325:20;20384:5;20317:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20275:119;;;20413:7;20405:50;;;::::0;-1:-1:-1;;;20405:50:0;;9770:2:1;20405:50:0::1;::::0;::::1;9752:21:1::0;9809:2;9789:18;;;9782:30;9848:32;9828:18;;;9821:60;9898:18;;20405:50:0::1;9742:180:1::0;20405:50:0::1;20471:19:::0;;20468:362:::1;;20506:6;::::0;20680:21:::1;::::0;20506:244:::1;::::0;-1:-1:-1;;;20506:244:0;;20582:4:::1;20506:244;::::0;::::1;7060:34:1::0;7110:18;;;7103:34;;;20506:6:0::1;7153:18:1::0;;;7146:34;;;7196:18;;;7189:34;-1:-1:-1;;;;;20680:21:0;;::::1;7239:19:1::0;;;7232:44;20720:15:0::1;7292:19:1::0;;;7285:35;20506:6:0;::::1;::::0;:22:::1;::::0;20536:18;;6994:19:1;;20506:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;20770:48:0::1;::::0;;12306:25:1;;;12362:2;12347:18;;12340:34;;;20770:48:0::1;::::0;-1:-1:-1;12279:18:1;20770:48:0::1;;;;;;;20468:362;-1:-1:-1::0;;13589:6:0;:14;;-1:-1:-1;;13589:14:0;;;-1:-1:-1;;;;;;;;;19082:1755:0:o;20845:298::-;20935:4;;20897;;-1:-1:-1;;;;;20935:4:0;20921:10;:18;;;;:42;;-1:-1:-1;20957:6:0;;;;20956:7;20921:42;:77;;;;-1:-1:-1;20980:18:0;;;;20921:77;:155;;;;;21064:12;21038:22;;21015:20;;:45;;;;:::i;:::-;:61;;20921:155;:214;;;;-1:-1:-1;;21118:17:0;;21093:21;:42;;;20845:298::o;21594:479::-;21654:17;;21673:4;;21644:34;;21654:17;-1:-1:-1;;;;;21673:4:0;21644:9;:34::i;:::-;21692:21;;;;;;;21689:166;;;21760:15;21729:28;:46;21819:23;;21795:48;;11509:25:1;;;21795:48:0;;11497:2:1;11482:18;21795:48:0;;;;;;;21689:166;21888:12;21865:20;:35;21963:17;;21936:22;;:45;;:26;:45::i;:::-;21911:22;:70;;;22020:14;;-1:-1:-1;21992:74:0;;;22037:18;:26;;-1:-1:-1;;22037:26:0;;;21992:74;21594:479::o;18497:372::-;18668:14;;18657:4;;18582:7;;;;18622:61;;18668:14;18622:41;;18633:29;;-1:-1:-1;;;;;18645:16:0;;;18657:4;;18645:16;18633:11;:29::i;:::-;18622:6;;:10;:41::i;:61::-;18741:4;18723:24;;;;:9;:24;;;;;;18602:81;;-1:-1:-1;18723:39:0;;18602:81;18723:28;:39::i;:::-;18714:4;18696:24;;;;:9;:24;;;;;;;:66;;;;18778:42;;-1:-1:-1;;;;;18778:42:0;;;-1:-1:-1;;;;;;;;;;;18778:42:0;;;18810:9;11509:25:1;;11497:2;11482:18;;11464:76;18778:42:0;;;;;;;;18840:21;:6;18851:9;18840:10;:21::i;1089:345::-;1175:7;1277:12;1270:5;1262:28;;;;-1:-1:-1;;;1262:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1301:9:0;1313:5;1317:1;1313;:5;:::i;14:160:1:-;79:20;;135:13;;128:21;118:32;;108:2;;164:1;161;154:12;108:2;60:114;;;:::o;179:247::-;238:6;291:2;279:9;270:7;266:23;262:32;259:2;;;307:1;304;297:12;259:2;346:9;333:23;365:31;390:5;365:31;:::i;691:388::-;759:6;767;820:2;808:9;799:7;795:23;791:32;788:2;;;836:1;833;826:12;788:2;875:9;862:23;894:31;919:5;894:31;:::i;:::-;944:5;-1:-1:-1;1001:2:1;986:18;;973:32;1014:33;973:32;1014:33;:::i;:::-;1066:7;1056:17;;;778:301;;;;;:::o;1084:456::-;1161:6;1169;1177;1230:2;1218:9;1209:7;1205:23;1201:32;1198:2;;;1246:1;1243;1236:12;1198:2;1285:9;1272:23;1304:31;1329:5;1304:31;:::i;:::-;1354:5;-1:-1:-1;1411:2:1;1396:18;;1383:32;1424:33;1383:32;1424:33;:::i;:::-;1188:352;;1476:7;;-1:-1:-1;;;1530:2:1;1515:18;;;;1502:32;;1188:352::o;1545:315::-;1610:6;1618;1671:2;1659:9;1650:7;1646:23;1642:32;1639:2;;;1687:1;1684;1677:12;1639:2;1726:9;1713:23;1745:31;1770:5;1745:31;:::i;:::-;1795:5;-1:-1:-1;1819:35:1;1850:2;1835:18;;1819:35;:::i;:::-;1809:45;;1629:231;;;;;:::o;1865:315::-;1933:6;1941;1994:2;1982:9;1973:7;1969:23;1965:32;1962:2;;;2010:1;2007;2000:12;1962:2;2049:9;2036:23;2068:31;2093:5;2068:31;:::i;:::-;2118:5;2170:2;2155:18;;;;2142:32;;-1:-1:-1;;;1952:228:1:o;2185:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:2;;;2310:1;2307;2300:12;2262:2;2333:26;2349:9;2333:26;:::i;2370:248::-;2435:6;2443;2496:2;2484:9;2475:7;2471:23;2467:32;2464:2;;;2512:1;2509;2502:12;2464:2;2535:26;2551:9;2535:26;:::i;2623:454::-;2712:6;2720;2728;2736;2744;2797:3;2785:9;2776:7;2772:23;2768:33;2765:2;;;2814:1;2811;2804:12;2765:2;2837:26;2853:9;2837:26;:::i;:::-;2827:36;;2910:2;2899:9;2895:18;2882:32;2872:42;;2961:2;2950:9;2946:18;2933:32;2923:42;;3012:2;3001:9;2997:18;2984:32;2974:42;;3035:36;3066:3;3055:9;3051:19;3035:36;:::i;:::-;3025:46;;2755:322;;;;;;;;:::o;3082:180::-;3141:6;3194:2;3182:9;3173:7;3169:23;3165:32;3162:2;;;3210:1;3207;3200:12;3162:2;-1:-1:-1;3233:23:1;;3152:110;-1:-1:-1;3152:110:1:o;3267:184::-;3337:6;3390:2;3378:9;3369:7;3365:23;3361:32;3358:2;;;3406:1;3403;3396:12;3358:2;-1:-1:-1;3429:16:1;;3348:103;-1:-1:-1;3348:103:1:o;3456:248::-;3521:6;3529;3582:2;3570:9;3561:7;3557:23;3553:32;3550:2;;;3598:1;3595;3588:12;3550:2;3634:9;3621:23;3611:33;;3663:35;3694:2;3683:9;3679:18;3663:35;:::i;3709:248::-;3777:6;3785;3838:2;3826:9;3817:7;3813:23;3809:32;3806:2;;;3854:1;3851;3844:12;3806:2;-1:-1:-1;;3877:23:1;;;3947:2;3932:18;;;3919:32;;-1:-1:-1;3796:161:1:o;3962:316::-;4039:6;4047;4055;4108:2;4096:9;4087:7;4083:23;4079:32;4076:2;;;4124:1;4121;4114:12;4076:2;-1:-1:-1;;4147:23:1;;;4217:2;4202:18;;4189:32;;-1:-1:-1;4268:2:1;4253:18;;;4240:32;;4066:212;-1:-1:-1;4066:212:1:o;4283:306::-;4371:6;4379;4387;4440:2;4428:9;4419:7;4415:23;4411:32;4408:2;;;4456:1;4453;4446:12;4408:2;4485:9;4479:16;4469:26;;4535:2;4524:9;4520:18;4514:25;4504:35;;4579:2;4568:9;4564:18;4558:25;4548:35;;4398:191;;;;;:::o;4594:454::-;4689:6;4697;4705;4713;4721;4774:3;4762:9;4753:7;4749:23;4745:33;4742:2;;;4791:1;4788;4781:12;4742:2;-1:-1:-1;;4814:23:1;;;4884:2;4869:18;;4856:32;;-1:-1:-1;4935:2:1;4920:18;;4907:32;;4986:2;4971:18;;4958:32;;-1:-1:-1;5037:3:1;5022:19;5009:33;;-1:-1:-1;4732:316:1;-1:-1:-1;4732:316:1:o;5053:461::-;5106:3;5144:5;5138:12;5171:6;5166:3;5159:19;5197:4;5226:2;5221:3;5217:12;5210:19;;5263:2;5256:5;5252:14;5284:1;5294:195;5308:6;5305:1;5302:13;5294:195;;;5373:13;;-1:-1:-1;;;;;5369:39:1;5357:52;;5429:12;;;;5464:15;;;;5405:1;5323:9;5294:195;;;-1:-1:-1;5505:3:1;;5114:400;-1:-1:-1;;;;;5114:400:1:o;7749:510::-;8020:6;8009:9;8002:25;8063:3;8058:2;8047:9;8043:18;8036:31;7983:4;8084:57;8136:3;8125:9;8121:19;8113:6;8084:57;:::i;:::-;-1:-1:-1;;;;;8177:32:1;;;;8172:2;8157:18;;8150:60;-1:-1:-1;8241:2:1;8226:18;8219:34;8076:65;7992:267;-1:-1:-1;;7992:267:1:o;8264:597::-;8376:4;8405:2;8434;8423:9;8416:21;8466:6;8460:13;8509:6;8504:2;8493:9;8489:18;8482:34;8534:1;8544:140;8558:6;8555:1;8552:13;8544:140;;;8653:14;;;8649:23;;8643:30;8619:17;;;8638:2;8615:26;8608:66;8573:10;;8544:140;;;8702:6;8699:1;8696:13;8693:2;;;8772:1;8767:2;8758:6;8747:9;8743:22;8739:31;8732:42;8693:2;-1:-1:-1;8845:2:1;8824:15;-1:-1:-1;;8820:29:1;8805:45;;;;8852:2;8801:54;;8385:476;-1:-1:-1;;;8385:476:1:o;10689:329::-;10891:2;10873:21;;;10930:1;10910:18;;;10903:29;-1:-1:-1;;;10963:2:1;10948:18;;10941:36;11009:2;10994:18;;10863:155::o;11023:335::-;11225:2;11207:21;;;11264:2;11244:18;;;11237:30;-1:-1:-1;;;11298:2:1;11283:18;;11276:41;11349:2;11334:18;;11197:161::o;11545:582::-;11844:6;11833:9;11826:25;11887:6;11882:2;11871:9;11867:18;11860:34;11930:3;11925:2;11914:9;11910:18;11903:31;11807:4;11951:57;12003:3;11992:9;11988:19;11980:6;11951:57;:::i;:::-;-1:-1:-1;;;;;12044:32:1;;;;12039:2;12024:18;;12017:60;-1:-1:-1;12108:3:1;12093:19;12086:35;11943:65;11816:311;-1:-1:-1;;;11816:311:1:o;12574:128::-;12614:3;12645:1;12641:6;12638:1;12635:13;12632:2;;;12651:18;;:::i;:::-;-1:-1:-1;12687:9:1;;12622:80::o;12707:217::-;12747:1;12773;12763:2;;12817:10;12812:3;12808:20;12805:1;12798:31;12852:4;12849:1;12842:15;12880:4;12877:1;12870:15;12763:2;-1:-1:-1;12909:9:1;;12753:171::o;12929:168::-;12969:7;13035:1;13031;13027:6;13023:14;13020:1;13017:21;13012:1;13005:9;12998:17;12994:45;12991:2;;;13042:18;;:::i;:::-;-1:-1:-1;13082:9:1;;12981:116::o;13102:125::-;13142:4;13170:1;13167;13164:8;13161:2;;;13175:18;;:::i;:::-;-1:-1:-1;13212:9:1;;13151:76::o;13232:127::-;13293:10;13288:3;13284:20;13281:1;13274:31;13324:4;13321:1;13314:15;13348:4;13345:1;13338:15;13364:127;13425:10;13420:3;13416:20;13413:1;13406:31;13456:4;13453:1;13446:15;13480:4;13477:1;13470:15;13628:131;-1:-1:-1;;;;;13703:31:1;;13693:42;;13683:2;;13749:1;13746;13739:12;13683:2;13673:86;:::o

Swarm Source

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