Contract 0x4c76a10a658d71adb6431765a0a3ca13b6e2d491 3

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x6134b8ab80a46a11415eb95ac13ef940b28455d4e51f4ef03decfc81faf9d65cApprove117301342023-12-22 21:30:5897 days 10 hrs ago0x312ab2f8e9935fa2ac28ac6cff937f992e88c2ba IN  Crotama: CROTAMA Token0 CRO0.466289557 10,097
0xdc678a4df565744af77a535e734b36181c5d22f53a0a009dbbb34286b03db322Approve112670452023-11-22 18:15:40127 days 13 hrs ago0x24f5cb4d0846395c629032eb2deb759ecc251846 IN  Crotama: CROTAMA Token0 CRO0.111943359038 4,617.172985718
0x56efccd8d656153c0b28c0f1bf3adadd737a937ff0f5233df2bf6f0ff42ff03bApprove112670382023-11-22 18:15:00127 days 13 hrs ago0x24f5cb4d0846395c629032eb2deb759ecc251846 IN  Crotama: CROTAMA Token0 CRO0.111887960273 4,617.173287413
0x38d273fec144cafde75be3a5e30e60c1f3fcab7ab5d54a6bc9b0cdbd2540a706Approve112669662023-11-22 18:08:17127 days 13 hrs ago0x24f5cb4d0846395c629032eb2deb759ecc251846 IN  Crotama: CROTAMA Token0 CRO0.111943444374 4,617.176505461
0xbcae7fc922176c8b425596235af97d413bc222bc884829546355b6df818f2045Approve110500692023-11-08 15:41:33141 days 15 hrs ago0xb7077b919f87f9be1f307d42b3472e78c498134d IN  Crotama: CROTAMA Token0 CRO0.1163760
0xe655def8a80609301e0f6076542f1cebf855b8a48c03e77057e59cd76cae1e83Clear Stuck Toke...109372882023-11-01 7:54:50148 days 23 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.259270793415 4,631.737917634
0xb4426ea5a194db76a34387e090fcd3fce5de382850c1fa2d0bf06e8779646022Transfer108994232023-10-29 20:34:47151 days 11 hrs ago0x4f7d31470cca99d3b9f8d4b2c970869932a7bd34 IN  Crotama: CROTAMA Token0 CRO0.4631939839450
0x872ee0054b27762d6cf1377cf277fdfe9f8f1fb8808c5e4981510dc3ab6daec1Multi Transfer100245542023-09-02 18:07:19208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.263318308619 4,673.072844102
0x142ff1a0bdaac850bef04e6c25e5d9586e5ed9f0719f8e5c998ff2b9ff6b27d1Multi Transfer100245342023-09-02 18:05:26208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.263318358357 4,673.073726788
0xaaa4695753724d5e8fd3a3b3253a95197571950c3d310e7d7e32c9d9e9e8e815Multi Transfer100245012023-09-02 18:02:23208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.183408855704 4,673.075206489
0xc6ab9bd33da271e9c39f51a30a4be90c4c0ce2219e15b8a73549f31771133109Approve100244872023-09-02 18:01:03208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.137523948681 4,673.075832717
0x7a0d56761811f4340feba0ded4aa77e485257e0a72401d162bd44d1234e32b42Approve100244842023-09-02 18:00:46208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.215919475082 4,673.075967581
0xf86ee514d509fc9e0d841010e6855d0efc034fbc3d524df68a16b4095055dcd5Multi Transfer100244462023-09-02 17:57:10208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.240887808469 4,673.077684275
0x38e36916ebf3be4c3ed7d970db6e5427bbdc82279c9b7283a15b4dbb114dedf1Clear Stuck Bala...100243222023-09-02 17:45:31208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.143842176975 4,673.083297354
0x6841dc3941db28b1c56a624458b48a313a05b507332e1d65fffc834a05a191d8Set Swap Back Se...100243192023-09-02 17:45:15208 days 13 hrs agoCrotama: Deployer IN  Crotama: CROTAMA Token0 CRO0.146295550016 4,673.083435012
0x0db59016350f27dfdfd05a9bd089abb507563c921307d15da7163897c97fd756Transfer99073832023-08-26 2:35:31216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.58892220
0xa800c9db6a2fd74c6dc54103e903900582f12a67a507e74b0615862bcc583a7aTransfer99071422023-08-26 2:12:51216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.4209230007460
0x7c4537648b3a4e9c374d0264e2c352c2cd1b581bb9d656e05605f2eabd238544Transfer99071362023-08-26 2:12:17216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.2806153338310
0x6ead3d1cc1940fa2953493d85dd95da47abd728e2d8c57a37c1a1513052cd592Approve99070272023-08-26 2:02:03216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.3264191173140
0x2f65a7cf12fa9bbc6a96ab273dfb2b8370886e4b01eed8b3a7078c9dabf6f800Transfer99069932023-08-26 1:58:52216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.2806157262810
0xf245e06075c047bcb8b2af978d4672d1c6b135baa35ce816638f1682f2469749Transfer99069512023-08-26 1:54:54216 days 5 hrs ago0x097d1c41a335bca09db45b790a8a351c8100c009 IN  Crotama: CROTAMA Token0 CRO0.280615843350
0x7f856de1d2c09f0eb041826fca3e3261e4213232377dd6afb370ae7dfa74b5b3Approve94560422023-07-27 16:06:31245 days 15 hrs ago0xc8e6720196facd7a8ef08bd14ca7cfa0ed1a1bc4 IN  Crotama: CROTAMA Token0 CRO0.22333920
0xfe6da612ca6656685251bdc6a77cf96fa7fc3a9111fe23c24bc1067eac887ff5Authorize94521952023-07-27 10:05:14245 days 21 hrs ago0xc8e6720196facd7a8ef08bd14ca7cfa0ed1a1bc4 IN  Crotama: CROTAMA Token0 CRO0.120680
0xe7e9a1a7a07215c35c2a592c3000bec475740d56273a081b245ab05f1f92ac9cTransfer94521162023-07-27 9:57:51245 days 21 hrs ago0xc8e6720196facd7a8ef08bd14ca7cfa0ed1a1bc4 IN  Crotama: CROTAMA Token0 CRO0.14818560
0x3b9728b78e716dddb8cafc857f8a992adfc12bc8538d8561d631d5bf5b2fd7beTransfer94520682023-07-27 9:53:20245 days 21 hrs ago0xc8e6720196facd7a8ef08bd14ca7cfa0ed1a1bc4 IN  Crotama: CROTAMA Token0 CRO0.154420
[ Download CSV Export 

OVERVIEW

Crotama is a community driven token promoting financial well-being by empowering people of all ages, and cultures to be in control of their money, and create their own wealth opportunities via a Play-to-Earn game and NFT trading on the Cronos chain.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x38e36916ebf3be4c3ed7d970db6e5427bbdc82279c9b7283a15b4dbb114dedf1100243222023-09-02 17:45:31208 days 13 hrs ago Crotama: CROTAMA TokenCrotama: Deployer515.512735842077375753 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token0.189828284459828312 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Crotama: CROTAMA Token Mad Meerkat Finance: Master Meerkat & Router130.258306666785078633 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Crotama: CROTAMA Token0xf72c554a395e9375eee5352e9102b805e1ea7aca521.033226667140314535 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Crotama: CROTAMA Token0x277bdadf7a82ab1a9c5cac664abfdf748aff3486260.516613333570157267 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Crotama: CROTAMA Token0xf2fabdfa8e9c1bf2092ac6e857c101e2f8591f3e1,563.099680001420943606 CRO
0xced0c01e57ee209ae4b5e8a5498be7f5371100becd6a5ada0921fbd35a988cb135191322022-07-03 13:43:29634 days 17 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token2,500.959488002273509771 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token0.074687539966454433 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Crotama: CROTAMA Token Mad Meerkat Finance: Master Meerkat & Router115.068097074475370087 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Crotama: CROTAMA Token0xf72c554a395e9375eee5352e9102b805e1ea7aca460.272388297901480349 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Crotama: CROTAMA Token0x277bdadf7a82ab1a9c5cac664abfdf748aff3486230.136194148950740174 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Crotama: CROTAMA Token0xf2fabdfa8e9c1bf2092ac6e857c101e2f8591f3e1,380.817164893704441048 CRO
0xae13c965cddaabe283461212f3c1eb6ded3fc990a42aa722101b9a358bbe7d6535137152022-07-03 5:09:18635 days 2 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token2,209.307463829927105678 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token0.089214504719142478 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Crotama: CROTAMA Token Mad Meerkat Finance: Master Meerkat & Router116.945171728137039076 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Crotama: CROTAMA Token0xf72c554a395e9375eee5352e9102b805e1ea7aca467.780686912548156306 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Crotama: CROTAMA Token0x277bdadf7a82ab1a9c5cac664abfdf748aff3486233.890343456274078153 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Crotama: CROTAMA Token0xf2fabdfa8e9c1bf2092ac6e857c101e2f8591f3e1,403.34206073764446892 CRO
0x7fed80d64978f3218ce8e2078924924c967102d20555521c96a1ddefd57761c135117452022-07-03 2:03:04635 days 5 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token2,245.347297180231150272 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token0.112983549550215171 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Crotama: CROTAMA Token Mad Meerkat Finance: Master Meerkat & Router120.029045750530987795 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Crotama: CROTAMA Token0xf72c554a395e9375eee5352e9102b805e1ea7aca480.11618300212395118 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Crotama: CROTAMA Token0x277bdadf7a82ab1a9c5cac664abfdf748aff3486240.05809150106197559 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Crotama: CROTAMA Token0xf2fabdfa8e9c1bf2092ac6e857c101e2f8591f3e1,440.348549006371853542 CRO
0xf808f74c665a1d500e753472fc83ba70bd945237669948c549ff54092d58244435117192022-07-03 2:00:36635 days 5 hrs ago Mad Meerkat Finance: Master Meerkat & Router Crotama: CROTAMA Token2,304.557678410194965668 CRO
[ Download CSV Export 
Index Block
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CROTAMA

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at cronoscan.com on 2022-03-28
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.9;

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

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

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

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

interface ERC20 {
    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);
}

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

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

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    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 InterfaceLP {
    function sync() external;
}

contract CROTAMA is ERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0x5C7F8A570d578ED84E63fdFA7b1eE72dEae1AE23;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "CROTAMA";
    string constant _symbol = "CROTAMA";
    uint8 constant _decimals = 2;

    uint256 _totalSupply = 10 * 10**9 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply / 50;
    uint256 public _maxWalletToken = _totalSupply / 50;

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

    bool public blacklistMode = true;
    mapping (address => bool) public isBlacklisted;

    bool public whitelistMode = true;
    mapping (address => bool) public isWhitelisted;

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

    uint256 public liquidityFee    = 1;
    uint256 public marketingFee    = 3;
    uint256 public devFee     	   = 1;
    uint256 public teamFee         = 2;
    uint256 public burnFee         = 0;
    uint256 public totalFee        = teamFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 public feeDenominator  = 100;

    uint256 public sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address public devFeeReceiver;
    address public teamFeeReceiver;
    address public burnFeeReceiver;

    uint256 targetLiquidity = 100;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;
    InterfaceLP public pairContract;

    bool public tradingOpen = false;
    bool public swapEnabled = true;

    uint256 public swapThreshold = _totalSupply * 8 / 1000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x145677FC4d9b8F19B5D56d1820c48e0443049a30);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        pairContract = InterfaceLP(pair);

        _allowances[address(this)][address(router)] = type(uint256).max;

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0xf2fAbDFA8e9c1bF2092aC6e857C101e2f8591f3E;
        devFeeReceiver = 0xA03AA9Cb50Bc1e04d0B5F4429143A371d76EBE3f;
        teamFeeReceiver = 0xf72c554A395e9375EEE5352E9102b805e1Ea7ACa;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _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 setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }
    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
    }

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

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

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

        // Blacklist
        if(blacklistMode){
            require(!isBlacklisted[sender],"Blacklisted");    
        }

        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}


        // Checks max transaction limit
        checkTxLimit(sender, amount);

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

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

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

        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 takeFee(address sender, uint256 amount, bool isSell, address receiver) internal returns (uint256) {
        
        uint256 multiplier = isSell ? sellMultiplier : 100;
        if(whitelistMode && !isWhitelisted[receiver] && !isSell){
            multiplier = 1400;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(burnTokens > 0){
            emit Transfer(sender, burnFeeReceiver, burnTokens);    
        }

        return amount.sub(feeAmount);
    }

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

    function clearStuckBalance(uint256 amountPercentage) external authorized {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool) {
     if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function set_sell_multiplier(uint256 _multiplier) external onlyOwner{
        sellMultiplier = _multiplier;        
    }

    // switch Trading
    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    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] = WETH;

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHteam = amountETH.mul(teamFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(teamFeeReceiver).call{value: amountETHteam}("");
        
        // life sucks
        tmpSuccess = false;

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

    function enable_blacklist(bool _status) public onlyOwner {
        blacklistMode = _status;
    }

    function enable_whitelist(bool _status) public onlyOwner {
        whitelistMode = _status;
    }

    function manage_blacklist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isBlacklisted[addresses[i]] = status;
        }
    }

    function manage_whitelist(address[] calldata addresses, bool status) public onlyOwner {
        for (uint256 i; i < addresses.length; ++i) {
            isWhitelisted[addresses[i]] = status;
        }
    }

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

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

    function setFees(uint256 _liquidityFee, uint256 _teamFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external authorized {
        liquidityFee = _liquidityFee;
        teamFee = _teamFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_teamFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/2, "Fees cannot be more than 50%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _teamFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        teamFeeReceiver = _teamFeeReceiver;
    }

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



/* Airdrop Begins */
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

    require(addresses.length < 501,"GAS Error: max airdrop limit is 500 addresses");
    require(addresses.length == tokens.length,"Mismatch between Address and token count");

    uint256 SCCC = 0;

    for(uint i=0; i < addresses.length; i++){
        SCCC = SCCC + tokens[i];
    }

    require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");

    for(uint i=0; i < addresses.length; i++){
        _basicTransfer(from,addresses[i],tokens[i]);
    }
}

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blacklistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","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":[{"internalType":"address","name":"","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_whitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","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":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_teamFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_teamFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","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":"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":"uint256","name":"maxTXPercentage_base10000","type":"uint256"}],"name":"setMaxTxPercent_base10000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base10000","type":"uint256"}],"name":"setMaxWalletPercent_base10000","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":[{"internalType":"uint256","name":"_multiplier","type":"uint256"}],"name":"set_sell_multiplier","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":"teamFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600280546001600160a01b0319908116735c7f8a570d578ed84e63fdfa7b1ee72deae1ae2317825560038054821661dead1790556004805490911690556200004e90600a6200057f565b6200005f906402540be40062000597565b6005556032600554620000739190620005b9565b6006556032600554620000879190620005b9565b600755600a8054600160ff199182168117909255600c8054909116821790556010819055600360118190556012829055600260138190556000601481905592918291620000d59190620005dc565b620000e19190620005dc565b620000ed9190620005dc565b620000f99190620005dc565b601555606460168190556017819055601d819055601e556021805461ffff60a01b1916600160a81b1790556005546103e8906200013890600862000597565b620001449190620005b9565b6022553480156200015457600080fd5b5060008054336001600160a01b031991821681178355825260016020818152604093849020805460ff1916909217909155601f805473145677fc4d9b8f19b5d56d1820c48e0443049a3093168317905582516315ab88c960e31b81529251919263ad5c46489260048083019392829003018186803b158015620001d657600080fd5b505afa158015620001eb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002119190620005f7565b600280546001600160a01b0319166001600160a01b03928316179055601f546040805163c45a015560e01b81529051919092169163c45a0155916004808301926020929190829003018186803b1580156200026b57600080fd5b505afa15801562000280573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a69190620005f7565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c6539690604401602060405180830381600087803b158015620002f357600080fd5b505af115801562000308573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032e9190620005f7565b602080546001600160a01b039283166001600160a01b0319918216811783556021805483169091179055306000908152600983526040808220601f54861683528452808220600019905533808352600e8552818320805460ff199081166001908117909255600f8752838520805490911690911790556018805485168217905560198054851673f2fabdfa8e9c1bf2092ac6e857c101e2f8591f3e179055601a8054851673a03aa9cb50bc1e04d0b5f4429143a371d76ebe3f179055601b8054851673f72c554a395e9375eee5352e9102b805e1ea7aca179055600354601c80549095169616959095179092556005546008909352818120839055905190917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200045c91815260200190565b60405180910390a362000622565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620004c1578160001904821115620004a557620004a56200046a565b80851615620004b357918102915b93841c939080029062000485565b509250929050565b600082620004da5750600162000579565b81620004e95750600062000579565b81600181146200050257600281146200050d576200052d565b600191505062000579565b60ff8411156200052157620005216200046a565b50506001821b62000579565b5060208310610133831016604e8410600b841016171562000552575081810a62000579565b6200055e838362000480565b80600019048211156200057557620005756200046a565b0290505b92915050565b60006200059060ff841683620004c9565b9392505050565b6000816000190483118215151615620005b457620005b46200046a565b500290565b600082620005d757634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620005f257620005f26200046a565b500190565b6000602082840312156200060a57600080fd5b81516001600160a01b03811681146200059057600080fd5b612a3580620006326000396000f3fe6080604052600436106103b15760003560e01c806378109e54116101e7578063dd62ed3e1161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a8714610b00578063fe9fbb8014610b30578063fed0d2a114610b50578063ffb54a9914610b6657600080fd5b8063f2fde38b14610a8a578063f84ba65d14610aaa578063f887ea4014610aca578063fce589d814610aea57600080fd5b8063e96fada2116100dc578063e96fada214610a0a578063ec72d65f14610a2a578063f0b37c0414610a4a578063f12418a814610a6a57600080fd5b8063dd62ed3e14610964578063df20fd49146109aa578063e1950fa4146109ca578063e3763ded146109ea57600080fd5b806398118cb411610185578063ca33e64c11610154578063ca33e64c146108ee578063d51ed1c81461090e578063d7c94efd1461092e578063dab84ee71461094457600080fd5b806398118cb414610878578063a8aa1b311461088e578063a9059cbb146108ae578063b6a5d7de146108ce57600080fd5b8063893d20e8116101c1578063893d20e814610820578063896648c11461083e5780638e2eee841461085857806395d89b411461042857600080fd5b806378109e54146107d45780637d1db4a5146107ea57806386f6c3c11461080057600080fd5b80632b112e49116102d75780635e562f3b1161026a5780636ddd1713116102395780636ddd17131461074357806370a082311461076457806370c757ec1461079a57806377b54bad146107b457600080fd5b80635e562f3b146106d7578063658d4b7f146106f75780636827e764146107175780636b67c4df1461072d57600080fd5b806340291143116102a6578063402911431461063f5780634d709adf14610677578063571ac8b0146106975780635c85974f146106b757600080fd5b80632b112e49146105af5780632f54bf6e146105c4578063313ce567146105f35780633af32abf1461060f57600080fd5b8063180b0d7e1161034f5780631da1db5e1161031e5780631da1db5e146105395780631df4ccfc14610559578063201e79911461056f57806323b872dd1461058f57600080fd5b8063180b0d7e146104ce57806318160ddd146104e457806318abb635146104f95780631ca0a28d1461051957600080fd5b806306fdde031161038b57806306fdde0314610428578063095ea7b31461045e5780630d2959801461048e5780631161ae39146104ae57600080fd5b8063012aa912146103bd5780630445b667146103df5780630477e4761461040857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103dd6103d8366004612452565b610b87565b005b3480156103eb57600080fd5b506103f560225481565b6040519081526020015b60405180910390f35b34801561041457600080fd5b506103dd6104233660046124c8565b610bdb565b34801561043457600080fd5b50604080518082018252600781526643524f54414d4160c81b602082015290516103ff919061251f565b34801561046a57600080fd5b5061047e610479366004612589565b610c7a565b60405190151581526020016103ff565b34801561049a57600080fd5b506103dd6104a93660046125b5565b610ce7565b3480156104ba57600080fd5b5061047e6104c93660046125d2565b610d2f565b3480156104da57600080fd5b506103f560165481565b3480156104f057600080fd5b506005546103f5565b34801561050557600080fd5b506103dd6105143660046125f4565b610d43565b34801561052557600080fd5b506103dd610534366004612665565b610dc7565b34801561054557600080fd5b506103dd610554366004612452565b610fdb565b34801561056557600080fd5b506103f560155481565b34801561057b57600080fd5b506103dd61058a3660046125d2565b611048565b34801561059b57600080fd5b5061047e6105aa3660046126e8565b611078565b3480156105bb57600080fd5b506103f561113a565b3480156105d057600080fd5b5061047e6105df366004612729565b6000546001600160a01b0391821691161490565b3480156105ff57600080fd5b50604051600281526020016103ff565b34801561061b57600080fd5b5061047e61062a366004612729565b600d6020526000908152604090205460ff1681565b34801561064b57600080fd5b50601b5461065f906001600160a01b031681565b6040516001600160a01b0390911681526020016103ff565b34801561068357600080fd5b5060215461065f906001600160a01b031681565b3480156106a357600080fd5b5061047e6106b2366004612729565b61118c565b3480156106c357600080fd5b506103dd6106d2366004612452565b61119a565b3480156106e357600080fd5b506103dd6106f23660046125b5565b6111c4565b34801561070357600080fd5b506103dd610712366004612746565b611201565b34801561072357600080fd5b506103f560125481565b34801561073957600080fd5b506103f560115481565b34801561074f57600080fd5b5060215461047e90600160a81b900460ff1681565b34801561077057600080fd5b506103f561077f366004612729565b6001600160a01b031660009081526008602052604090205490565b3480156107a657600080fd5b50600c5461047e9060ff1681565b3480156107c057600080fd5b5061047e6107cf366004612589565b611251565b3480156107e057600080fd5b506103f560075481565b3480156107f657600080fd5b506103f560065481565b34801561080c57600080fd5b506103dd61081b36600461277f565b61137b565b34801561082c57600080fd5b506000546001600160a01b031661065f565b34801561084a57600080fd5b50600a5461047e9060ff1681565b34801561086457600080fd5b506103dd6108733660046124c8565b61143c565b34801561088457600080fd5b506103f560105481565b34801561089a57600080fd5b5060205461065f906001600160a01b031681565b3480156108ba57600080fd5b5061047e6108c9366004612589565b6114d5565b3480156108da57600080fd5b506103dd6108e9366004612729565b6114e2565b3480156108fa57600080fd5b5060185461065f906001600160a01b031681565b34801561091a57600080fd5b506103f5610929366004612452565b611533565b34801561093a57600080fd5b506103f560135481565b34801561095057600080fd5b50601a5461065f906001600160a01b031681565b34801561097057600080fd5b506103f561097f3660046127c2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109b657600080fd5b506103dd6109c53660046127f0565b61157b565b3480156109d657600080fd5b506103dd6109e53660046125b5565b6115c2565b3480156109f657600080fd5b50601c5461065f906001600160a01b031681565b348015610a1657600080fd5b5060195461065f906001600160a01b031681565b348015610a3657600080fd5b506103dd610a45366004612452565b6115ff565b348015610a5657600080fd5b506103dd610a65366004612729565b61162e565b348015610a7657600080fd5b506103dd610a85366004612452565b611679565b348015610a9657600080fd5b506103dd610aa5366004612729565b6116c4565b348015610ab657600080fd5b506103dd610ac5366004612746565b61175a565b348015610ad657600080fd5b50601f5461065f906001600160a01b031681565b348015610af657600080fd5b506103f560145481565b348015610b0c57600080fd5b5061047e610b1b366004612729565b600b6020526000908152604090205460ff1681565b348015610b3c57600080fd5b5061047e610b4b366004612729565b6117aa565b348015610b5c57600080fd5b506103f560175481565b348015610b7257600080fd5b5060215461047e90600160a01b900460ff1681565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610bb19061280e565b60405180910390fd5b61271081600554610bcb9190612844565b610bd59190612863565b60075550565b6000546001600160a01b03163314610c055760405162461bcd60e51b8152600401610bb19061280e565b60005b82811015610c745781600d6000868685818110610c2757610c27612885565b9050602002016020810190610c3c9190612729565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c6d8161289b565b9050610c08565b50505050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cd59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610d115760405162461bcd60e51b8152600401610bb19061280e565b60218054911515600160a01b0260ff60a01b19909216919091179055565b600082610d3b83611533565b119392505050565b610d4c336117aa565b610d685760405162461bcd60e51b8152600401610bb1906128b6565b601880546001600160a01b03199081166001600160a01b039788161790915560198054821695871695909517909455601a8054851693861693909317909255601c80548416918516919091179055601b80549092169216919091179055565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610bb19061280e565b6101f58310610e585760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610bb1565b828114610eb85760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610bb1565b6000805b84811015610efc57838382818110610ed657610ed6612885565b9050602002013582610ee891906128db565b915080610ef48161289b565b915050610ebc565b5080610f1d876001600160a01b031660009081526008602052604090205490565b1015610f6b5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bb1565b60005b84811015610fd257610fbf87878784818110610f8c57610f8c612885565b9050602002016020810190610fa19190612729565b868685818110610fb357610fb3612885565b905060200201356117c8565b5080610fca8161289b565b915050610f6e565b50505050505050565b610fe4336117aa565b6110005760405162461bcd60e51b8152600401610bb1906128b6565b47336108fc60646110118585612844565b61101b9190612863565b6040518115909202916000818181858888f19350505050158015611043573d6000803e3d6000fd5b505050565b611051336117aa565b61106d5760405162461bcd60e51b8152600401610bb1906128b6565b601d91909155601e55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914611125576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461110091849061189c565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6111308484846118d6565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054611187906003546001600160a01b03166000908152600860205260409020546111819060055490611c77565b90611c77565b905090565b6000610ce182600019610c7a565b6111a3336117aa565b6111bf5760405162461bcd60e51b8152600401610bb1906128b6565b600655565b6000546001600160a01b031633146111ee5760405162461bcd60e51b8152600401610bb19061280e565b600a805460ff1916911515919091179055565b61120a336117aa565b6112265760405162461bcd60e51b8152600401610bb1906128b6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600080546001600160a01b0316331461127c5760405162461bcd60e51b8152600401610bb19061280e565b816112fb576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f891906128f3565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061290c565b611384336117aa565b6113a05760405162461bcd60e51b8152600401610bb1906128b6565b601086905560138590556011849055601283905560148290556113d1826113cb858188818c8c611cb9565b90611cb9565b60155560168190556113e4600282612863565b601554106114345760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610bb1565b505050505050565b6000546001600160a01b031633146114665760405162461bcd60e51b8152600401610bb19061280e565b60005b82811015610c745781600b600086868581811061148857611488612885565b905060200201602081019061149d9190612729565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114ce8161289b565b9050611469565b60006111333384846118d6565b6000546001600160a01b0316331461150c5760405162461bcd60e51b8152600401610bb19061280e565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610ce161154061113a565b602080546001600160a01b03166000908152600890915260409020546115759061156e906002905b90611d18565b8590611d18565b90611d97565b611584336117aa565b6115a05760405162461bcd60e51b8152600401610bb1906128b6565b60218054921515600160a81b0260ff60a81b1990931692909217909155602255565b6000546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610bb19061280e565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146116295760405162461bcd60e51b8152600401610bb19061280e565b601755565b6000546001600160a01b031633146116585760405162461bcd60e51b8152600401610bb19061280e565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146116a35760405162461bcd60e51b8152600401610bb19061280e565b612710816005546116b49190612844565b6116be9190612863565b60065550565b6000546001600160a01b031633146116ee5760405162461bcd60e51b8152600401610bb19061280e565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611763336117aa565b61177f5760405162461bcd60e51b8152600401610bb1906128b6565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461181991849061189c565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546118489083611cb9565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206129e08339815191529061188a9086815260200190565b60405180910390a35060019392505050565b600081848411156118c05760405162461bcd60e51b8152600401610bb1919061251f565b5060006118cd8486612929565b95945050505050565b60235460009060ff16156118f6576118ef8484846117c8565b9050611133565b6001600160a01b03841660009081526001602052604090205460ff1615801561193857506001600160a01b03831660009081526001602052604090205460ff16155b1561198d57602154600160a01b900460ff1661198d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610bb1565b600a5460ff16156119ef576001600160a01b0384166000908152600b602052604090205460ff16156119ef5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610bb1565b6001600160a01b03841660009081526001602052604090205460ff16158015611a2157506001600160a01b0383163014155b8015611a3b57506003546001600160a01b03848116911614155b8015611a5557506020546001600160a01b03848116911614155b8015611a6f5750601c546001600160a01b03848116911614155b15611b10576001600160a01b038316600090815260086020526040902054600754611a9a84836128db565b1115611b0e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610bb1565b505b611b1a8483611dd9565b611b22611e46565b15611b2f57611b2f611e9c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611b8191849061189c565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff16151580611bd257506001600160a01b0384166000908152600e602052604090205460ff1615155b611bfa57602054611bf590869085906001600160a01b0388811691161487612292565b611bfc565b825b6001600160a01b038516600090815260086020526040902054909150611c229082611cb9565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206129e083398151915290611c649085815260200190565b60405180910390a3506001949350505050565b600061113383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061189c565b600080611cc683856128db565b9050838110156111335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb1565b600082611d2757506000610ce1565b6000611d338385612844565b905082611d408583612863565b146111335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb1565b600061113383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612424565b60065481111580611e0257506001600160a01b0382166000908152600f602052604090205460ff165b611e425760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610bb1565b5050565b6020546000906001600160a01b03163314801590611e67575060235460ff16155b8015611e7c5750602154600160a81b900460ff165b801561118757505060225430600090815260086020526040902054101590565b6023805460ff19166001179055601d54601e54600091611ebb91610d2f565b611ec757601054611eca565b60005b90506000611eee600261157560155461157586602254611d1890919063ffffffff16565b90506000611f0782602254611c7790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611f4157611f41612885565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611f7257611f72612885565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790611fbc908690600090879030904290600401612940565b600060405180830381600087803b158015611fd657600080fd5b505af1158015611fea573d6000803e3d6000fd5b5050505060006120038247611c7790919063ffffffff16565b9050600061201e612015886002611d97565b60155490611c77565b9050600061203360026115758481878d611d18565b905060006120508361157560115487611d1890919063ffffffff16565b9050600061206d8461157560135488611d1890919063ffffffff16565b9050600061208a8561157560125489611d1890919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146120dc576040519150601f19603f3d011682016040523d82523d6000602084013e6120e1565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114612131576040519150601f19603f3d011682016040523d82523d6000602084013e612136565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612186576040519150601f19603f3d011682016040523d82523d6000602084013e61218b565b606091505b5060009250508b15905061227a57601f5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561220457600080fd5b505af1158015612218573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061223d91906129b1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b600080836122a15760646122a5565b6017545b600c5490915060ff1680156122d357506001600160a01b0383166000908152600d602052604090205460ff16155b80156122dd575083155b156122e757506105785b600061231460165460646122fb9190612844565b611575846115686015548b611d1890919063ffffffff16565b9050600061233360155461157560145485611d1890919063ffffffff16565b905060006123418383611c77565b3060009081526008602052604090205490915061235e9082611cb9565b3060009081526008602052604080822092909255601c546001600160a01b03168152205461238c9083611cb9565b601c546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918c16916000805160206129e0833981519152910160405180910390a3811561240d57601c546040518381526001600160a01b03918216918b16906000805160206129e08339815191529060200160405180910390a35b6124178884611c77565b9998505050505050505050565b600081836124455760405162461bcd60e51b8152600401610bb1919061251f565b5060006118cd8486612863565b60006020828403121561246457600080fd5b5035919050565b60008083601f84011261247d57600080fd5b50813567ffffffffffffffff81111561249557600080fd5b6020830191508360208260051b85010111156124b057600080fd5b9250929050565b80151581146124c557600080fd5b50565b6000806000604084860312156124dd57600080fd5b833567ffffffffffffffff8111156124f457600080fd5b6125008682870161246b565b9094509250506020840135612514816124b7565b809150509250925092565b600060208083528351808285015260005b8181101561254c57858101830151858201604001528201612530565b8181111561255e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146124c557600080fd5b6000806040838503121561259c57600080fd5b82356125a781612574565b946020939093013593505050565b6000602082840312156125c757600080fd5b8135611133816124b7565b600080604083850312156125e557600080fd5b50508035926020909101359150565b600080600080600060a0868803121561260c57600080fd5b853561261781612574565b9450602086013561262781612574565b9350604086013561263781612574565b9250606086013561264781612574565b9150608086013561265781612574565b809150509295509295909350565b60008060008060006060868803121561267d57600080fd5b853561268881612574565b9450602086013567ffffffffffffffff808211156126a557600080fd5b6126b189838a0161246b565b909650945060408801359150808211156126ca57600080fd5b506126d78882890161246b565b969995985093965092949392505050565b6000806000606084860312156126fd57600080fd5b833561270881612574565b9250602084013561271881612574565b929592945050506040919091013590565b60006020828403121561273b57600080fd5b813561113381612574565b6000806040838503121561275957600080fd5b823561276481612574565b91506020830135612774816124b7565b809150509250929050565b60008060008060008060c0878903121561279857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156127d557600080fd5b82356127e081612574565b9150602083013561277481612574565b6000806040838503121561280357600080fd5b82356125a7816124b7565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561285e5761285e61282e565b500290565b60008261288057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156128af576128af61282e565b5060010190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600082198211156128ee576128ee61282e565b500190565b60006020828403121561290557600080fd5b5051919050565b60006020828403121561291e57600080fd5b8151611133816124b7565b60008282101561293b5761293b61282e565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129905784516001600160a01b03168352938301939183019160010161296b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129c657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122099c81314e1e9a5451d2ba7bca3e7846c3ba61ecb9935d8db5fdcc3d12a622e7a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106103b15760003560e01c806378109e54116101e7578063dd62ed3e1161010d578063f2fde38b116100a0578063fe575a871161006f578063fe575a8714610b00578063fe9fbb8014610b30578063fed0d2a114610b50578063ffb54a9914610b6657600080fd5b8063f2fde38b14610a8a578063f84ba65d14610aaa578063f887ea4014610aca578063fce589d814610aea57600080fd5b8063e96fada2116100dc578063e96fada214610a0a578063ec72d65f14610a2a578063f0b37c0414610a4a578063f12418a814610a6a57600080fd5b8063dd62ed3e14610964578063df20fd49146109aa578063e1950fa4146109ca578063e3763ded146109ea57600080fd5b806398118cb411610185578063ca33e64c11610154578063ca33e64c146108ee578063d51ed1c81461090e578063d7c94efd1461092e578063dab84ee71461094457600080fd5b806398118cb414610878578063a8aa1b311461088e578063a9059cbb146108ae578063b6a5d7de146108ce57600080fd5b8063893d20e8116101c1578063893d20e814610820578063896648c11461083e5780638e2eee841461085857806395d89b411461042857600080fd5b806378109e54146107d45780637d1db4a5146107ea57806386f6c3c11461080057600080fd5b80632b112e49116102d75780635e562f3b1161026a5780636ddd1713116102395780636ddd17131461074357806370a082311461076457806370c757ec1461079a57806377b54bad146107b457600080fd5b80635e562f3b146106d7578063658d4b7f146106f75780636827e764146107175780636b67c4df1461072d57600080fd5b806340291143116102a6578063402911431461063f5780634d709adf14610677578063571ac8b0146106975780635c85974f146106b757600080fd5b80632b112e49146105af5780632f54bf6e146105c4578063313ce567146105f35780633af32abf1461060f57600080fd5b8063180b0d7e1161034f5780631da1db5e1161031e5780631da1db5e146105395780631df4ccfc14610559578063201e79911461056f57806323b872dd1461058f57600080fd5b8063180b0d7e146104ce57806318160ddd146104e457806318abb635146104f95780631ca0a28d1461051957600080fd5b806306fdde031161038b57806306fdde0314610428578063095ea7b31461045e5780630d2959801461048e5780631161ae39146104ae57600080fd5b8063012aa912146103bd5780630445b667146103df5780630477e4761461040857600080fd5b366103b857005b600080fd5b3480156103c957600080fd5b506103dd6103d8366004612452565b610b87565b005b3480156103eb57600080fd5b506103f560225481565b6040519081526020015b60405180910390f35b34801561041457600080fd5b506103dd6104233660046124c8565b610bdb565b34801561043457600080fd5b50604080518082018252600781526643524f54414d4160c81b602082015290516103ff919061251f565b34801561046a57600080fd5b5061047e610479366004612589565b610c7a565b60405190151581526020016103ff565b34801561049a57600080fd5b506103dd6104a93660046125b5565b610ce7565b3480156104ba57600080fd5b5061047e6104c93660046125d2565b610d2f565b3480156104da57600080fd5b506103f560165481565b3480156104f057600080fd5b506005546103f5565b34801561050557600080fd5b506103dd6105143660046125f4565b610d43565b34801561052557600080fd5b506103dd610534366004612665565b610dc7565b34801561054557600080fd5b506103dd610554366004612452565b610fdb565b34801561056557600080fd5b506103f560155481565b34801561057b57600080fd5b506103dd61058a3660046125d2565b611048565b34801561059b57600080fd5b5061047e6105aa3660046126e8565b611078565b3480156105bb57600080fd5b506103f561113a565b3480156105d057600080fd5b5061047e6105df366004612729565b6000546001600160a01b0391821691161490565b3480156105ff57600080fd5b50604051600281526020016103ff565b34801561061b57600080fd5b5061047e61062a366004612729565b600d6020526000908152604090205460ff1681565b34801561064b57600080fd5b50601b5461065f906001600160a01b031681565b6040516001600160a01b0390911681526020016103ff565b34801561068357600080fd5b5060215461065f906001600160a01b031681565b3480156106a357600080fd5b5061047e6106b2366004612729565b61118c565b3480156106c357600080fd5b506103dd6106d2366004612452565b61119a565b3480156106e357600080fd5b506103dd6106f23660046125b5565b6111c4565b34801561070357600080fd5b506103dd610712366004612746565b611201565b34801561072357600080fd5b506103f560125481565b34801561073957600080fd5b506103f560115481565b34801561074f57600080fd5b5060215461047e90600160a81b900460ff1681565b34801561077057600080fd5b506103f561077f366004612729565b6001600160a01b031660009081526008602052604090205490565b3480156107a657600080fd5b50600c5461047e9060ff1681565b3480156107c057600080fd5b5061047e6107cf366004612589565b611251565b3480156107e057600080fd5b506103f560075481565b3480156107f657600080fd5b506103f560065481565b34801561080c57600080fd5b506103dd61081b36600461277f565b61137b565b34801561082c57600080fd5b506000546001600160a01b031661065f565b34801561084a57600080fd5b50600a5461047e9060ff1681565b34801561086457600080fd5b506103dd6108733660046124c8565b61143c565b34801561088457600080fd5b506103f560105481565b34801561089a57600080fd5b5060205461065f906001600160a01b031681565b3480156108ba57600080fd5b5061047e6108c9366004612589565b6114d5565b3480156108da57600080fd5b506103dd6108e9366004612729565b6114e2565b3480156108fa57600080fd5b5060185461065f906001600160a01b031681565b34801561091a57600080fd5b506103f5610929366004612452565b611533565b34801561093a57600080fd5b506103f560135481565b34801561095057600080fd5b50601a5461065f906001600160a01b031681565b34801561097057600080fd5b506103f561097f3660046127c2565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b3480156109b657600080fd5b506103dd6109c53660046127f0565b61157b565b3480156109d657600080fd5b506103dd6109e53660046125b5565b6115c2565b3480156109f657600080fd5b50601c5461065f906001600160a01b031681565b348015610a1657600080fd5b5060195461065f906001600160a01b031681565b348015610a3657600080fd5b506103dd610a45366004612452565b6115ff565b348015610a5657600080fd5b506103dd610a65366004612729565b61162e565b348015610a7657600080fd5b506103dd610a85366004612452565b611679565b348015610a9657600080fd5b506103dd610aa5366004612729565b6116c4565b348015610ab657600080fd5b506103dd610ac5366004612746565b61175a565b348015610ad657600080fd5b50601f5461065f906001600160a01b031681565b348015610af657600080fd5b506103f560145481565b348015610b0c57600080fd5b5061047e610b1b366004612729565b600b6020526000908152604090205460ff1681565b348015610b3c57600080fd5b5061047e610b4b366004612729565b6117aa565b348015610b5c57600080fd5b506103f560175481565b348015610b7257600080fd5b5060215461047e90600160a01b900460ff1681565b6000546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610bb19061280e565b60405180910390fd5b61271081600554610bcb9190612844565b610bd59190612863565b60075550565b6000546001600160a01b03163314610c055760405162461bcd60e51b8152600401610bb19061280e565b60005b82811015610c745781600d6000868685818110610c2757610c27612885565b9050602002016020810190610c3c9190612729565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610c6d8161289b565b9050610c08565b50505050565b3360008181526009602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610cd59086815260200190565b60405180910390a35060015b92915050565b6000546001600160a01b03163314610d115760405162461bcd60e51b8152600401610bb19061280e565b60218054911515600160a01b0260ff60a01b19909216919091179055565b600082610d3b83611533565b119392505050565b610d4c336117aa565b610d685760405162461bcd60e51b8152600401610bb1906128b6565b601880546001600160a01b03199081166001600160a01b039788161790915560198054821695871695909517909455601a8054851693861693909317909255601c80548416918516919091179055601b80549092169216919091179055565b6000546001600160a01b03163314610df15760405162461bcd60e51b8152600401610bb19061280e565b6101f58310610e585760405162461bcd60e51b815260206004820152602d60248201527f474153204572726f723a206d61782061697264726f70206c696d69742069732060448201526c3530302061646472657373657360981b6064820152608401610bb1565b828114610eb85760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b6064820152608401610bb1565b6000805b84811015610efc57838382818110610ed657610ed6612885565b9050602002013582610ee891906128db565b915080610ef48161289b565b915050610ebc565b5080610f1d876001600160a01b031660009081526008602052604090205490565b1015610f6b5760405162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c657400000000006044820152606401610bb1565b60005b84811015610fd257610fbf87878784818110610f8c57610f8c612885565b9050602002016020810190610fa19190612729565b868685818110610fb357610fb3612885565b905060200201356117c8565b5080610fca8161289b565b915050610f6e565b50505050505050565b610fe4336117aa565b6110005760405162461bcd60e51b8152600401610bb1906128b6565b47336108fc60646110118585612844565b61101b9190612863565b6040518115909202916000818181858888f19350505050158015611043573d6000803e3d6000fd5b505050565b611051336117aa565b61106d5760405162461bcd60e51b8152600401610bb1906128b6565b601d91909155601e55565b6001600160a01b038316600090815260096020908152604080832033845290915281205460001914611125576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b038716600090815260098252838120338252909152919091205461110091849061189c565b6001600160a01b03851660009081526009602090815260408083203384529091529020555b6111308484846118d6565b90505b9392505050565b6004546001600160a01b0316600090815260086020526040812054611187906003546001600160a01b03166000908152600860205260409020546111819060055490611c77565b90611c77565b905090565b6000610ce182600019610c7a565b6111a3336117aa565b6111bf5760405162461bcd60e51b8152600401610bb1906128b6565b600655565b6000546001600160a01b031633146111ee5760405162461bcd60e51b8152600401610bb19061280e565b600a805460ff1916911515919091179055565b61120a336117aa565b6112265760405162461bcd60e51b8152600401610bb1906128b6565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b600080546001600160a01b0316331461127c5760405162461bcd60e51b8152600401610bb19061280e565b816112fb576040516370a0823160e01b81523060048201526001600160a01b038416906370a082319060240160206040518083038186803b1580156112c057600080fd5b505afa1580156112d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f891906128f3565b91505b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b15801561134357600080fd5b505af1158015611357573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061290c565b611384336117aa565b6113a05760405162461bcd60e51b8152600401610bb1906128b6565b601086905560138590556011849055601283905560148290556113d1826113cb858188818c8c611cb9565b90611cb9565b60155560168190556113e4600282612863565b601554106114345760405162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e20353025000000006044820152606401610bb1565b505050505050565b6000546001600160a01b031633146114665760405162461bcd60e51b8152600401610bb19061280e565b60005b82811015610c745781600b600086868581811061148857611488612885565b905060200201602081019061149d9190612729565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790556114ce8161289b565b9050611469565b60006111333384846118d6565b6000546001600160a01b0316331461150c5760405162461bcd60e51b8152600401610bb19061280e565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b6000610ce161154061113a565b602080546001600160a01b03166000908152600890915260409020546115759061156e906002905b90611d18565b8590611d18565b90611d97565b611584336117aa565b6115a05760405162461bcd60e51b8152600401610bb1906128b6565b60218054921515600160a81b0260ff60a81b1990931692909217909155602255565b6000546001600160a01b031633146115ec5760405162461bcd60e51b8152600401610bb19061280e565b600c805460ff1916911515919091179055565b6000546001600160a01b031633146116295760405162461bcd60e51b8152600401610bb19061280e565b601755565b6000546001600160a01b031633146116585760405162461bcd60e51b8152600401610bb19061280e565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b031633146116a35760405162461bcd60e51b8152600401610bb19061280e565b612710816005546116b49190612844565b6116be9190612863565b60065550565b6000546001600160a01b031633146116ee5760405162461bcd60e51b8152600401610bb19061280e565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611763336117aa565b61177f5760405162461bcd60e51b8152600401610bb1906128b6565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6001600160a01b031660009081526001602052604090205460ff1690565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260089091529182205461181991849061189c565b6001600160a01b0380861660009081526008602052604080822093909355908516815220546118489083611cb9565b6001600160a01b0380851660008181526008602052604090819020939093559151908616906000805160206129e08339815191529061188a9086815260200190565b60405180910390a35060019392505050565b600081848411156118c05760405162461bcd60e51b8152600401610bb1919061251f565b5060006118cd8486612929565b95945050505050565b60235460009060ff16156118f6576118ef8484846117c8565b9050611133565b6001600160a01b03841660009081526001602052604090205460ff1615801561193857506001600160a01b03831660009081526001602052604090205460ff16155b1561198d57602154600160a01b900460ff1661198d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610bb1565b600a5460ff16156119ef576001600160a01b0384166000908152600b602052604090205460ff16156119ef5760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610bb1565b6001600160a01b03841660009081526001602052604090205460ff16158015611a2157506001600160a01b0383163014155b8015611a3b57506003546001600160a01b03848116911614155b8015611a5557506020546001600160a01b03848116911614155b8015611a6f5750601c546001600160a01b03848116911614155b15611b10576001600160a01b038316600090815260086020526040902054600754611a9a84836128db565b1115611b0e5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610bb1565b505b611b1a8483611dd9565b611b22611e46565b15611b2f57611b2f611e9c565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038716600090815260089091529190912054611b8191849061189c565b6001600160a01b038516600090815260086020908152604080832093909355600e90529081205460ff16151580611bd257506001600160a01b0384166000908152600e602052604090205460ff1615155b611bfa57602054611bf590869085906001600160a01b0388811691161487612292565b611bfc565b825b6001600160a01b038516600090815260086020526040902054909150611c229082611cb9565b6001600160a01b0380861660008181526008602052604090819020939093559151908716906000805160206129e083398151915290611c649085815260200190565b60405180910390a3506001949350505050565b600061113383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061189c565b600080611cc683856128db565b9050838110156111335760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bb1565b600082611d2757506000610ce1565b6000611d338385612844565b905082611d408583612863565b146111335760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bb1565b600061113383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612424565b60065481111580611e0257506001600160a01b0382166000908152600f602052604090205460ff165b611e425760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610bb1565b5050565b6020546000906001600160a01b03163314801590611e67575060235460ff16155b8015611e7c5750602154600160a81b900460ff165b801561118757505060225430600090815260086020526040902054101590565b6023805460ff19166001179055601d54601e54600091611ebb91610d2f565b611ec757601054611eca565b60005b90506000611eee600261157560155461157586602254611d1890919063ffffffff16565b90506000611f0782602254611c7790919063ffffffff16565b60408051600280825260608201835292935060009290916020830190803683370190505090503081600081518110611f4157611f41612885565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611f7257611f72612885565b6001600160a01b039283166020918202929092010152601f5460405163791ac94760e01b81524792919091169063791ac94790611fbc908690600090879030904290600401612940565b600060405180830381600087803b158015611fd657600080fd5b505af1158015611fea573d6000803e3d6000fd5b5050505060006120038247611c7790919063ffffffff16565b9050600061201e612015886002611d97565b60155490611c77565b9050600061203360026115758481878d611d18565b905060006120508361157560115487611d1890919063ffffffff16565b9050600061206d8461157560135488611d1890919063ffffffff16565b9050600061208a8561157560125489611d1890919063ffffffff16565b6019546040519192506000916001600160a01b039091169085908381818185875af1925050503d80600081146120dc576040519150601f19603f3d011682016040523d82523d6000602084013e6120e1565b606091505b5050601a546040519192506001600160a01b0316908390600081818185875af1925050503d8060008114612131576040519150601f19603f3d011682016040523d82523d6000602084013e612136565b606091505b5050601b546040519192506001600160a01b0316908490600081818185875af1925050503d8060008114612186576040519150601f19603f3d011682016040523d82523d6000602084013e61218b565b606091505b5060009250508b15905061227a57601f5460185460405163f305d71960e01b8152306004820152602481018e905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990879060c4016060604051808303818588803b15801561220457600080fd5b505af1158015612218573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061223d91906129b1565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b50506023805460ff1916905550505050505050505050565b600080836122a15760646122a5565b6017545b600c5490915060ff1680156122d357506001600160a01b0383166000908152600d602052604090205460ff16155b80156122dd575083155b156122e757506105785b600061231460165460646122fb9190612844565b611575846115686015548b611d1890919063ffffffff16565b9050600061233360155461157560145485611d1890919063ffffffff16565b905060006123418383611c77565b3060009081526008602052604090205490915061235e9082611cb9565b3060009081526008602052604080822092909255601c546001600160a01b03168152205461238c9083611cb9565b601c546001600160a01b0390811660009081526008602090815260409182902093909355518381523092918c16916000805160206129e0833981519152910160405180910390a3811561240d57601c546040518381526001600160a01b03918216918b16906000805160206129e08339815191529060200160405180910390a35b6124178884611c77565b9998505050505050505050565b600081836124455760405162461bcd60e51b8152600401610bb1919061251f565b5060006118cd8486612863565b60006020828403121561246457600080fd5b5035919050565b60008083601f84011261247d57600080fd5b50813567ffffffffffffffff81111561249557600080fd5b6020830191508360208260051b85010111156124b057600080fd5b9250929050565b80151581146124c557600080fd5b50565b6000806000604084860312156124dd57600080fd5b833567ffffffffffffffff8111156124f457600080fd5b6125008682870161246b565b9094509250506020840135612514816124b7565b809150509250925092565b600060208083528351808285015260005b8181101561254c57858101830151858201604001528201612530565b8181111561255e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146124c557600080fd5b6000806040838503121561259c57600080fd5b82356125a781612574565b946020939093013593505050565b6000602082840312156125c757600080fd5b8135611133816124b7565b600080604083850312156125e557600080fd5b50508035926020909101359150565b600080600080600060a0868803121561260c57600080fd5b853561261781612574565b9450602086013561262781612574565b9350604086013561263781612574565b9250606086013561264781612574565b9150608086013561265781612574565b809150509295509295909350565b60008060008060006060868803121561267d57600080fd5b853561268881612574565b9450602086013567ffffffffffffffff808211156126a557600080fd5b6126b189838a0161246b565b909650945060408801359150808211156126ca57600080fd5b506126d78882890161246b565b969995985093965092949392505050565b6000806000606084860312156126fd57600080fd5b833561270881612574565b9250602084013561271881612574565b929592945050506040919091013590565b60006020828403121561273b57600080fd5b813561113381612574565b6000806040838503121561275957600080fd5b823561276481612574565b91506020830135612774816124b7565b809150509250929050565b60008060008060008060c0878903121561279857600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b600080604083850312156127d557600080fd5b82356127e081612574565b9150602083013561277481612574565b6000806040838503121561280357600080fd5b82356125a7816124b7565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561285e5761285e61282e565b500290565b60008261288057634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b60006000198214156128af576128af61282e565b5060010190565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b600082198211156128ee576128ee61282e565b500190565b60006020828403121561290557600080fd5b5051919050565b60006020828403121561291e57600080fd5b8151611133816124b7565b60008282101561293b5761293b61282e565b500390565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129905784516001600160a01b03168352938301939183019160010161296b565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156129c657600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122099c81314e1e9a5451d2ba7bca3e7846c3ba61ecb9935d8db5fdcc3d12a622e7a64736f6c63430008090033

Deployed ByteCode Sourcemap

4737:14093:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9156:181;;;;;;;;;;-1:-1:-1;9156:181:0;;;;;:::i;:::-;;:::i;:::-;;6538:54;;;;;;;;;;;;;;;;;;;345:25:1;;;333:2;318:18;6538:54:0;;;;;;;;15819:210;;;;;;;;;;-1:-1:-1;15819:210:0;;;;;:::i;:::-;;:::i;7838:80::-;;;;;;;;;;-1:-1:-1;7910:5:0;;;;;;;;;;;-1:-1:-1;;;7910:5:0;;;;7838:80;;;;7910:5;7838:80;:::i;8260:216::-;;;;;;;;;;-1:-1:-1;8260:216:0;;;;;:::i;:::-;;:::i;:::-;;;2670:14:1;;2663:22;2645:41;;2633:2;2618:18;8260:216:0;2505:187:1;13393:94:0;;;;;;;;;;-1:-1:-1;13393:94:0;;;;;:::i;:::-;;:::i;17988:150::-;;;;;;;;;;-1:-1:-1;17988:150:0;;;;;:::i;:::-;;:::i;5992:36::-;;;;;;;;;;;;;;;;7568:88;;;;;;;;;;-1:-1:-1;7641:12:0;;7568:88;;16858:438;;;;;;;;;;-1:-1:-1;16858:438:0;;;;;:::i;:::-;;:::i;18168:594::-;;;;;;;;;;-1:-1:-1;18168:594:0;;;;;:::i;:::-;;:::i;12744:208::-;;;;;;;;;;-1:-1:-1;12744:208:0;;;;;:::i;:::-;;:::i;5896:89::-;;;;;;;;;;;;;;;;17468:183;;;;;;;;;;-1:-1:-1;17468:183:0;;;;;:::i;:::-;;:::i;8778:370::-;;;;;;;;;;-1:-1:-1;8778:370:0;;;;;:::i;:::-;;:::i;17663:142::-;;;;;;;;;;;;;:::i;2745:103::-;;;;;;;;;;-1:-1:-1;2745:103:0;;;;;:::i;:::-;2800:4;2835:5;-1:-1:-1;;;;;2824:16:0;;;2835:5;;2824:16;;2745:103;7662:80;;;;;;;;;;-1:-1:-1;7662:80:0;;5114:1;5782:36:1;;5770:2;5755:18;7662:80:0;5640:184:1;5543:46:0;;;;;;;;;;-1:-1:-1;5543:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;6203:30;;;;;;;;;;-1:-1:-1;6203:30:0;;;;-1:-1:-1;;;;;6203:30:0;;;;;;-1:-1:-1;;;;;5993:32:1;;;5975:51;;5963:2;5948:18;6203:30:0;5829:203:1;6421:31:0;;;;;;;;;;-1:-1:-1;6421:31:0;;;;-1:-1:-1;;;;;6421:31:0;;;8484:122;;;;;;;;;;-1:-1:-1;8484:122:0;;;;;:::i;:::-;;:::i;9527:96::-;;;;;;;;;;-1:-1:-1;9527:96:0;;;;;:::i;:::-;;:::i;15387:99::-;;;;;;;;;;-1:-1:-1;15387:99:0;;;;;:::i;:::-;;:::i;16037:120::-;;;;;;;;;;-1:-1:-1;16037:120:0;;;;;:::i;:::-;;:::i;5774:33::-;;;;;;;;;;;;;;;;5733:34;;;;;;;;;;;;;;;;6499:30;;;;;;;;;;-1:-1:-1;6499:30:0;;;;-1:-1:-1;;;6499:30:0;;;;;;8008:105;;;;;;;;;;-1:-1:-1;8008:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;8092:18:0;8074:7;8092:18;;;:9;:18;;;;;;;8008:105;5504:32;;;;;;;;;;-1:-1:-1;5504:32:0;;;;;;;;12960:271;;;;;;;;;;-1:-1:-1;12960:271:0;;;;;:::i;:::-;;:::i;5236:50::-;;;;;;;;;;;;;;;;5182:47;;;;;;;;;;;;;;;;16301:549;;;;;;;;;;-1:-1:-1;16301:549:0;;;;;:::i;:::-;;:::i;7924:78::-;;;;;;;;;;-1:-1:-1;7976:7:0;7994:5;-1:-1:-1;;;;;7994:5:0;7924:78;;5410:32;;;;;;;;;;-1:-1:-1;5410:32:0;;;;;;;;15601:210;;;;;;;;;;-1:-1:-1;15601:210:0;;;;;:::i;:::-;;:::i;5692:34::-;;;;;;;;;;;;;;;;6395:19;;;;;;;;;;-1:-1:-1;6395:19:0;;;;-1:-1:-1;;;;;6395:19:0;;;8614:156;;;;;;;;;;-1:-1:-1;8614:156:0;;;;;:::i;:::-;;:::i;2538:94::-;;;;;;;;;;-1:-1:-1;2538:94:0;;;;;:::i;:::-;;:::i;6082:36::-;;;;;;;;;;-1:-1:-1;6082:36:0;;;;-1:-1:-1;;;;;6082:36:0;;;17813:167;;;;;;;;;;-1:-1:-1;17813:167:0;;;;;:::i;:::-;;:::i;5814:34::-;;;;;;;;;;;;;;;;6167:29;;;;;;;;;;-1:-1:-1;6167:29:0;;;;-1:-1:-1;;;;;6167:29:0;;;8119:133;;;;;;;;;;-1:-1:-1;8119:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;8221:19:0;;;8203:7;8221:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;8119:133;17304:156;;;;;;;;;;-1:-1:-1;17304:156:0;;;;;:::i;:::-;;:::i;15494:99::-;;;;;;;;;;-1:-1:-1;15494:99:0;;;;;:::i;:::-;;:::i;6240:30::-;;;;;;;;;;-1:-1:-1;6240:30:0;;;;-1:-1:-1;;;;;6240:30:0;;;6125:35;;;;;;;;;;-1:-1:-1;6125:35:0;;;;-1:-1:-1;;;;;6125:35:0;;;13239:123;;;;;;;;;;-1:-1:-1;13239:123:0;;;;;:::i;:::-;;:::i;2640:97::-;;;;;;;;;;-1:-1:-1;2640:97:0;;;;;:::i;:::-;;:::i;9343:176::-;;;;;;;;;;-1:-1:-1;9343:176:0;;;;;:::i;:::-;;:::i;2971:173::-;;;;;;;;;;-1:-1:-1;2971:173:0;;;;;:::i;:::-;;:::i;16165:128::-;;;;;;;;;;-1:-1:-1;16165:128:0;;;;;:::i;:::-;;:::i;6364:24::-;;;;;;;;;;-1:-1:-1;6364:24:0;;;;-1:-1:-1;;;;;6364:24:0;;;5855:34;;;;;;;;;;;;;;;;5449:46;;;;;;;;;;-1:-1:-1;5449:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;2856:107;;;;;;;;;;-1:-1:-1;2856:107:0;;;;;:::i;:::-;;:::i;6037:36::-;;;;;;;;;;;;;;;;6461:31;;;;;;;;;;-1:-1:-1;6461:31:0;;;;-1:-1:-1;;;6461:31:0;;;;;;9156:181;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;;;;;;;;;9324:5:::1;9295:24;9280:12;;:39;;;;:::i;:::-;9279:50;;;;:::i;:::-;9261:15;:68:::0;-1:-1:-1;9156:181:0:o;15819:210::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15921:9:::1;15916:106;15932:20:::0;;::::1;15916:106;;;16004:6;15974:13;:27;15988:9;;15998:1;15988:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15974:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15974:27:0;:36;;-1:-1:-1;;15974:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15954:3:::1;::::0;::::1;:::i;:::-;;;15916:106;;;;15819:210:::0;;;:::o;8260:216::-;8364:10;8335:4;8352:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;8352:32:0;;;;;;;;;;:41;;;8409:37;8335:4;;8352:32;;8409:37;;;;8387:6;345:25:1;;333:2;318:18;;199:177;8409:37:0;;;;;;;;-1:-1:-1;8464:4:0;8260:216;;;;;:::o;13393:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;13458:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;13458:21:0::1;-1:-1:-1::0;;;;13458:21:0;;::::1;::::0;;;::::1;::::0;;13393:94::o;17988:150::-;18068:4;18124:6;18092:29;18112:8;18092:19;:29::i;:::-;:38;;17988:150;-1:-1:-1;;;17988:150:0:o;16858:438::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;17054:21:::1;:46:::0;;-1:-1:-1;;;;;;17054:46:0;;::::1;-1:-1:-1::0;;;;;17054:46:0;;::::1;;::::0;;;17111:20:::1;:44:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17166:14:::1;:32:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;17209:15:::1;:34:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;17254:15:::1;:34:::0;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;16858:438::o;18168:594::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;18317:3:::1;18298:22:::0;::::1;18290:79;;;::::0;-1:-1:-1;;;18290:79:0;;10047:2:1;18290:79:0::1;::::0;::::1;10029:21:1::0;10086:2;10066:18;;;10059:30;10125:34;10105:18;;;10098:62;-1:-1:-1;;;10176:18:1;;;10169:43;10229:19;;18290:79:0::1;9845:409:1::0;18290:79:0::1;18384:33:::0;;::::1;18376:85;;;::::0;-1:-1:-1;;;18376:85:0;;10461:2:1;18376:85:0::1;::::0;::::1;10443:21:1::0;10500:2;10480:18;;;10473:30;10539:34;10519:18;;;10512:62;-1:-1:-1;;;10590:18:1;;;10583:38;10638:19;;18376:85:0::1;10259:404:1::0;18376:85:0::1;18470:12;18499:6:::0;18495:82:::1;18509:20:::0;;::::1;18495:82;;;18560:6;;18567:1;18560:9;;;;;;;:::i;:::-;;;;;;;18553:4;:16;;;;:::i;:::-;18546:23:::0;-1:-1:-1;18531:3:0;::::1;::::0;::::1;:::i;:::-;;;;18495:82;;;;18612:4;18593:15;18603:4;-1:-1:-1::0;;;;;8092:18:0;8074:7;8092:18;;;:9;:18;;;;;;;8008:105;18593:15:::1;:23;;18585:63;;;::::0;-1:-1:-1;;;18585:63:0;;11003:2:1;18585:63:0::1;::::0;::::1;10985:21:1::0;11042:2;11022:18;;;11015:30;11081:29;11061:18;;;11054:57;11128:18;;18585:63:0::1;10801:351:1::0;18585:63:0::1;18661:6;18657:102;18671:20:::0;;::::1;18657:102;;;18708:43;18723:4;18728:9;;18738:1;18728:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18741:6;;18748:1;18741:9;;;;;;;:::i;:::-;;;;;;;18708:14;:43::i;:::-;-1:-1:-1::0;18693:3:0;::::1;::::0;::::1;:::i;:::-;;;;18657:102;;;;18281:481;18168:594:::0;;;;;:::o;12744:208::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;12848:21:::1;12888:10;12880:64;12940:3;12909:28;12921:16:::0;12848:21;12909:28:::1;:::i;:::-;:34;;;;:::i;:::-;12880:64;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;12817:135;12744:208:::0;:::o;17468:183::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;17566:15:::1;:25:::0;;;;17602:26:::1;:41:::0;17468:183::o;8778:370::-;-1:-1:-1;;;;;8898:19:0;;8878:4;8898:19;;;:11;:19;;;;;;;;8918:10;8898:31;;;;;;;;-1:-1:-1;;8898:52:0;8895:186;;9000:69;;;;;;;;;;;-1:-1:-1;;;9000:69:0;;;;;;;;-1:-1:-1;;;;;9000:19:0;;-1:-1:-1;9000:19:0;;;:11;:19;;;;;9020:10;9000:31;;;;;;;;;;:69;;9036:6;;9000:35;:69::i;:::-;-1:-1:-1;;;;;8966:19:0;;;;;;:11;:19;;;;;;;;8986:10;8966:31;;;;;;;:103;8895:186;9100:40;9114:6;9122:9;9133:6;9100:13;:40::i;:::-;9093:47;;8778:370;;;;;;:::o;17663:142::-;17791:4;;-1:-1:-1;;;;;17791:4:0;17716:7;8092:18;;;:9;:18;;;;;;17743:54;;17770:4;;-1:-1:-1;;;;;17770:4:0;8074:7;8092:18;;;:9;:18;;;;;;17743:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;17736:61;;17663:142;:::o;8484:122::-;8539:4;8563:35;8571:7;-1:-1:-1;;8563:7:0;:35::i;9527:96::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;9594:12:::1;:21:::0;9527:96::o;15387:99::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15455:13:::1;:23:::0;;-1:-1:-1;;15455:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15387:99::o;16037:120::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16121:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;16121:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16037:120::o;12960:271::-;13049:4;2835:5;;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;13066:11;13063:95:::1;;13102:44;::::0;-1:-1:-1;;;13102:44:0;;13140:4:::1;13102:44;::::0;::::1;5975:51:1::0;-1:-1:-1;;;;;13102:29:0;::::1;::::0;::::1;::::0;5948:18:1;;13102:44:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13093:53;;13063:95;13175:48;::::0;-1:-1:-1;;;13175:48:0;;13204:10:::1;13175:48;::::0;::::1;11520:51:1::0;11587:18;;;11580:34;;;-1:-1:-1;;;;;13175:28:0;::::1;::::0;::::1;::::0;11493:18:1;;13175:48:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16301:549::-:0;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;16473:12:::1;:28:::0;;;16512:7:::1;:18:::0;;;16541:12:::1;:28:::0;;;16580:6:::1;:16:::0;;;16607:7:::1;:18:::0;;;16647:73:::1;16617:8:::0;16647:59:::1;16589:7:::0;16647:59;16556:13;16647:59;16488:13;16522:8;16647:17:::1;:27::i;:::-;:31:::0;::::1;:46::i;:73::-;16636:8;:84:::0;16731:14:::1;:32:::0;;;16793:16:::1;16808:1;16748:15:::0;16793:16:::1;:::i;:::-;16782:8;;:27;16774:68;;;::::0;-1:-1:-1;;;16774:68:0;;12077:2:1;16774:68:0::1;::::0;::::1;12059:21:1::0;12116:2;12096:18;;;12089:30;12155;12135:18;;;12128:58;12203:18;;16774:68:0::1;11875:352:1::0;16774:68:0::1;16301:549:::0;;;;;;:::o;15601:210::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15703:9:::1;15698:106;15714:20:::0;;::::1;15698:106;;;15786:6;15756:13;:27;15770:9;;15780:1;15770:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15756:27:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;15756:27:0;:36;;-1:-1:-1;;15756:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15736:3:::1;::::0;::::1;:::i;:::-;;;15698:106;;8614:156:::0;8694:4;8718:44;8732:10;8744:9;8755:6;8718:13;:44::i;2538:94::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2598:19:0::1;;::::0;;;2620:4:::1;2598:19;::::0;;;;;;;:26;;-1:-1:-1;;2598:26:0::1;::::0;;::::1;::::0;;2538:94::o;17813:167::-;17881:7;17908:64;17949:22;:20;:22::i;:::-;17931:4;;;-1:-1:-1;;;;;17931:4:0;8074:7;8092:18;;;:9;:18;;;;;;;17908:36;;17921:22;;17941:1;;17921:15;:19;;:22::i;:::-;17908:8;;:12;:36::i;:::-;:40;;:64::i;17304:156::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;17396:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;17396:22:0::1;-1:-1:-1::0;;;;17396:22:0;;::::1;::::0;;;::::1;::::0;;;17429:13:::1;:23:::0;17304:156::o;15494:99::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;15562:13:::1;:23:::0;;-1:-1:-1;;15562:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15494:99::o;13239:123::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;13318:14:::1;:28:::0;13239:123::o;2640:97::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2702:19:0::1;2724:5;2702:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;2702:27:0::1;::::0;;2640:97::o;9343:176::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;9506:5:::1;9476:25;9461:12;;:40;;;;:::i;:::-;9460:51;;;;:::i;:::-;9445:12;:66:::0;-1:-1:-1;9343:176:0:o;2971:173::-;2800:4;2835:5;-1:-1:-1;;;;;2835:5:0;2397:10;2824:16;2381:38;;;;-1:-1:-1;;;2381:38:0;;;;;;;:::i;:::-;3047:5:::1;:11:::0;;-1:-1:-1;;;;;;3047:11:0::1;-1:-1:-1::0;;;;;3047:11:0;::::1;::::0;;::::1;::::0;;3069:19;;;-1:-1:-1;3069:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;3069:26:0::1;::::0;;::::1;::::0;;;3111:25;;5975:51:1;;;3111:25:0::1;::::0;5948:18:1;3111:25:0::1;;;;;;;2971:173:::0;:::o;16165:128::-;2479:24;2492:10;2479:12;:24::i;:::-;2471:48;;;;-1:-1:-1;;;2471:48:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16253:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;16253:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16165:128::o;2856:107::-;-1:-1:-1;;;;;2936:19:0;2912:4;2936:19;;;:14;:19;;;;;;;;;2856:107::o;10986:330::-;11116:53;;;;;;;;;;;-1:-1:-1;;;11116:53:0;;;;;;;;-1:-1:-1;;;;;11116:17:0;;11079:4;11116:17;;;:9;:17;;;;;;;:53;;11138:6;;11116:21;:53::i;:::-;-1:-1:-1;;;;;11096:17:0;;;;;;;:9;:17;;;;;;:73;;;;11203:20;;;;;;;:32;;11228:6;11203:24;:32::i;:::-;-1:-1:-1;;;;;11180:20:0;;;;;;;:9;:20;;;;;;;:55;;;;11251:35;;;;;;-1:-1:-1;;;;;;;;;;;11251:35:0;;;11279:6;345:25:1;;333:2;318:18;;199:177;11251:35:0;;;;;;;;-1:-1:-1;11304:4:0;10986:330;;;;;:::o;422:192::-;508:7;544:12;536:6;;;;528:29;;;;-1:-1:-1;;;528:29:0;;;;;;;;:::i;:::-;-1:-1:-1;568:9:0;580:5;584:1;580;:5;:::i;:::-;568:17;422:192;-1:-1:-1;;;;;422:192:0:o;9631:1343::-;9743:6;;9723:4;;9743:6;;9740:63;;;9759:41;9774:6;9782:9;9793:6;9759:14;:41::i;:::-;9752:48;;;;9740:63;-1:-1:-1;;;;;9819:22:0;;;;;;:14;:22;;;;;;;;9818:23;:53;;;;-1:-1:-1;;;;;;9846:25:0;;;;;;:14;:25;;;;;;;;9845:26;9818:53;9815:127;;;9895:11;;-1:-1:-1;;;9895:11:0;;;;9887:43;;;;-1:-1:-1;;;9887:43:0;;12780:2:1;9887:43:0;;;12762:21:1;12819:2;12799:18;;;12792:30;-1:-1:-1;;;12838:18:1;;;12831:50;12898:18;;9887:43:0;12578:344:1;9887:43:0;9979:13;;;;9976:93;;;-1:-1:-1;;;;;10017:21:0;;;;;;:13;:21;;;;;;;;10016:22;10008:45;;;;-1:-1:-1;;;10008:45:0;;13129:2:1;10008:45:0;;;13111:21:1;13168:2;13148:18;;;13141:30;-1:-1:-1;;;13187:18:1;;;13180:41;13238:18;;10008:45:0;12927:335:1;10008:45:0;-1:-1:-1;;;;;10086:22:0;;;;;;:14;:22;;;;;;;;10085:23;:53;;;;-1:-1:-1;;;;;;10112:26:0;;10133:4;10112:26;;10085:53;:84;;;;-1:-1:-1;10164:4:0;;-1:-1:-1;;;;;10143:26:0;;;10164:4;;10143:26;;10085:84;:105;;;;-1:-1:-1;10186:4:0;;-1:-1:-1;;;;;10173:17:0;;;10186:4;;10173:17;;10085:105;:137;;;;-1:-1:-1;10207:15:0;;-1:-1:-1;;;;;10194:28:0;;;10207:15;;10194:28;;10085:137;10081:329;;;-1:-1:-1;;;;;8092:18:0;;10238;8092;;;:9;:18;;;;;;10327:15;;10303:19;10316:6;8092:18;10303:19;:::i;:::-;10302:40;;10294:114;;;;-1:-1:-1;;;10294:114:0;;13469:2:1;10294:114:0;;;13451:21:1;13508:2;13488:18;;;13481:30;13547:34;13527:18;;;13520:62;13618:32;13598:18;;;13591:60;13668:19;;10294:114:0;13267:426:1;10294:114:0;10223:187;10081:329;10465:28;10478:6;10486;10465:12;:28::i;:::-;10509:16;:14;:16::i;:::-;10506:35;;;10528:10;:8;:10::i;:::-;10600:53;;;;;;;;;;;-1:-1:-1;;;10600:53:0;;;;;;;;-1:-1:-1;;;;;10600:17:0;;-1:-1:-1;10600:17:0;;;:9;:17;;;;;;;;:53;;10622:6;;10600:21;:53::i;:::-;-1:-1:-1;;;;;10580:17:0;;;;;;:9;:17;;;;;;;;:73;;;;11585:11;:19;;;;;;;;11584:20;10692:22;:51;;;-1:-1:-1;;;;;;11585:19:0;;11560:4;11585:19;;;:11;:19;;;;;;;;11584:20;10718:25;10692:51;10691:118;;10793:4;;10756:53;;10764:6;;10772;;-1:-1:-1;;;;;10780:17:0;;;10793:4;;10780:17;:9;10756:7;:53::i;:::-;10691:118;;;10747:6;10691:118;-1:-1:-1;;;;;10843:20:0;;;;;;:9;:20;;;;;;10666:143;;-1:-1:-1;10843:40:0;;10666:143;10843:24;:40::i;:::-;-1:-1:-1;;;;;10820:20:0;;;;;;;:9;:20;;;;;;;:63;;;;10901:43;;;;;;-1:-1:-1;;;;;;;;;;;10901:43:0;;;10929:14;345:25:1;;333:2;318:18;;199:177;10901:43:0;;;;;;;;-1:-1:-1;10962:4:0;;9631:1343;-1:-1:-1;;;;9631:1343:0:o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;93:181::-;151:7;;183:5;187:1;183;:5;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;-1:-1:-1;;;199:46:0;;13900:2:1;199:46:0;;;13882:21:1;13939:2;13919:18;;;13912:30;13978:29;13958:18;;;13951:57;14025:18;;199:46:0;13698:351:1;620:250:0;678:7;702:6;698:47;;-1:-1:-1;732:1:0;725:8;;698:47;757:9;769:5;773:1;769;:5;:::i;:::-;757:17;-1:-1:-1;802:1:0;793:5;797:1;757:17;793:5;:::i;:::-;:10;785:56;;;;-1:-1:-1;;;785:56:0;;14256:2:1;785:56:0;;;14238:21:1;14295:2;14275:18;;;14268:30;14334:34;14314:18;;;14307:62;-1:-1:-1;;;14385:18:1;;;14378:31;14426:19;;785:56:0;14054:397:1;876:132:0;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;11324:166::-;11421:12;;11411:6;:22;;:49;;;-1:-1:-1;;;;;;11437:23:0;;;;;;:15;:23;;;;;;;;11411:49;11403:79;;;;-1:-1:-1;;;11403:79:0;;14658:2:1;11403:79:0;;;14640:21:1;14697:2;14677:18;;;14670:30;-1:-1:-1;;;14716:18:1;;;14709:47;14773:18;;11403:79:0;14456:341:1;11403:79:0;11324:166;;:::o;12539:197::-;12626:4;;12588;;-1:-1:-1;;;;;12626:4:0;12612:10;:18;;;;:38;;-1:-1:-1;12644:6:0;;;;12643:7;12612:38;:62;;;;-1:-1:-1;12663:11:0;;-1:-1:-1;;;12663:11:0;;;;12612:62;:116;;;;-1:-1:-1;;12715:13:0;;12705:4;12687:24;;;;:9;:24;;;;;;:41;;;12539:197::o;13495:1884::-;6639:6;:13;;-1:-1:-1;;6639:13:0;6648:4;6639:13;;;13590:15:::1;::::0;13607:26:::1;::::0;6639:6;;13574:60:::1;::::0;:15:::1;:60::i;:::-;:79;;13641:12;;13574:79;;;13637:1;13574:79;13544:109;;13664:23;13690:59;13747:1;13690:52;13733:8;;13690:38;13708:19;13690:13;;:17;;:38;;;;:::i;:59::-;13664:85;;13760:20;13783:34;13801:15;13783:13;;:17;;:34;;;;:::i;:::-;13854:16;::::0;;13868:1:::1;13854:16:::0;;;;;::::1;::::0;;13760:57;;-1:-1:-1;13830:21:0::1;::::0;13854:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;13854:16:0::1;13830:40;;13899:4;13881;13886:1;13881:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13881:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;13925:4:::1;::::0;13915:7;;13925:4;::::1;::::0;13915;;13925;;13915:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;13915:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;14000:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;14000:188:0;;13966:21:::1;::::0;14000:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;14072:12;;13942:21:::1;::::0;14115:4;;14142::::1;::::0;14162:15:::1;::::0;14000:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14201:17;14221:40;14247:13;14221:21;:25;;:40;;;;:::i;:::-;14201:60:::0;-1:-1:-1;14274:19:0::1;14296:40;14309:26;:19:::0;14333:1:::1;14309:23;:26::i;:::-;14296:8;::::0;;:12:::1;:40::i;:::-;14274:62:::0;-1:-1:-1;14357:26:0::1;14386:58;14442:1;14386:51;14274:62:::0;14386:51;:9;14400:19;14386:13:::1;:34::i;:58::-;14357:87;;14455:26;14484:44;14516:11;14484:27;14498:12;;14484:9;:13;;:27;;;;:::i;:44::-;14455:73;;14539:21;14563:39;14590:11;14563:22;14577:7;;14563:9;:13;;:22;;;;:::i;:39::-;14539:63;;14613:20;14636:38;14662:11;14636:21;14650:6;;14636:9;:13;;:21;;;;:::i;:38::-;14716:20;::::0;14708:65:::1;::::0;14613:61;;-1:-1:-1;14688:15:0::1;::::0;-1:-1:-1;;;;;14716:20:0;;::::1;::::0;14750:18;;14688:15;14708:65;14688:15;14708:65;14750:18;14716:20;14708:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14808:14:0::1;::::0;14800:53:::1;::::0;14687:86;;-1:-1:-1;;;;;;14808:14:0::1;::::0;14836:12;;14800:53:::1;::::0;;;14836:12;14808:14;14800:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;14888:15:0::1;::::0;14880:55:::1;::::0;14784:69;;-1:-1:-1;;;;;;14888:15:0::1;::::0;14917:13;;14880:55:::1;::::0;;;14917:13;14888:15;14880:55:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;14992:5:0::1;::::0;-1:-1:-1;;15013:19:0;;;-1:-1:-1;15010:362:0::1;;15048:6;::::0;15222:21:::1;::::0;15048:244:::1;::::0;-1:-1:-1;;;15048:244:0;;15124:4:::1;15048:244;::::0;::::1;16470:34:1::0;16520:18;;;16513:34;;;15048:6:0::1;16563:18:1::0;;;16556:34;;;16606:18;;;16599:34;-1:-1:-1;;;;;15222:21:0;;::::1;16649:19:1::0;;;16642:44;15262:15:0::1;16702:19:1::0;;;16695:35;15048:6:0;::::1;::::0;:22:::1;::::0;15078:18;;16404:19:1;;15048:244:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;15312:48:0::1;::::0;;17226:25:1;;;17282:2;17267:18;;17260:34;;;15312:48:0::1;::::0;-1:-1:-1;17199:18:1;15312:48:0::1;;;;;;;15010:362;-1:-1:-1::0;;6657:6:0;:14;;-1:-1:-1;;6657:14:0;;;-1:-1:-1;;;;;;;;;;13495:1884:0:o;11620:911::-;11718:7;11748:18;11769:6;:29;;11795:3;11769:29;;;11778:14;;11769:29;11812:13;;11748:50;;-1:-1:-1;11812:13:0;;:41;;;;-1:-1:-1;;;;;;11830:23:0;;;;;;:13;:23;;;;;;;;11829:24;11812:41;:52;;;;;11858:6;11857:7;11812:52;11809:100;;;-1:-1:-1;11893:4:0;11809:100;11921:17;11941:62;11982:14;;11999:3;11982:20;;;;:::i;:::-;11941:36;11966:10;11941:20;11952:8;;11941:6;:10;;:20;;;;:::i;:62::-;11921:82;;12016:18;12037:36;12064:8;;12037:22;12051:7;;12037:9;:13;;:22;;;;:::i;:36::-;12016:57;-1:-1:-1;12084:22:0;12109:25;:9;12016:57;12109:13;:25::i;:::-;12192:4;12174:24;;;;:9;:24;;;;;;12084:50;;-1:-1:-1;12174:44:0;;12084:50;12174:28;:44::i;:::-;12165:4;12147:24;;;;:9;:24;;;;;;:71;;;;12268:15;;-1:-1:-1;;;;;12268:15:0;12258:26;;;;:42;;12289:10;12258:30;:42::i;:::-;12239:15;;-1:-1:-1;;;;;12239:15:0;;;12229:26;;;;:9;:26;;;;;;;;;:71;;;;12316:47;345:25:1;;;12341:4:0;;12316:47;;;;-1:-1:-1;;;;;;;;;;;12316:47:0;318:18:1;12316:47:0;;;;;;;12387:14;;12384:99;;12439:15;;12422:45;;345:25:1;;;-1:-1:-1;;;;;12439:15:0;;;;12422:45;;;-1:-1:-1;;;;;;;;;;;12422:45:0;333:2:1;318:18;12422:45:0;;;;;;;12384:99;12502:21;:6;12513:9;12502:10;:21::i;:::-;12495:28;11620:911;-1:-1:-1;;;;;;;;;11620:911:0:o;1014:189::-;1100:7;1135:12;1128:5;1120:28;;;;-1:-1:-1;;;1120:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1159:9:0;1171:5;1175:1;1171;:5;:::i;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;381:367::-;444:8;454:6;508:3;501:4;493:6;489:17;485:27;475:55;;526:1;523;516:12;475:55;-1:-1:-1;549:20:1;;592:18;581:30;;578:50;;;624:1;621;614:12;578:50;661:4;653:6;649:17;637:29;;721:3;714:4;704:6;701:1;697:14;689:6;685:27;681:38;678:47;675:67;;;738:1;735;728:12;675:67;381:367;;;;;:::o;753:118::-;839:5;832:13;825:21;818:5;815:32;805:60;;861:1;858;851:12;805:60;753:118;:::o;876:566::-;968:6;976;984;1037:2;1025:9;1016:7;1012:23;1008:32;1005:52;;;1053:1;1050;1043:12;1005:52;1093:9;1080:23;1126:18;1118:6;1115:30;1112:50;;;1158:1;1155;1148:12;1112:50;1197:70;1259:7;1250:6;1239:9;1235:22;1197:70;:::i;:::-;1286:8;;-1:-1:-1;1171:96:1;-1:-1:-1;;1371:2:1;1356:18;;1343:32;1384:28;1343:32;1384:28;:::i;:::-;1431:5;1421:15;;;876:566;;;;;:::o;1447:597::-;1559:4;1588:2;1617;1606:9;1599:21;1649:6;1643:13;1692:6;1687:2;1676:9;1672:18;1665:34;1717:1;1727:140;1741:6;1738:1;1735:13;1727:140;;;1836:14;;;1832:23;;1826:30;1802:17;;;1821:2;1798:26;1791:66;1756:10;;1727:140;;;1885:6;1882:1;1879:13;1876:91;;;1955:1;1950:2;1941:6;1930:9;1926:22;1922:31;1915:42;1876:91;-1:-1:-1;2028:2:1;2007:15;-1:-1:-1;;2003:29:1;1988:45;;;;2035:2;1984:54;;1447:597;-1:-1:-1;;;1447:597:1:o;2049:131::-;-1:-1:-1;;;;;2124:31:1;;2114:42;;2104:70;;2170:1;2167;2160:12;2185:315;2253:6;2261;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;2369:9;2356:23;2388:31;2413:5;2388:31;:::i;:::-;2438:5;2490:2;2475:18;;;;2462:32;;-1:-1:-1;;;2185:315:1:o;2697:241::-;2753:6;2806:2;2794:9;2785:7;2781:23;2777:32;2774:52;;;2822:1;2819;2812:12;2774:52;2861:9;2848:23;2880:28;2902:5;2880:28;:::i;2943:248::-;3011:6;3019;3072:2;3060:9;3051:7;3047:23;3043:32;3040:52;;;3088:1;3085;3078:12;3040:52;-1:-1:-1;;3111:23:1;;;3181:2;3166:18;;;3153:32;;-1:-1:-1;2943:248:1:o;3196:813::-;3291:6;3299;3307;3315;3323;3376:3;3364:9;3355:7;3351:23;3347:33;3344:53;;;3393:1;3390;3383:12;3344:53;3432:9;3419:23;3451:31;3476:5;3451:31;:::i;:::-;3501:5;-1:-1:-1;3558:2:1;3543:18;;3530:32;3571:33;3530:32;3571:33;:::i;:::-;3623:7;-1:-1:-1;3682:2:1;3667:18;;3654:32;3695:33;3654:32;3695:33;:::i;:::-;3747:7;-1:-1:-1;3806:2:1;3791:18;;3778:32;3819:33;3778:32;3819:33;:::i;:::-;3871:7;-1:-1:-1;3930:3:1;3915:19;;3902:33;3944;3902;3944;:::i;:::-;3996:7;3986:17;;;3196:813;;;;;;;;:::o;4014:908::-;4145:6;4153;4161;4169;4177;4230:2;4218:9;4209:7;4205:23;4201:32;4198:52;;;4246:1;4243;4236:12;4198:52;4285:9;4272:23;4304:31;4329:5;4304:31;:::i;:::-;4354:5;-1:-1:-1;4410:2:1;4395:18;;4382:32;4433:18;4463:14;;;4460:34;;;4490:1;4487;4480:12;4460:34;4529:70;4591:7;4582:6;4571:9;4567:22;4529:70;:::i;:::-;4618:8;;-1:-1:-1;4503:96:1;-1:-1:-1;4706:2:1;4691:18;;4678:32;;-1:-1:-1;4722:16:1;;;4719:36;;;4751:1;4748;4741:12;4719:36;;4790:72;4854:7;4843:8;4832:9;4828:24;4790:72;:::i;:::-;4014:908;;;;-1:-1:-1;4014:908:1;;-1:-1:-1;4881:8:1;;4764:98;4014:908;-1:-1:-1;;;4014:908:1:o;4927:456::-;5004:6;5012;5020;5073:2;5061:9;5052:7;5048:23;5044:32;5041:52;;;5089:1;5086;5079:12;5041:52;5128:9;5115:23;5147:31;5172:5;5147:31;:::i;:::-;5197:5;-1:-1:-1;5254:2:1;5239:18;;5226:32;5267:33;5226:32;5267:33;:::i;:::-;4927:456;;5319:7;;-1:-1:-1;;;5373:2:1;5358:18;;;;5345:32;;4927:456::o;5388:247::-;5447:6;5500:2;5488:9;5479:7;5475:23;5471:32;5468:52;;;5516:1;5513;5506:12;5468:52;5555:9;5542:23;5574:31;5599:5;5574:31;:::i;6264:382::-;6329:6;6337;6390:2;6378:9;6369:7;6365:23;6361:32;6358:52;;;6406:1;6403;6396:12;6358:52;6445:9;6432:23;6464:31;6489:5;6464:31;:::i;:::-;6514:5;-1:-1:-1;6571:2:1;6556:18;;6543:32;6584:30;6543:32;6584:30;:::i;:::-;6633:7;6623:17;;;6264:382;;;;;:::o;6651:523::-;6755:6;6763;6771;6779;6787;6795;6848:3;6836:9;6827:7;6823:23;6819:33;6816:53;;;6865:1;6862;6855:12;6816:53;-1:-1:-1;;6888:23:1;;;6958:2;6943:18;;6930:32;;-1:-1:-1;7009:2:1;6994:18;;6981:32;;7060:2;7045:18;;7032:32;;-1:-1:-1;7111:3:1;7096:19;;7083:33;;-1:-1:-1;7163:3:1;7148:19;7135:33;;-1:-1:-1;6651:523:1;-1:-1:-1;6651:523:1:o;7179:388::-;7247:6;7255;7308:2;7296:9;7287:7;7283:23;7279:32;7276:52;;;7324:1;7321;7314:12;7276:52;7363:9;7350:23;7382:31;7407:5;7382:31;:::i;:::-;7432:5;-1:-1:-1;7489:2:1;7474:18;;7461:32;7502:33;7461:32;7502:33;:::i;7572:309::-;7637:6;7645;7698:2;7686:9;7677:7;7673:23;7669:32;7666:52;;;7714:1;7711;7704:12;7666:52;7753:9;7740:23;7772:28;7794:5;7772:28;:::i;8372:329::-;8574:2;8556:21;;;8613:1;8593:18;;;8586:29;-1:-1:-1;;;8646:2:1;8631:18;;8624:36;8692:2;8677:18;;8372:329::o;8706:127::-;8767:10;8762:3;8758:20;8755:1;8748:31;8798:4;8795:1;8788:15;8822:4;8819:1;8812:15;8838:168;8878:7;8944:1;8940;8936:6;8932:14;8929:1;8926:21;8921:1;8914:9;8907:17;8903:45;8900:71;;;8951:18;;:::i;:::-;-1:-1:-1;8991:9:1;;8838:168::o;9011:217::-;9051:1;9077;9067:132;;9121:10;9116:3;9112:20;9109:1;9102:31;9156:4;9153:1;9146:15;9184:4;9181:1;9174:15;9067:132;-1:-1:-1;9213:9:1;;9011:217::o;9233:127::-;9294:10;9289:3;9285:20;9282:1;9275:31;9325:4;9322:1;9315:15;9349:4;9346:1;9339:15;9365:135;9404:3;-1:-1:-1;;9425:17:1;;9422:43;;;9445:18;;:::i;:::-;-1:-1:-1;9492:1:1;9481:13;;9365:135::o;9505:335::-;9707:2;9689:21;;;9746:2;9726:18;;;9719:30;-1:-1:-1;;;9780:2:1;9765:18;;9758:41;9831:2;9816:18;;9505:335::o;10668:128::-;10708:3;10739:1;10735:6;10732:1;10729:13;10726:39;;;10745:18;;:::i;:::-;-1:-1:-1;10781:9:1;;10668:128::o;11157:184::-;11227:6;11280:2;11268:9;11259:7;11255:23;11251:32;11248:52;;;11296:1;11293;11286:12;11248:52;-1:-1:-1;11319:16:1;;11157:184;-1:-1:-1;11157:184:1:o;11625:245::-;11692:6;11745:2;11733:9;11724:7;11720:23;11716:32;11713:52;;;11761:1;11758;11751:12;11713:52;11793:9;11787:16;11812:28;11834:5;11812:28;:::i;12448:125::-;12488:4;12516:1;12513;12510:8;12507:34;;;12521:18;;:::i;:::-;-1:-1:-1;12558:9:1;;12448:125::o;14934:980::-;15196:4;15244:3;15233:9;15229:19;15275:6;15264:9;15257:25;15301:2;15339:6;15334:2;15323:9;15319:18;15312:34;15382:3;15377:2;15366:9;15362:18;15355:31;15406:6;15441;15435:13;15472:6;15464;15457:22;15510:3;15499:9;15495:19;15488:26;;15549:2;15541:6;15537:15;15523:29;;15570:1;15580:195;15594:6;15591:1;15588:13;15580:195;;;15659:13;;-1:-1:-1;;;;;15655:39:1;15643:52;;15750:15;;;;15715:12;;;;15691:1;15609:9;15580:195;;;-1:-1:-1;;;;;;;15831:32:1;;;;15826:2;15811:18;;15804:60;-1:-1:-1;;;15895:3:1;15880:19;15873:35;15792:3;14934:980;-1:-1:-1;;;14934:980:1:o;16741:306::-;16829:6;16837;16845;16898:2;16886:9;16877:7;16873:23;16869:32;16866:52;;;16914:1;16911;16904:12;16866:52;16943:9;16937:16;16927:26;;16993:2;16982:9;16978:18;16972:25;16962:35;;17037:2;17026:9;17022:18;17016:25;17006:35;;16741:306;;;;;:::o

Swarm Source

ipfs://99c81314e1e9a5451d2ba7bca3e7846c3ba61ecb9935d8db5fdcc3d12a622e7a
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.