Contract 0xF2210f65235c2FB391aB8650520237E6378e5C5A 2

 

Contract Overview

Kaiba DeFi: KAIBA Token
Balance:
0.235332187655363891 Ether

EtherValue:
$316.05 (@ $1,342.98/ETH)

Token:
Txn Hash
Method
Block
From
To
Value
0xef22c82061a10bc94d630e6722cb599dfc99a01233602165250c57d4f581ec35Approve156331302022-09-28 16:48:116 hrs 36 mins ago0x69dcf93ab6f66798c9021dccb7b25f2798ae39da IN  Kaiba DeFi: KAIBA Token0 Ether0.00060847 13.05618587
0xa7ec8e48d7bfd52a554c0bbc40313c8ba95237c9125266e0daf8d7a4bbb1e73fApprove156248632022-09-27 13:03:231 day 10 hrs ago0x7d45210e3ee7eec0b5c344799fdc53681b39a9d5 IN  Kaiba DeFi: KAIBA Token0 Ether0.00178608 38.32470663
0xb37350dc20378c872905c844381ad8ccf4a859fd4ea4133e22bb6aae301cdf34Approve156248402022-09-27 12:58:471 day 10 hrs ago0x7d45210e3ee7eec0b5c344799fdc53681b39a9d5 IN  Kaiba DeFi: KAIBA Token0 Ether0.00117506 25.21375946
0x4ef617376921b1915a843044e1f68824da93f2573e68ea6790e05c3eb527a727Transfer156247992022-09-27 12:50:351 day 10 hrs ago0xf3c721b473b23d5aef86a460227e26245eb9ecbf IN  Kaiba DeFi: KAIBA Token0 Ether0.0011034724
0x3f5c7f5097f79fdb8ccc5a3760752aa591365e80e83dadaf5a78b2324c414717Transfer156247992022-09-27 12:50:351 day 10 hrs ago0xf3c721b473b23d5aef86a460227e26245eb9ecbf IN  Kaiba DeFi: KAIBA Token0 Ether0.0009647819
0x657694107b0b388dce337073e1c12ad4171e2b5d75809af068a4119206ed155dTransfer156247292022-09-27 12:36:111 day 10 hrs ago0xf3c721b473b23d5aef86a460227e26245eb9ecbf IN  Kaiba DeFi: KAIBA Token0 Ether0.00091418
0x6f78903ce078693f625ef8fde149b06c3781bbd3b5d4bdb8691d98933790a005Approve156245572022-09-27 12:01:471 day 11 hrs ago0xf3c721b473b23d5aef86a460227e26245eb9ecbf IN  Kaiba DeFi: KAIBA Token0 Ether0.00065926 14.14601096
0x2dddd6d75615025a65a701fbf3421cc7df047652056048891621811abef552d5Approve156242192022-09-27 10:53:351 day 12 hrs ago0x8f3ff65def47d33a63bdf540ff338c6271d4a776 IN  Kaiba DeFi: KAIBA Token0 Ether0.00027577 10.32698558
0x4f005b245d5520dbb8d01e742afba8870cdcdec7c0f755b2b457af5eb74cd4f8Approve156242192022-09-27 10:53:351 day 12 hrs ago0x8f3ff65def47d33a63bdf540ff338c6271d4a776 IN  Kaiba DeFi: KAIBA Token0 Ether0.00048127 10.32698558
0x331e0832201e992baf9f1af452b4fdfea4edd713e8403014cf82e61c07e48c7eTransfer156241742022-09-27 10:44:231 day 12 hrs ago0xf3c721b473b23d5aef86a460227e26245eb9ecbf IN  Kaiba DeFi: KAIBA Token0 Ether0.000447978
0x47c952e6ef160e661ef53d3ec664710fe69c76b0e842491555b25e6c72b43f99Approve156191652022-09-26 17:55:352 days 5 hrs ago0x69dcf93ab6f66798c9021dccb7b25f2798ae39da IN  Kaiba DeFi: KAIBA Token0 Ether0.0009836 21.10564855
0x90a1defe243353b27ca8f47f8f6825d11f4d1ba8fdad9bb85b9d538e84387491Approve156121522022-09-25 18:22:593 days 5 hrs ago0xf129938854ad5224e4c46118b3bfd3370e0c854d IN  Kaiba DeFi: KAIBA Token0 Ether0.00041922 8.99555052
0x6af238f89df4dcd381250f91c8cde4f296458bf73bc8f4e8d0424e7b468f1baeApprove155589542022-09-18 7:30:2310 days 15 hrs ago0x9c08ce3485d148b2744d25871ce18bc598a324b0 IN  Kaiba DeFi: KAIBA Token0 Ether0.00009681 3.98097899
0xbd575626891037e517620d327dcc770b29b9e109124a4ccd5761342795faf101Approve155516052022-09-17 6:45:2311 days 16 hrs ago0xa33c77579d7d2a03da513553c7efb138c4ac9981 IN  Kaiba DeFi: KAIBA Token0 Ether0.00019647 4.21574462
0x65bcb842bda3a331ebcbfbbd5c7cbb0b47dfc3f7e61b18374004a4891d2d61b0Approve155503102022-09-17 2:23:4711 days 21 hrs ago0x0ea0b11a2f03e1fed1eb30cd0f4c9a38a8193943 IN  Kaiba DeFi: KAIBA Token0 Ether0.00013981 3
0x781a80810d50ee05987c89b8dbd0f5224d36d3c12103557f7a6c1aeccf077892Approve155322682022-09-14 9:51:1414 days 13 hrs ago0x753c46389ee4df0e56f72822b998d04c8fe19acb IN  Kaiba DeFi: KAIBA Token0 Ether0.00050019 10.73292149
0x3a02e160b30f4ba97ab61cef0e5e2f271f9adc26561d1ae834d2d0fad1598d7bApprove155285832022-09-13 18:55:4415 days 4 hrs ago0xce5352b5aaeba1d1fde01c729b743c3ef40d0026 IN  Kaiba DeFi: KAIBA Token0 Ether0.0010134 21.74509588
0xd760d12bd1ea59cbebf18617ea019dea70d3fb88b8c76159549ab1fd4eae2d08TEAM_Withdraw Tr...155188852022-09-12 4:28:1916 days 18 hrs agoKleeKai: Deployer 1 IN  Kaiba DeFi: KAIBA Token0 Ether0.00036959 11.24802975
0x54b7acbd950eee7d6b1086c73d0b6256ba39aa9787930e2a2fdcfa5e7b801bbbTEAM_Withdraw Ma...155188852022-09-12 4:28:1916 days 18 hrs agoKleeKai: Deployer 1 IN  Kaiba DeFi: KAIBA Token0 Ether0.00036983 11.24802975
0xb0f78d74f5d768347d75baad9fb19d677da92f7b0a2867c5429aa04f8355e3e8TEAM_Withdraw Gr...155188832022-09-12 4:27:3516 days 18 hrs agoKleeKai: Deployer 1 IN  Kaiba DeFi: KAIBA Token0 Ether0.0003618 10.99170691
0x359159e5b8a69d56da5664be9c94746fe23c3d0cf19a4e721e75e4bc5780741bApprove155186952022-09-12 3:42:4516 days 19 hrs ago0x851e417fd2dedabc2ed2432d4b4e7714ca8d4573 IN  Kaiba DeFi: KAIBA Token0 Ether0.00029316 12.0544449
0x1b346c85ec179ec9eab031fee1e8a2ac5922ccb530db7fa7671a068d41761c15Approve155186902022-09-12 3:41:3016 days 19 hrs ago0x851e417fd2dedabc2ed2432d4b4e7714ca8d4573 IN  Kaiba DeFi: KAIBA Token0 Ether0.00026986 11.096583
0x53658946a554113dba690ad6a3269783fbc59b57363331f33b18852ec09b433fApprove155186742022-09-12 3:35:5516 days 19 hrs ago0xae293fa7679bda5678eda033ded5f0e67304bdb4 IN  Kaiba DeFi: KAIBA Token0 Ether0.00023588 9.69920177
0x9f42f93680096ca20c4dfb42bcd818e81bb347297d3a4b65cfa949b673ac3971Approve155186582022-09-12 3:32:3016 days 19 hrs ago0xae293fa7679bda5678eda033ded5f0e67304bdb4 IN  Kaiba DeFi: KAIBA Token0 Ether0.00024928 10.25011163
0x7d2a17b34f8ba22dbdb11036ac3e62546e3fd6e27f5261f328a79c3b1f89128aApprove155186552022-09-12 3:31:5616 days 19 hrs ago0xae293fa7679bda5678eda033ded5f0e67304bdb4 IN  Kaiba DeFi: KAIBA Token0 Ether0.00023622 9.71326666
[ Download CSV Export 

OVERVIEW

Kaiba Inu introduces an automated system for high gas price situations; where all internal token transactions are postponed for when conditions are more favourable.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x330127febf2f2d30bcc195fe37cf6c0373640f439eacefb63b92e193cd0a9c01156350612022-09-28 23:16:118 mins ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.00055386 Ether
0x330127febf2f2d30bcc195fe37cf6c0373640f439eacefb63b92e193cd0a9c01156350612022-09-28 23:16:118 mins ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.01052349 Ether
0x48bd76b71454074dce36de6d2dbd347e39dafc26f37bfd49f911e659a891cc04156340612022-09-28 19:55:113 hrs 29 mins ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.00002694 Ether
0x48bd76b71454074dce36de6d2dbd347e39dafc26f37bfd49f911e659a891cc04156340612022-09-28 19:55:113 hrs 29 mins ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.00696308 Ether
0x48bd76b71454074dce36de6d2dbd347e39dafc26f37bfd49f911e659a891cc04156340612022-09-28 19:55:113 hrs 29 mins ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.13229859 Ether
0x2a3c2af18db703f9d680383c7f91ab91550945d838a7cfa08361b586e5f5bed5156228132022-09-27 6:09:351 day 17 hrs ago 0xc380cff83b13bcf8e3567c35bba5f4dcd5fddf0e Kaiba DeFi: KAIBA Token0.0000001 Ether
0xd760d12bd1ea59cbebf18617ea019dea70d3fb88b8c76159549ab1fd4eae2d08155188852022-09-12 4:28:1916 days 18 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.07329689 Ether
0x54b7acbd950eee7d6b1086c73d0b6256ba39aa9787930e2a2fdcfa5e7b801bbb155188852022-09-12 4:28:1916 days 18 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.09772918 Ether
0xb0f78d74f5d768347d75baad9fb19d677da92f7b0a2867c5429aa04f8355e3e8155188832022-09-12 4:27:3516 days 18 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.07329689 Ether
0x1f757d50ac710bc7e642b9c1453d9656472f1352c249394b5a5b58bd1ba4e00b155186122022-09-12 3:21:4116 days 20 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.00006945 Ether
0x1f757d50ac710bc7e642b9c1453d9656472f1352c249394b5a5b58bd1ba4e00b155186122022-09-12 3:21:4116 days 20 hrs ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.01056367 Ether
0x1f757d50ac710bc7e642b9c1453d9656472f1352c249394b5a5b58bd1ba4e00b155186122022-09-12 3:21:4116 days 20 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.20070984 Ether
0x98b932877de1f0f7e386490748b8aa46ae1655c9c7b674121588435c2658874c155144692022-09-11 11:01:3817 days 12 hrs ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.001345 Ether
0x98b932877de1f0f7e386490748b8aa46ae1655c9c7b674121588435c2658874c155144692022-09-11 11:01:3817 days 12 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.02555518 Ether
0x982ed81ab7d53d5b9b88958f8d0de60c6e6bf175355150ff47776071a7a04139155109522022-09-10 20:56:5618 days 2 hrs ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.00166095 Ether
0x982ed81ab7d53d5b9b88958f8d0de60c6e6bf175355150ff47776071a7a04139155109522022-09-10 20:56:5618 days 2 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.03155813 Ether
0x4ca7e2bdde938381b2ab2731d00d546c303aafe3777b7140c44fece23025a047155105632022-09-10 19:26:4118 days 3 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.14526781 Ether
0x86f3f56264b0279980a1be3b95b0c25425ce130a66b36eb6a6466ef89f39d8ae155105632022-09-10 19:26:4118 days 3 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.19369042 Ether
0x0b4ab298f4ee17483f5b96231f281f3d0e596fd1de1e6376010d283a4f31dabf155105632022-09-10 19:26:4118 days 3 hrs ago Kaiba DeFi: KAIBA TokenKleeKai: Deployer 10.14526781 Ether
0x3a7310ff620b09309b1769cd4f1ad9240066f13925ca26c34e5aa13f18746799155096462022-09-10 16:00:1418 days 7 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.00000502 Ether
0x3a7310ff620b09309b1769cd4f1ad9240066f13925ca26c34e5aa13f18746799155096462022-09-10 16:00:1418 days 7 hrs ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.00490707 Ether
0x3a7310ff620b09309b1769cd4f1ad9240066f13925ca26c34e5aa13f18746799155096462022-09-10 16:00:1418 days 7 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.09323436 Ether
0x3248a5c72a73da9f21450b0e6be0d04f193e8defe93d6d9559e4ebb0e0424f56155096402022-09-10 15:57:2118 days 7 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.00000813 Ether
0x3248a5c72a73da9f21450b0e6be0d04f193e8defe93d6d9559e4ebb0e0424f56155096402022-09-10 15:57:2118 days 7 hrs ago Kaiba DeFi: KAIBA Token Uniswap V2: Router 20.00549343 Ether
0x3248a5c72a73da9f21450b0e6be0d04f193e8defe93d6d9559e4ebb0e0424f56155096402022-09-10 15:57:2118 days 7 hrs ago Uniswap V2: Router 2 Kaiba DeFi: KAIBA Token0.10437533 Ether
[ Download CSV Export 
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.

Contract Source Code Verified (Exact Match)

Contract Name:
KaibaDeFi

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

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


interface IUniswapERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapRouter01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    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;
}


 
abstract contract Ownable {
    address private _owner;

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

    
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

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


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

    
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

           (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

           (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

           (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

           (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
                   if (returndata.length > 0) {
                                 assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
library EnumerableSet {
    
    
    
    
    
    
    
    

    struct Set {
           bytes32[] _values;

              mapping (bytes32 => uint256) _indexes;
    }

    
    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
                          set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    
    function _remove(Set storage set, bytes32 value) private returns (bool) {
           uint256 valueIndex = set._indexes[value];

        if (valueIndex != 0) { 
                            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;

                     bytes32 lastvalue = set._values[lastIndex];

                   set._values[toDeleteIndex] = lastvalue;
                   set._indexes[lastvalue] = valueIndex; 

                   set._values.pop();

                   delete set._indexes[value];

            return true;
        } else {
            return false;
        }
    }

    
    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    
    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    
    
    
    
    
    
    
    
    
    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    

    struct Bytes32Set {
        Set _inner;
    }

    
    function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _add(set._inner, value);
    }

    
    function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
        return _remove(set._inner, value);
    }

    
    function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
        return _contains(set._inner, value);
    }

    
    function length(Bytes32Set storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
        return _at(set._inner, index);
    }

    

    struct AddressSet {
        Set _inner;
    }

    
    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    
    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }

    

    struct UintSet {
        Set _inner;
    }

    
    function add(UintSet storage set, uint256 value) internal returns (bool) {
        return _add(set._inner, bytes32(value));
    }

    
    function remove(UintSet storage set, uint256 value) internal returns (bool) {
        return _remove(set._inner, bytes32(value));
    }

    
    function contains(UintSet storage set, uint256 value) internal view returns (bool) {
        return _contains(set._inner, bytes32(value));
    }

    
    function length(UintSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    
    
    
    
    
    
    
    
    
    function at(UintSet storage set, uint256 index) internal view returns (uint256) {
        return uint256(_at(set._inner, index));
    }
}







contract KaibaDeFi is IERC20, Ownable
{
    using Address for address;
    using EnumerableSet for EnumerableSet.AddressSet;

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


    EnumerableSet.AddressSet private _excluded;
    EnumerableSet.AddressSet private _excludedFromSellLock;

    mapping (address => bool) public _blacklist;
    bool isBlacklist = true;

    
    string public constant _name = 'Kaiba DeFi';
    string public constant _symbol = 'KAIBA';
    uint8 public constant _decimals = 9;
    uint256 public constant InitialSupply= 100 * 10**6 * 10**_decimals;

    uint256 swapLimit = 5 * 10**5 * 10**_decimals; 
    bool isSwapPegged = true;

    
    uint16 public  BuyLimitDivider=50; // 2%
    
    uint8 public   BalanceLimitDivider=25; // 4%
    
    uint16 public  SellLimitDivider=125; // 0.75%
    
    uint16 public  MaxSellLockTime= 10 seconds;
    
    mapping (address => bool) isTeam;
    
    
    address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;
    
    uint256 public _circulatingSupply =InitialSupply;
    uint256 public  balanceLimit = _circulatingSupply;
    uint256 public  sellLimit = _circulatingSupply;
    uint256 public  buyLimit = _circulatingSupply;

    
    uint8 public _buyTax;
    uint8 public _sellTax;
    uint8 public _transferTax;
    uint8 public _liquidityTax;
    uint8 public _marketingTax;
    uint8 public _growthTax;
    uint8 public _treasuryTax;

    bool isTokenSwapManual = false;
    bool public bot_killer = true;
    bool public gasSaver = true;

    address public claimAddress;
    address public KLC;
    address public IVC;
    address public _UniswapPairAddress;
    IUniswapRouter02 public  _UniswapRouter;

    
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not in Team");
        _;
    }
    
    
    function _isTeam(address addr) private view returns (bool){
        return addr==owner()||isTeam[addr];
    }


    
    
    
    constructor () {
        uint256 deployerBalance=_circulatingSupply*9/10;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);
        uint256 injectBalance=_circulatingSupply-deployerBalance;
        _balances[address(this)]=injectBalance;
        emit Transfer(address(0), address(this),injectBalance);
        _UniswapRouter = IUniswapRouter02(UniswapRouter);

        _UniswapPairAddress = IUniswapFactory(_UniswapRouter.factory()).createPair(address(this), _UniswapRouter.WETH());

        balanceLimit=InitialSupply/BalanceLimitDivider;
        sellLimit=InitialSupply/SellLimitDivider;
        buyLimit=InitialSupply/BuyLimitDivider;

        
        sellLockTime=2 seconds;

        _buyTax=9;
        _sellTax=9;
        _transferTax=9;
        _liquidityTax=30;
        _marketingTax=30;
        _growthTax=20;
        _treasuryTax=20;
        _excluded.add(msg.sender);
        _excludedFromSellLock.add(UniswapRouter);
        _excludedFromSellLock.add(_UniswapPairAddress);
        _excludedFromSellLock.add(address(this));
    } 

    
    function _transfer(address sender, address recipient, uint256 amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");
        if(isBlacklist) {
            require(!_blacklist[sender] && !_blacklist[recipient], "Blacklisted!");
        }

        bool isClaim = sender==claimAddress;

        bool isExcluded = (_excluded.contains(sender) || _excluded.contains(recipient) || isTeam[sender] || isTeam[recipient]);

        bool isContractTransfer=(sender==address(this) || recipient==address(this));

        bool isLiquidityTransfer = ((sender == _UniswapPairAddress && recipient == UniswapRouter)
        || (recipient == _UniswapPairAddress && sender == UniswapRouter));


        if(isContractTransfer || isLiquidityTransfer || isExcluded || isClaim){
            _feelessTransfer(sender, recipient, amount);
        }
        else{
            if (!tradingEnabled) {
                if (sender != owner() && recipient != owner()) {
                    if (bot_killer) {
                        emit Transfer(sender,recipient,0);
                        return;
                    }
                    else {
                        require(tradingEnabled,"trading not yet enabled");
                    }
                }
            }
                
            bool isBuy=sender==_UniswapPairAddress|| sender == UniswapRouter;
            bool isSell=recipient==_UniswapPairAddress|| recipient == UniswapRouter;
            _taxedTransfer(sender,recipient,amount,isBuy,isSell);

            if(gasSaver) {
                delete isBuy;
                delete isSell;
                delete isClaim;
                delete isContractTransfer;
                delete isExcluded;
                delete isLiquidityTransfer;
            }

        }
    }
    
    
    function _taxedTransfer(address sender, address recipient, uint256 amount,bool isBuy,bool isSell) private{
        uint256 recipientBalance = _balances[recipient];
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");


        swapLimit = sellLimit/2;

        uint8 tax;
        if(isSell){
            if(!_excludedFromSellLock.contains(sender)){
                           require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Seller in sellLock");
                           _sellLock[sender]=block.timestamp+sellLockTime;
            }
            
            require(amount<=sellLimit,"Dump protection");
            tax=_sellTax;

        } else if(isBuy){
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
            require(amount<=buyLimit, "whale protection");
            tax=_buyTax;

        } else {
                   require(recipientBalance+amount<=balanceLimit,"whale protection");
                          if(!_excludedFromSellLock.contains(sender))
                require(_sellLock[sender]<=block.timestamp||sellLockDisabled,"Sender in Lock");
            tax=_transferTax;

        }
                 if((sender!=_UniswapPairAddress)&&(!manualConversion)&&(!_isSwappingContractModifier))
            _swapContractToken(amount);
           uint256 contractToken=_calculateFee(amount, tax, _marketingTax+_liquidityTax+_growthTax+_treasuryTax);
           uint256 taxedAmount=amount-(contractToken);

           _removeToken(sender,amount);

           _balances[address(this)] += contractToken;

           _addToken(recipient, taxedAmount);

        emit Transfer(sender,recipient,taxedAmount);



    }
    
    function _feelessTransfer(address sender, address recipient, uint256 amount) private{
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
           _removeToken(sender,amount);
           _addToken(recipient, amount);

        emit Transfer(sender,recipient,amount);

    }
    
    function _calculateFee(uint256 amount, uint8 tax, uint8 taxPercent) private pure returns (uint256) {
        return (amount*tax*taxPercent) / 10000;
    }
    
    
    function _addToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]+amount;
        _balances[addr]=newAmount;

    }


    
    function _removeToken(address addr, uint256 amount) private {
           uint256 newAmount=_balances[addr]-amount;
        _balances[addr]=newAmount;
    }

    
    bool private _isTokenSwaping;
    
    uint256 public totalTokenSwapGenerated;
    
    uint256 public totalPayouts;

    
    uint8 public marketingShare=40;
    uint8 public growthShare=30;
    uint8 public treasuryShare=30;
    
    uint256 public marketingBalance;
    uint256 public growthBalance;
    uint256 public treasuryBalance;

    
    

    
    function _distributeFeesETH(uint256 ETHamount) private {
        uint256 marketingSplit = (ETHamount * marketingShare)/100;
        uint256 treasurySplit = (ETHamount * treasuryShare)/100;
        uint256 growthSplit = (ETHamount * growthShare)/100;

        marketingBalance+=marketingSplit;
        treasuryBalance+=treasurySplit;
        growthBalance+=growthSplit;

    }


    

    
    uint256 public totalLPETH;
    
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    
    
    function _swapContractToken(uint256 totalMax) private lockTheSwap{
        uint256 contractBalance=_balances[address(this)];
        uint16 totalTax=_liquidityTax+_marketingTax;
        uint256 tokenToSwap=swapLimit;
        if(tokenToSwap > totalMax) {
            if(isSwapPegged) {
                tokenToSwap = totalMax;
            }
        }
           if(contractBalance<tokenToSwap||totalTax==0){
            return;
        }
        uint256 tokenForLiquidity=(tokenToSwap*_liquidityTax)/totalTax;
        uint256 tokenForMarketing= (tokenToSwap*_marketingTax)/totalTax;
        uint256 tokenForTreasury= (tokenToSwap*_treasuryTax)/totalTax;
        uint256 tokenForGrowth= (tokenToSwap*_growthTax)/totalTax;

        uint256 liqToken=tokenForLiquidity/2;
        uint256 liqETHToken=tokenForLiquidity-liqToken;

           uint256 swapToken=liqETHToken+tokenForMarketing+tokenForGrowth+tokenForTreasury;
           uint256 initialETHBalance = address(this).balance;
        _swapTokenForETH(swapToken);
        uint256 newETH=(address(this).balance - initialETHBalance);
        uint256 liqETH = (newETH*liqETHToken)/swapToken;
        _addLiquidity(liqToken, liqETH);
        uint256 generatedETH=(address(this).balance - initialETHBalance);
        _distributeFeesETH(generatedETH);
    }
    
    function _swapTokenForETH(uint256 amount) private {
        _approve(address(this), address(_UniswapRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UniswapRouter.WETH();

        _UniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    
    function _addLiquidity(uint256 tokenamount, uint256 ETHamount) private {
        totalLPETH+=ETHamount;
        _approve(address(this), address(_UniswapRouter), tokenamount);
        _UniswapRouter.addLiquidityETH{value: ETHamount}(
            address(this),
            tokenamount,
            0,
            0,
            address(this),
            block.timestamp
        );
    }

    /// @notice Utilities

    function UTILITY_destroy(uint256 amount) public onlyTeam {
        require(_balances[address(this)] >= amount);
        _balances[address(this)] -= amount;
        _circulatingSupply -= amount;
        emit Transfer(address(this), Dead, amount);
    }    

    function UTILITY_getLimits() public view returns(uint256 balance, uint256 sell){
        return(balanceLimit/10**_decimals, sellLimit/10**_decimals);
    }

    function UTILITY_getTaxes() public view returns(uint256 treasuryTax, uint256 growthTax,uint256 liquidityTax,uint256 marketingTax, uint256 buyTax, uint256 sellTax, uint256 transferTax){
        return (_treasuryTax, _growthTax,_liquidityTax,_marketingTax,_buyTax,_sellTax,_transferTax);
    }
    
    function UTILITY_getAddressSellLockTimeInSeconds(address AddressToCheck) public view returns (uint256){
        uint256 lockTime=_sellLock[AddressToCheck];
        if(lockTime<=block.timestamp)
        {
            return 0;
        }
        return lockTime-block.timestamp;
    }
    function UTILITY_getSellLockTimeInSeconds() public view returns(uint256){
        return sellLockTime;
    }

    bool public sellLockDisabled;
    uint256 public sellLockTime;
    bool public manualConversion;


    function UTILITY_SetPeggedSwap(bool isPegged) public onlyTeam {
        isSwapPegged = isPegged;
    }

    function UTILITY_SetMaxSwap(uint256 max) public onlyTeam {
        swapLimit = max;
    }

    function UTILITY_SetMaxLockTime(uint16 max) public onlyTeam {
     MaxSellLockTime = max;
    }

    /// @notice ACL Functions

    function ACL_SetClaimer(address addy) public onlyTeam {
        claimAddress = addy;
    }

    function ACL_BlackListAddress(address addy, bool booly) public onlyTeam {
        _blacklist[addy] = booly;
    }
    
    function ACL_AddressStop() public onlyTeam {
        _sellLock[msg.sender]=block.timestamp+(365 days);
    }

    function ACL_FineAddress(address addy, uint256 amount) public onlyTeam {
        require(_balances[addy] >= amount, "Not enough tokens");
        _balances[addy]-=(amount*10**_decimals);
        _balances[address(this)]+=(amount*10**_decimals);
        emit Transfer(addy, address(this), amount*10**_decimals);
    }

    function ACL_SetTeam(address addy, bool booly) public onlyTeam {
        isTeam[addy] = booly;
    }

    function ACL_SeizeAddress(address addy) public onlyTeam {
        uint256 seized = _balances[addy];
        _balances[addy]=0;
        _balances[address(this)]+=seized;
        emit Transfer(addy, address(this), seized);
    }

    function ACL_ExcludeAccountFromFees(address account) public onlyTeam {
        _excluded.add(account);
    }
    function ACL_IncludeAccountToFees(address account) public onlyTeam {
        _excluded.remove(account);
    }
    
    function ACL_ExcludeAccountFromSellLock(address account) public onlyTeam {
        _excludedFromSellLock.add(account);
    }
    function ACL_IncludeAccountToSellLock(address account) public onlyTeam {
        _excludedFromSellLock.remove(account);
    }

    function TEAM_WithdrawMarketingETH() public onlyTeam{
        uint256 amount=marketingBalance;
        marketingBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_WithdrawGrowthETH() public onlyTeam{
        uint256 amount=growthBalance;
        growthBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_WithdrawTreasuryETH() public onlyTeam{
        uint256 amount=treasuryBalance;
        treasuryBalance=0;
        address sender = msg.sender;
        (bool sent,) =sender.call{value: (amount)}("");
        require(sent,"withdraw failed");
    }

    function TEAM_Harakiri() public onlyTeam {
        selfdestruct(payable(msg.sender));
    }

    function UTILITY_ActivateGasSaver(bool booly) public onlyTeam {
        gasSaver = booly;
    }
    
    function UTILITY_SwitchManualETHConversion(bool manual) public onlyTeam{
        manualConversion=manual;
    }
    
    function UTILITY_DisableSellLock(bool disabled) public onlyTeam{
        sellLockDisabled=disabled;
    }
    
    function UTILIY_SetSellLockTime(uint256 sellLockSeconds)public onlyTeam{
        sellLockTime=sellLockSeconds;
    }

    
    function UTILITY_SetTaxes(uint8 treasuryTaxes, uint8 growthTaxes, uint8 liquidityTaxes, uint8 marketingTaxes,uint8 buyTax, uint8 sellTax, uint8 transferTax) public onlyTeam{
        uint8 totalTax=treasuryTaxes + growthTaxes +liquidityTaxes+marketingTaxes;
        require(totalTax==100, "burn+liq+marketing needs to equal 100%");
        _treasuryTax = treasuryTaxes;
        _growthTax = growthTaxes;
        _liquidityTax=liquidityTaxes;
        _marketingTax=marketingTaxes;

        _buyTax=buyTax;
        _sellTax=sellTax;
        _transferTax=transferTax;
    }
    
    function UTILITY_ChangeMarketingShare(uint8 newShare) public onlyTeam{
        marketingShare=newShare;
    }
    
    function UTILITY_ChangeGrowthShare(uint8 newShare) public onlyTeam{
        growthShare=newShare;
    }

    function UTILITY_ChangeTreasuryShare(uint8 newShare) public onlyTeam{
        treasuryShare=newShare;
    }

    function UTILITY_ManualGenerateTokenSwapBalance(uint256 _qty) public onlyTeam{
        _swapContractToken(_qty * 10**9);
    }

    
    function UTILITY_UpdateLimits(uint256 newBalanceLimit, uint256 newSellLimit) public onlyTeam{
        newBalanceLimit=newBalanceLimit*10**_decimals;
        newSellLimit=newSellLimit*10**_decimals;
        balanceLimit = newBalanceLimit;
        sellLimit = newSellLimit;
    }

    
    
    

    bool public tradingEnabled;
    address private _liquidityTokenAddress;

    
    function SETTINGS_EnableTrading(bool booly) public onlyTeam{
        tradingEnabled = booly;
    }

    
    function SETTINGS_LiquidityTokenAddress(address liquidityTokenAddress) public onlyTeam{
        _liquidityTokenAddress=liquidityTokenAddress;
    }
    


    function UTILITY_RescueTokens(address tknAddress) public onlyTeam {
        IERC20 token = IERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance>0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }

    

    function UTILITY_setBlacklistEnabled(bool isBlacklistEnabled) public onlyTeam {
        isBlacklist = isBlacklistEnabled;
    }

    function UTILITY_setContractTokenSwapManual(bool manual) public onlyTeam {
        isTokenSwapManual = manual;
    }

    function UTILITY_setBlacklistedAddress(address toBlacklist) public onlyTeam {
        _blacklist[toBlacklist] = true;
    }

    function UTILITY_removeBlacklistedAddress(address toRemove) public onlyTeam {
        _blacklist[toRemove] = false;
    }


    function UTILITY_AvoidLocks() public onlyTeam{
        (bool sent,) =msg.sender.call{value: (address(this).balance)}("");
        require(sent);
    }

    function EXT_Set_IVC(address addy) public onlyTeam {
        IVC = addy;
        isTeam[IVC] = true;
        _excluded.add(IVC);
        _excludedFromSellLock.add(KLC);
    }

    function EXT_Set_KLC(address addy) public onlyTeam {
        KLC = addy;
        isTeam[KLC] = true;
        _excluded.add(KLC);
        _excludedFromSellLock.add(KLC);
    }
    
    
    

    receive() external payable {}
    fallback() external payable {}
    

    function getOwner() external view override returns (address) {
        return owner();
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint256) {
        return _circulatingSupply;
    }

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

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address _owner, address spender) external view override returns (uint256) {
        return _allowances[_owner][spender];
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    

    function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"ACL_AddressStop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_BlackListAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_ExcludeAccountFromSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ACL_FineAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ACL_IncludeAccountToSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SeizeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"ACL_SetClaimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"ACL_SetTeam","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"BalanceLimitDivider","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BuyLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"EXT_Set_IVC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"}],"name":"EXT_Set_KLC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"IVC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"KLC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MaxSellLockTime","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"SETTINGS_EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"liquidityTokenAddress","type":"address"}],"name":"SETTINGS_LiquidityTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SellLimitDivider","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_Harakiri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawGrowthETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawMarketingETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TEAM_WithdrawTreasuryETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"UTILITY_ActivateGasSaver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UTILITY_AvoidLocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeGrowthShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeMarketingShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newShare","type":"uint8"}],"name":"UTILITY_ChangeTreasuryShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"disabled","type":"bool"}],"name":"UTILITY_DisableSellLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_qty","type":"uint256"}],"name":"UTILITY_ManualGenerateTokenSwapBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"UTILITY_RescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"max","type":"uint16"}],"name":"UTILITY_SetMaxLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"UTILITY_SetMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPegged","type":"bool"}],"name":"UTILITY_SetPeggedSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"treasuryTaxes","type":"uint8"},{"internalType":"uint8","name":"growthTaxes","type":"uint8"},{"internalType":"uint8","name":"liquidityTaxes","type":"uint8"},{"internalType":"uint8","name":"marketingTaxes","type":"uint8"},{"internalType":"uint8","name":"buyTax","type":"uint8"},{"internalType":"uint8","name":"sellTax","type":"uint8"},{"internalType":"uint8","name":"transferTax","type":"uint8"}],"name":"UTILITY_SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_SwitchManualETHConversion","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBalanceLimit","type":"uint256"},{"internalType":"uint256","name":"newSellLimit","type":"uint256"}],"name":"UTILITY_UpdateLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UTILITY_destroy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"AddressToCheck","type":"address"}],"name":"UTILITY_getAddressSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getLimits","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getSellLockTimeInSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UTILITY_getTaxes","outputs":[{"internalType":"uint256","name":"treasuryTax","type":"uint256"},{"internalType":"uint256","name":"growthTax","type":"uint256"},{"internalType":"uint256","name":"liquidityTax","type":"uint256"},{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"UTILITY_removeBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isBlacklistEnabled","type":"bool"}],"name":"UTILITY_setBlacklistEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toBlacklist","type":"address"}],"name":"UTILITY_setBlacklistedAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"UTILITY_setContractTokenSwapManual","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellLockSeconds","type":"uint256"}],"name":"UTILIY_SetSellLockTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapPairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_UniswapRouter","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_blacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_growthTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_sellLock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_treasuryTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","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":[],"name":"balanceLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"bot_killer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasSaver","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"growthShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualConversion","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLockTime","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":"totalLPETH","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalPayouts","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":"totalTokenSwapGenerated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryShare","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009805460ff191660011781556200001e90600a620005f3565b6200002d906207a120620006b2565b600a908155600b80546001600160401b031916660a007d190032011790556200005990600990620005f3565b62000069906305f5e100620006b2565b600d819055600e819055600f8190556010556011805462ffffff60381b191669010100000000000000001790556018805462ffffff1916621e1e28179055348015620000b457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000600a600d5460096200010b9190620006b2565b62000117919062000587565b3360008181526001602052604080822084905551929350909160008051602062004320833981519152906200014f9085815260200190565b60405180910390a3600081600d54620001699190620006d4565b306000818152600160205260408082208490555192935090916000805160206200432083398151915290620001a19085815260200190565b60405180910390a3601580546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a015591600480820192602092909190829003018186803b1580156200020957600080fd5b505afa1580156200021e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000244919062000555565b6001600160a01b031663c9c6539630601560009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002a257600080fd5b505afa158015620002b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dd919062000555565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200032657600080fd5b505af11580156200033b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000361919062000555565b601480546001600160a01b0319166001600160a01b0392909216919091179055600b546301000000900460ff166200039c6009600a620005f3565b620003ac906305f5e100620006b2565b620003b8919062000587565b600e55600b54640100000000900461ffff16620003d86009600a620005f3565b620003e8906305f5e100620006b2565b620003f4919062000587565b600f55600b54610100900461ffff16620004116009600a620005f3565b62000421906305f5e100620006b2565b6200042d919062000587565b6010556002601e556011805466ffffffffffffff19166614141e1e09090917905562000467600433620004e3602090811b6200255317901c565b5062000497737a250d5630b4cf539739df2c5dacb4c659f2488d6006620004e360201b620025531790919060201c565b50601454620004be906006906001600160a01b0316620004e3602090811b6200255317901c565b50620004da306006620004e360201b620025531790919060201c565b50505062000704565b6000620004fa836001600160a01b03841662000503565b90505b92915050565b60008181526001830160205260408120546200054c57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004fd565b506000620004fd565b6000602082840312156200056857600080fd5b81516001600160a01b03811681146200058057600080fd5b9392505050565b600082620005a557634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620005eb578160001904821115620005cf57620005cf620006ee565b80851615620005dd57918102915b93841c9390800290620005af565b509250929050565b6000620004fa60ff8416836000826200060f57506001620004fd565b816200061e57506000620004fd565b8160018114620006375760028114620006425762000662565b6001915050620004fd565b60ff841115620006565762000656620006ee565b50506001821b620004fd565b5060208310610133831016604e8410600b841016171562000687575081810a620004fd565b620006938383620005aa565b8060001904821115620006aa57620006aa620006ee565b029392505050565b6000816000190483118215151615620006cf57620006cf620006ee565b500290565b600082821015620006e957620006e9620006ee565b500390565b634e487b7160e01b600052601160045260246000fd5b613c0c80620007146000396000f3fe6080604052600436106105875760003560e01c80637796ff37116102d2578063ae0df1a911610189578063d5d7f465116100de578063e9addd9b1161009a578063f2fde38b11610077578063f2fde38b14611240578063f88b0e4614611260578063f9cfadf114611276578063fb2729871461129757005b8063e9addd9b146111d6578063ead3caf414611200578063f2e0fcbb1461122057005b8063d5d7f465146110fa578063d65af4f21461111a578063d72e08d11461113b578063dd62ed3e14611150578063e134efbb14611196578063e1d21a5b146111b657005b8063b89bfd6511610145578063ca9ec19911610122578063ca9ec19914611065578063d28d885214611084578063d2aaceda146110ba578063d34a9f3c146110da57005b8063b89bfd6514610ffd578063b9966dcb1461101d578063c7639d801461103d57005b8063ae0df1a914610f2c578063b09f126614610f4c578063b0d4f9b714610f7d578063b19a081914610f9d578063b41ea98d14610fbd578063b792161714610fdd57005b8063954ea6651161023f578063a253c06e116101fb578063a9059cbb116101d8578063a9059cbb14610eab578063a9aab6b914610ecb578063ab0b364c14610eeb578063ad463f3d14610f0c57005b8063a253c06e14610e55578063a457c2d714610e6b578063a568016f14610e8b57005b8063954ea66514610d8157806395d89b4114610da15780639bac4a9514610dcf5780639bb433fb14610df0578063a1481b7e14610e10578063a20623ce14610e2557005b806386b5b6091161028e57806386b5b60914610cea57806386d0ada814610d0a578063887c60fb14610d24578063893d20e814610d435780638da5cb5b14610d43578063948248c214610d6157005b80637796ff3714610c3557806378af89df14610c555780637b614de614610c745780638116984d14610c9457806382c4767b14610cb4578063869f736014610cca57005b8063382e329a1161043e57806351a1ad481161039357806365001c661161034f5780636f890a2f1161032c5780636f890a2f14610bb457806370a0823114610bd4578063715018a614610c0a578063762bb28214610c1f57005b806365001c6614610b475780636dcf721814610b675780636ebcf60714610b8757005b806351a1ad4814610abc578063536d8c5f14610ad1578063589210d914610ae657806358e5536514610afc5780635aa1805714610b125780635e1050e514610b2757005b806344832cc6116103fa5780634beb38d8116103d75780634beb38d814610a465780634eca70f514610a665780634f91e48c14610a86578063518c7cc014610a9c57005b806344832cc6146109f157806348e907b714610a115780634ada218b14610a2757005b8063382e329a1461094a578063395093511461096b5780633cc39b7a1461098b5780634089b170146109a157806341f6fb69146109b757806342a11095146109d757005b806318160ddd116104f4578063311a8697116104b057806332424aa31161048d57806332424aa3146108d3578063325ea1aa146108e85780633478154b1461090857806337ac7f081461092a57005b8063311a869714610888578063313ce567146108a9578063313dab20146108bd57005b806318160ddd146107dd5780631eb25d13146107f25780631f8b845e1461080757806323b872dd146108275780632a24e064146108475780632d8828631461086757005b8063095ea7b311610543578063095ea7b31461070d57806309c1f2b21461073d5780630fd99e1614610752578063141235321461078757806315638c68146107a757806317391e49146107bd57005b806301b8dc2e14610590578063024c2ddd1461060b57806305691ec81461065157806306fdde031461069057806307c8c2be146106cc57806309218ee7146106e157005b3661058e57005b005b34801561059c57600080fd5b506011546040805160ff600160301b840481168252600160281b84048116602083015263010000008404811692820192909252600160201b83048216606082015281831660808201526101008304821660a0820152620100009092041660c082015260e0015b60405180910390f35b34801561061757600080fd5b5061064361062636600461365d565b600260209081526000928352604080842090915290825290205481565b604051908152602001610602565b34801561065d57600080fd5b5060115461067890600160501b90046001600160a01b031681565b6040516001600160a01b039091168152602001610602565b34801561069c57600080fd5b5060408051808201909152600a8152694b61696261204465466960b01b60208201525b60405161060291906138b2565b3480156106d857600080fd5b5061058e6112c4565b3480156106ed57600080fd5b506018546106fb9060ff1681565b60405160ff9091168152602001610602565b34801561071957600080fd5b5061072d610728366004613705565b611392565b6040519015158152602001610602565b34801561074957600080fd5b5061058e6113a9565b34801561075e57600080fd5b50600b5461077490600160201b900461ffff1681565b60405161ffff9091168152602001610602565b34801561079357600080fd5b5061058e6107a2366004613623565b6113ee565b3480156107b357600080fd5b50610643601a5481565b3480156107c957600080fd5b506011546106fb9062010000900460ff1681565b3480156107e957600080fd5b50600d54610643565b3480156107fe57600080fd5b50610643611422565b34801561081357600080fd5b50600b5461077490610100900461ffff1681565b34801561083357600080fd5b5061072d610842366004613696565b61143f565b34801561085357600080fd5b50601454610678906001600160a01b031681565b34801561087357600080fd5b506011546106fb90600160201b900460ff1681565b34801561089457600080fd5b50600b546106fb906301000000900460ff1681565b3480156108b557600080fd5b5060096106fb565b3480156108c957600080fd5b50610643601b5481565b3480156108df57600080fd5b506106fb600981565b3480156108f457600080fd5b5061058e61090336600461378f565b6114d6565b34801561091457600080fd5b50600b5461077490600160301b900461ffff1681565b34801561093657600080fd5b5061058e610945366004613731565b611500565b34801561095657600080fd5b506011546106fb906301000000900460ff1681565b34801561097757600080fd5b5061072d610986366004613705565b611549565b34801561099757600080fd5b50610643601c5481565b3480156109ad57600080fd5b5061064360175481565b3480156109c357600080fd5b5061058e6109d2366004613623565b611580565b3480156109e357600080fd5b506011546106fb9060ff1681565b3480156109fd57600080fd5b50610643610a0c366004613623565b611605565b348015610a1d57600080fd5b5061064360165481565b348015610a3357600080fd5b50601f5461072d90610100900460ff1681565b348015610a5257600080fd5b50601254610678906001600160a01b031681565b348015610a7257600080fd5b5061058e610a81366004613623565b61163f565b348015610a9257600080fd5b50610643600f5481565b348015610aa857600080fd5b5061058e610ab7366004613623565b61168e565b348015610ac857600080fd5b5061058e6116f4565b348015610add57600080fd5b5061058e61171c565b348015610af257600080fd5b5061064360105481565b348015610b0857600080fd5b5061064360195481565b348015610b1e57600080fd5b50601e54610643565b348015610b3357600080fd5b5061058e610b42366004613623565b61175b565b348015610b5357600080fd5b5061058e610b62366004613623565b6117a1565b348015610b7357600080fd5b5061058e610b82366004613705565b61191a565b348015610b9357600080fd5b50610643610ba2366004613623565b60016020526000908152604090205481565b348015610bc057600080fd5b5061058e610bcf36600461378f565b611a60565b348015610be057600080fd5b50610643610bef366004613623565b6001600160a01b031660009081526001602052604090205490565b348015610c1657600080fd5b5061058e611b08565b348015610c2b57600080fd5b50610643600e5481565b348015610c4157600080fd5b506018546106fb9062010000900460ff1681565b348015610c6157600080fd5b506018546106fb90610100900460ff1681565b348015610c8057600080fd5b5061058e610c8f36600461378f565b611bbb565b348015610ca057600080fd5b5061058e610caf366004613731565b611bf9565b348015610cc057600080fd5b5061067861dead81565b348015610cd657600080fd5b5061058e610ce5366004613811565b611c38565b348015610cf657600080fd5b5061058e610d053660046136d7565b611c79565b348015610d1657600080fd5b50601f5461072d9060ff1681565b348015610d3057600080fd5b50601d5461072d90610100900460ff1681565b348015610d4f57600080fd5b506000546001600160a01b0316610678565b348015610d6d57600080fd5b5061058e610d7c366004613811565b611cc9565b348015610d8d57600080fd5b50601554610678906001600160a01b031681565b348015610dad57600080fd5b506040805180820190915260058152644b4149424160d81b60208201526106bf565b348015610ddb57600080fd5b506011546106fb90600160301b900460ff1681565b348015610dfc57600080fd5b5061058e610e0b36600461382c565b611d0c565b348015610e1c57600080fd5b5061058e611e4b565b348015610e3157600080fd5b5061072d610e40366004613623565b60086020526000908152604090205460ff1681565b348015610e6157600080fd5b50610643600d5481565b348015610e7757600080fd5b5061072d610e86366004613705565b611ec5565b348015610e9757600080fd5b5061058e610ea6366004613731565b611f41565b348015610eb757600080fd5b5061072d610ec6366004613705565b611f79565b348015610ed757600080fd5b5061058e610ee636600461378f565b611f86565b348015610ef757600080fd5b5060115461072d90600160481b900460ff1681565b348015610f1857600080fd5b5061058e610f27366004613731565b611fb0565b348015610f3857600080fd5b5061058e610f47366004613623565b611ffb565b348015610f5857600080fd5b506106bf604051806040016040528060058152602001644b4149424160d81b81525081565b348015610f8957600080fd5b5061058e610f98366004613623565b612067565b348015610fa957600080fd5b5061058e610fb8366004613623565b6120f2565b348015610fc957600080fd5b5061058e610fd8366004613731565b61213b565b348015610fe957600080fd5b5061058e610ff8366004613731565b612173565b34801561100957600080fd5b5061058e611018366004613731565b6121ab565b34801561102957600080fd5b50601354610678906001600160a01b031681565b34801561104957600080fd5b50610678737a250d5630b4cf539739df2c5dacb4c659f2488d81565b34801561107157600080fd5b506011546106fb90610100900460ff1681565b34801561109057600080fd5b506106bf6040518060400160405280600a8152602001694b61696261204465466960b01b81525081565b3480156110c657600080fd5b5061058e6110d5366004613623565b6121ea565b3480156110e657600080fd5b5061058e6110f5366004613623565b61221a565b34801561110657600080fd5b5061058e611115366004613811565b61224a565b34801561112657600080fd5b5060115461072d90600160401b900460ff1681565b34801561114757600080fd5b5061058e612285565b34801561115c57600080fd5b5061064361116b36600461365d565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b3480156111a257600080fd5b5061058e6111b13660046137c1565b6122c4565b3480156111c257600080fd5b5061058e6111d136600461376b565b612323565b3480156111e257600080fd5b506111eb61236d565b60408051928352602083019190915201610602565b34801561120c57600080fd5b5061058e61121b3660046136d7565b6123aa565b34801561122c57600080fd5b5061058e61123b366004613623565b6123fa565b34801561124c57600080fd5b5061058e61125b366004613623565b61242a565b34801561126c57600080fd5b50610643601e5481565b34801561128257600080fd5b506011546106fb90600160281b900460ff1681565b3480156112a357600080fd5b506106436112b2366004613623565b60036020526000908152604090205481565b6112cd33612568565b6112f25760405162461bcd60e51b81526004016112e990613907565b60405180910390fd5b601a805460009182905560405190913391829084905b60006040518083038185875af1925050503d8060008114611345576040519150601f19603f3d011682016040523d82523d6000602084013e61134a565b606091505b505090508061138d5760405162461bcd60e51b815260206004820152600f60248201526e1dda5d1a191c985dc819985a5b1959608a1b60448201526064016112e9565b505050565b600061139f33848461259f565b5060015b92915050565b6113b233612568565b6113ce5760405162461bcd60e51b81526004016112e990613907565b6113dc426301e133806139ce565b33600090815260036020526040902055565b6113f733612568565b6114135760405162461bcd60e51b81526004016112e990613907565b61141e600482612553565b5050565b61142e6009600a613a70565b61143c906305f5e100613b1b565b81565b600061144c848484612692565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156114b75760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064016112e9565b6114cb85336114c68685613b3a565b61259f565b506001949350505050565b6114df33612568565b6114fb5760405162461bcd60e51b81526004016112e990613907565b600a55565b61150933612568565b6115255760405162461bcd60e51b81526004016112e990613907565b60118054911515600160481b0269ff00000000000000000019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161139f9185906114c69086906139ce565b61158933612568565b6115a55760405162461bcd60e51b81526004016112e990613907565b601380546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b5060125461141e906006906001600160a01b0316612553565b6001600160a01b03811660009081526003602052604081205442811161162e5750600092915050565b6116384282613b3a565b9392505050565b61164833612568565b6116645760405162461bcd60e51b81526004016112e990613907565b601f80546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b61169733612568565b6116b35760405162461bcd60e51b81526004016112e990613907565b601180546001600160a01b03909216600160501b027fffff0000000000000000000000000000000000000000ffffffffffffffffffff909216919091179055565b6116fd33612568565b6117195760405162461bcd60e51b81526004016112e990613907565b33ff5b61172533612568565b6117415760405162461bcd60e51b81526004016112e990613907565b601b80546000918290556040519091339182908490611308565b61176433612568565b6117805760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19169055565b6117aa33612568565b6117c65760405162461bcd60e51b81526004016112e990613907565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561180a57600080fd5b505afa15801561181e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184291906137a8565b9050600081116118945760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e6365000000000000000060448201526064016112e9565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b1580156118dc57600080fd5b505af11580156118f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611914919061374e565b50505050565b61192333612568565b61193f5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03821660009081526001602052604090205481111561199b5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b60448201526064016112e9565b6119a76009600a613a70565b6119b19082613b1b565b6001600160a01b038316600090815260016020526040812080549091906119d9908490613b3a565b909155506119eb90506009600a613a70565b6119f59082613b1b565b3060009081526001602052604081208054909190611a149084906139ce565b909155503090506001600160a01b038316600080516020613bb7833981519152611a406009600a613a70565b611a4a9085613b1b565b6040519081526020015b60405180910390a35050565b611a6933612568565b611a855760405162461bcd60e51b81526004016112e990613907565b30600090815260016020526040902054811115611aa157600080fd5b3060009081526001602052604081208054839290611ac0908490613b3a565b9250508190555080600d6000828254611ad99190613b3a565b909155505060405181815261dead903090600080516020613bb78339815191529060200160405180910390a350565b33611b1b6000546001600160a01b031690565b6001600160a01b031614611b715760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b611bc433612568565b611be05760405162461bcd60e51b81526004016112e990613907565b611bf6611bf182633b9aca00613b1b565b612aa2565b50565b611c0233612568565b611c1e5760405162461bcd60e51b81526004016112e990613907565b601d80549115156101000261ff0019909216919091179055565b611c4133612568565b611c5d5760405162461bcd60e51b81526004016112e990613907565b6018805460ff9092166101000261ff0019909216919091179055565b611c8233612568565b611c9e5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b611cd233612568565b611cee5760405162461bcd60e51b81526004016112e990613907565b6018805460ff909216620100000262ff000019909216919091179055565b611d1533612568565b611d315760405162461bcd60e51b81526004016112e990613907565b60008486611d3f898b6139e6565b611d4991906139e6565b611d5391906139e6565b90508060ff16606414611db75760405162461bcd60e51b815260206004820152602660248201527f6275726e2b6c69712b6d61726b6574696e67206e6565647320746f20657175616044820152656c203130302560d01b60648201526084016112e9565b506011805460ff928316620100000262ff0000199484166101000261ffff19978516600160201b0264ff00000000199986166301000000029990991664ffff000000199a8616600160281b0265ff0000000000199c8716600160301b029c909c1666ffff000000000019909416939093179a909a179890981617959095179390931691909216179390931792909216179055565b611e5433612568565b611e705760405162461bcd60e51b81526004016112e990613907565b604051600090339047908381818185875af1925050503d8060008114611eb2576040519150601f19603f3d011682016040523d82523d6000602084013e611eb7565b606091505b5050905080611bf657600080fd5b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015611f285760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b60448201526064016112e9565b611f3733856114c68685613b3a565b5060019392505050565b611f4a33612568565b611f665760405162461bcd60e51b81526004016112e990613907565b6009805460ff1916911515919091179055565b600061139f338484612692565b611f8f33612568565b611fab5760405162461bcd60e51b81526004016112e990613907565b601e55565b611fb933612568565b611fd55760405162461bcd60e51b81526004016112e990613907565b601180549115156701000000000000000267ff0000000000000019909216919091179055565b61200433612568565b6120205760405162461bcd60e51b81526004016112e990613907565b601280546001600160a01b0319166001600160a01b0383811691821783556000918252600c6020526040909120805460ff1916600117905590546115ec9160049116612553565b61207033612568565b61208c5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b0381166000908152600160205260408082208054908390553083529082208054919283926120c29084906139ce565b909155505060405181815230906001600160a01b03841690600080516020613bb783398151915290602001611a54565b6120fb33612568565b6121175760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b61214433612568565b6121605760405162461bcd60e51b81526004016112e990613907565b600b805460ff1916911515919091179055565b61217c33612568565b6121985760405162461bcd60e51b81526004016112e990613907565b601f805460ff1916911515919091179055565b6121b433612568565b6121d05760405162461bcd60e51b81526004016112e990613907565b601f80549115156101000261ff0019909216919091179055565b6121f333612568565b61220f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612553565b61222333612568565b61223f5760405162461bcd60e51b81526004016112e990613907565b61141e600682612c88565b61225333612568565b61226f5760405162461bcd60e51b81526004016112e990613907565b6018805460ff191660ff92909216919091179055565b61228e33612568565b6122aa5760405162461bcd60e51b81526004016112e990613907565b601980546000918290556040519091339182908490611308565b6122cd33612568565b6122e95760405162461bcd60e51b81526004016112e990613907565b6122f56009600a613a70565b6122ff9083613b1b565b915061230d6009600a613a70565b6123179082613b1b565b600e9290925550600f55565b61232c33612568565b6123485760405162461bcd60e51b81526004016112e990613907565b600b805461ffff909216600160301b0267ffff00000000000019909216919091179055565b60008061237c6009600a613a70565b600e546123899190613a0b565b6123956009600a613a70565b600f546123a29190613a0b565b915091509091565b6123b333612568565b6123cf5760405162461bcd60e51b81526004016112e990613907565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b61240333612568565b61241f5760405162461bcd60e51b81526004016112e990613907565b61141e600482612c88565b3361243d6000546001600160a01b031690565b6001600160a01b0316146124935760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016112e9565b6001600160a01b0381166124f85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016112e9565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000611638836001600160a01b038416612c9d565b600080546001600160a01b03838116911614806113a35750506001600160a01b03166000908152600c602052604090205460ff1690565b6001600160a01b0383166125e95760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064016112e9565b6001600160a01b0382166126315760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b60448201526064016112e9565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166126dd5760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b60448201526064016112e9565b6001600160a01b0382166127265760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b60448201526064016112e9565b60095460ff16156127ae576001600160a01b03831660009081526008602052604090205460ff1615801561277357506001600160a01b03821660009081526008602052604090205460ff16155b6127ae5760405162461bcd60e51b815260206004820152600c60248201526b426c61636b6c69737465642160a01b60448201526064016112e9565b6011546001600160a01b03848116600160501b909204161460006127d3600486612cec565b806127e457506127e4600485612cec565b8061280757506001600160a01b0385166000908152600c602052604090205460ff165b8061282a57506001600160a01b0384166000908152600c602052604090205460ff165b905060006001600160a01b03861630148061284d57506001600160a01b03851630145b6014549091506000906001600160a01b03888116911614801561288c57506001600160a01b038616737a250d5630b4cf539739df2c5dacb4c659f2488d145b806128cb57506014546001600160a01b0387811691161480156128cb57506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b905081806128d65750805b806128de5750825b806128e65750835b156128fb576128f6878787612d0e565b612a99565b601f54610100900460ff166129e9576000546001600160a01b0388811691161480159061293657506000546001600160a01b03878116911614155b156129e957601154600160401b900460ff161561299257856001600160a01b0316876001600160a01b0316600080516020613bb7833981519152600060405161298191815260200190565b60405180910390a350505050505050565b601f54610100900460ff166129e95760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c656400000000000000000060448201526064016112e9565b6014546000906001600160a01b0389811691161480612a2457506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6014549091506000906001600160a01b0389811691161480612a6257506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b9050612a718989898585612dc7565b601154600160481b900460ff1615612a96575060009450849350839250829150819050805b50505b50505050505050565b601d805460ff191660019081179091553060009081526020919091526040812054601154909190612ae790600160201b810460ff9081169163010000009004166139e6565b60ff1690506000600a54905083811115612b0957600b5460ff1615612b095750825b80831080612b19575061ffff8216155b15612b2657505050612c7b565b60115460009061ffff841690612b46906301000000900460ff1684613b1b565b612b509190613a0b565b60115490915060009061ffff851690612b7390600160201b900460ff1685613b1b565b612b7d9190613a0b565b60115490915060009061ffff861690612ba090600160301b900460ff1686613b1b565b612baa9190613a0b565b60115490915060009061ffff871690612bcd90600160281b900460ff1687613b1b565b612bd79190613a0b565b90506000612be6600286613a0b565b90506000612bf48287613b3a565b905060008484612c0488856139ce565b612c0e91906139ce565b612c1891906139ce565b905047612c2482613182565b6000612c308247613b3a565b9050600083612c3f8684613b1b565b612c499190613a0b565b9050612c5586826132ea565b6000612c618447613b3a565b9050612c6c816133c1565b50505050505050505050505050505b50601d805460ff19169055565b6000611638836001600160a01b038416613483565b6000818152600183016020526040812054612ce4575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556113a3565b5060006113a3565b6001600160a01b03811660009081526001830160205260408120541515611638565b6001600160a01b03831660009081526001602052604090205481811015612d725760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b612d7c8483613570565b612d8683836135b5565b826001600160a01b0316846001600160a01b0316600080516020613bb783398151915284604051612db991815260200190565b60405180910390a350505050565b6001600160a01b0380851660009081526001602052604080822054928816825290205484811015612e355760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b60448201526064016112e9565b6002600f54612e449190613a0b565b600a5560008315612f4957612e5a600689612cec565b612ef4576001600160a01b03881660009081526003602052604090205442101580612e8c5750601d54610100900460ff165b612ecd5760405162461bcd60e51b815260206004820152601260248201527153656c6c657220696e2073656c6c4c6f636b60701b60448201526064016112e9565b601e54612eda90426139ce565b6001600160a01b0389166000908152600360205260409020555b600f54861115612f385760405162461bcd60e51b815260206004820152600f60248201526e223ab6b810383937ba32b1ba34b7b760891b60448201526064016112e9565b50601154610100900460ff1661305b565b8415612fa857600e54612f5c87856139ce565b1115612f7a5760405162461bcd60e51b81526004016112e990613933565b601054861115612f9c5760405162461bcd60e51b81526004016112e990613933565b5060115460ff1661305b565b600e54612fb587856139ce565b1115612fd35760405162461bcd60e51b81526004016112e990613933565b612fde600689612cec565b61304d576001600160a01b038816600090815260036020526040902054421015806130105750601d54610100900460ff165b61304d5760405162461bcd60e51b815260206004820152600e60248201526d53656e64657220696e204c6f636b60901b60448201526064016112e9565b5060115462010000900460ff165b6014546001600160a01b0389811691161480159061307c5750601f5460ff16155b801561308b5750601d5460ff16155b156130995761309986612aa2565b6011546000906130f2908890849060ff600160301b8204811691600160281b81048216916130d99163010000008104821691600160201b909104166139e6565b6130e391906139e6565b6130ed91906139e6565b6135d9565b905060006131008289613b3a565b905061310c8a89613570565b306000908152600160205260408120805484929061312b9084906139ce565b9091555061313b905089826135b5565b886001600160a01b03168a6001600160a01b0316600080516020613bb78339815191528360405161316e91815260200190565b60405180910390a350505050505050505050565b60155461319a9030906001600160a01b03168361259f565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106131cf576131cf613b7d565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561322357600080fd5b505afa158015613237573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061325b9190613640565b8160018151811061326e5761326e613b7d565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b815291169063791ac947906132b490859060009086903090429060040161395d565b600060405180830381600087803b1580156132ce57600080fd5b505af11580156132e2573d6000803e3d6000fd5b505050505050565b80601c60008282546132fc91906139ce565b90915550506015546133199030906001600160a01b03168461259f565b60155460405163f305d71960e01b8152306004820181905260248201859052600060448301819052606483015260848201524260a48201526001600160a01b039091169063f305d71990839060c4016060604051808303818588803b15801561338157600080fd5b505af1158015613395573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906133ba91906137e3565b5050505050565b6018546000906064906133d79060ff1684613b1b565b6133e19190613a0b565b6018549091506000906064906134009062010000900460ff1685613b1b565b61340a9190613a0b565b60185490915060009060649061342890610100900460ff1686613b1b565b6134329190613a0b565b9050826019600082825461344691906139ce565b9250508190555081601b600082825461345f91906139ce565b9250508190555080601a600082825461347891906139ce565b909155505050505050565b600081815260018301602052604081205480156135665760006134a7600183613b3a565b85549091506000906134bb90600190613b3a565b905060008660000182815481106134d4576134d4613b7d565b90600052602060002001549050808760000184815481106134f7576134f7613b7d565b60009182526020808320909101929092558281526001890190915260409020849055865487908061352a5761352a613b67565b600190038181906000526020600020016000905590558660010160008781526020019081526020016000206000905560019450505050506113a3565b60009150506113a3565b6001600160a01b038216600090815260016020526040812054613594908390613b3a565b6001600160a01b039093166000908152600160205260409020929092555050565b6001600160a01b0382166000908152600160205260408120546135949083906139ce565b60006127108260ff168460ff16866135f19190613b1b565b6135fb9190613b1b565b6136059190613a0b565b949350505050565b803560ff8116811461361e57600080fd5b919050565b60006020828403121561363557600080fd5b813561163881613b93565b60006020828403121561365257600080fd5b815161163881613b93565b6000806040838503121561367057600080fd5b823561367b81613b93565b9150602083013561368b81613b93565b809150509250929050565b6000806000606084860312156136ab57600080fd5b83356136b681613b93565b925060208401356136c681613b93565b929592945050506040919091013590565b600080604083850312156136ea57600080fd5b82356136f581613b93565b9150602083013561368b81613ba8565b6000806040838503121561371857600080fd5b823561372381613b93565b946020939093013593505050565b60006020828403121561374357600080fd5b813561163881613ba8565b60006020828403121561376057600080fd5b815161163881613ba8565b60006020828403121561377d57600080fd5b813561ffff8116811461163857600080fd5b6000602082840312156137a157600080fd5b5035919050565b6000602082840312156137ba57600080fd5b5051919050565b600080604083850312156137d457600080fd5b50508035926020909101359150565b6000806000606084860312156137f857600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561382357600080fd5b6116388261360d565b600080600080600080600060e0888a03121561384757600080fd5b6138508861360d565b965061385e6020890161360d565b955061386c6040890161360d565b945061387a6060890161360d565b93506138886080890161360d565b925061389660a0890161360d565b91506138a460c0890161360d565b905092959891949750929550565b600060208083528351808285015260005b818110156138df578581018301518582016040015282016138c3565b818111156138f1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526012908201527143616c6c6572206e6f7420696e205465616d60701b604082015260600190565b60208082526010908201526f3bb430b63290383937ba32b1ba34b7b760811b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156139ad5784516001600160a01b031683529383019391830191600101613988565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156139e1576139e1613b51565b500190565b600060ff821660ff84168060ff03821115613a0357613a03613b51565b019392505050565b600082613a2857634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115613a68578160001904821115613a4e57613a4e613b51565b80851615613a5b57918102915b93841c9390800290613a32565b509250929050565b600061163860ff841683600082613a89575060016113a3565b81613a96575060006113a3565b8160018114613aac5760028114613ab657613ad2565b60019150506113a3565b60ff841115613ac757613ac7613b51565b50506001821b6113a3565b5060208310610133831016604e8410600b8410161715613af5575081810a6113a3565b613aff8383613a2d565b8060001904821115613b1357613b13613b51565b029392505050565b6000816000190483118215151615613b3557613b35613b51565b500290565b600082821015613b4c57613b4c613b51565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611bf657600080fd5b8015158114611bf657600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205efa1b3318facc87d506f5e59182ab6e7df9bb87d92c8bb0f4d7e5d6a7d4104b64736f6c63430008070033ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef

Deployed ByteCode Sourcemap

16344:21454:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28035:293;;;;;;;;;;-1:-1:-1;28237:12:0;;28035:293;;;28237:12;-1:-1:-1;;;28237:12:0;;;;16268:25:1;;-1:-1:-1;;;28251:10:0;;;;16324:2:1;16309:18;;16302:34;28262:13:0;;;;;16352:18:1;;;16345:34;;;;-1:-1:-1;;;28276:13:0;;;;16410:2:1;16395:18;;16388:34;28290:7:0;;;16453:3:1;16438:19;;16431:35;28237:12:0;28298:8;;;;16497:3:1;16482:19;;16475:35;28307:12:0;;;;;16541:3:1;16526:19;;16519:35;16255:3;16240:19;28035:293:0;;;;;;;;16531:68;;;;;;;;;;-1:-1:-1;16531:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;6640:25:1;;;6628:2;6613:18;16531:68:0;6486:185:1;18162:27:0;;;;;;;;;;-1:-1:-1;18162:27:0;;;;-1:-1:-1;;;18162:27:0;;-1:-1:-1;;;;;18162:27:0;;;;;;-1:-1:-1;;;;;5127:32:1;;;5109:51;;5097:2;5082:18;18162:27:0;4963:203:1;35471:94:0;;;;;;;;;;-1:-1:-1;35552:5:0;;;;;;;;;;;;-1:-1:-1;;;35552:5:0;;;;35471:94;;;;;;;:::i;31015:259::-;;;;;;;;;;;;;:::i;24470:30::-;;;;;;;;;;-1:-1:-1;24470:30:0;;;;;;;;;;;16737:4:1;16725:17;;;16707:36;;16695:2;16680:18;24470:30:0;16565:184:1;36356:161:0;;;;;;;;;;-1:-1:-1;36356:161:0;;;;;:::i;:::-;;:::i;:::-;;;6227:14:1;;6220:22;6202:41;;6190:2;6175:18;36356:161:0;6062:187:1;29437:110:0;;;;;;;;;;;;;:::i;17276:35::-;;;;;;;;;;-1:-1:-1;17276:35:0;;;;-1:-1:-1;;;17276:35:0;;;;;;;;;14514:6:1;14502:19;;;14484:38;;14472:2;14457:18;17276:35:0;14340:188:1;30233:110:0;;;;;;;;;;-1:-1:-1;30233:110:0;;;;;:::i;:::-;;:::i;24621:28::-;;;;;;;;;;;;;;;;17891:25;;;;;;;;;;-1:-1:-1;17891:25:0;;;;;;;;;;;35781:108;;;;;;;;;;-1:-1:-1;35863:18:0;;35781:108;;17001:66;;;;;;;;;;;;;:::i;17168:33::-;;;;;;;;;;-1:-1:-1;17168:33:0;;;;;;;;;;;36830:392;;;;;;;;;;-1:-1:-1;36830:392:0;;;;;:::i;:::-;;:::i;18246:34::-;;;;;;;;;;-1:-1:-1;18246:34:0;;;;-1:-1:-1;;;;;18246:34:0;;;17956:26;;;;;;;;;;-1:-1:-1;17956:26:0;;;;-1:-1:-1;;;17956:26:0;;;;;;17220:37;;;;;;;;;;-1:-1:-1;17220:37:0;;;;;;;;;;;35679:94;;;;;;;;;;-1:-1:-1;16993:1:0;35679:94;;24656:30;;;;;;;;;;;;;;;;16959:35;;;;;;;;;;;;16993:1;16959:35;;28973:91;;;;;;;;;;-1:-1:-1;28973:91:0;;;;;:::i;:::-;;:::i;17333:42::-;;;;;;;;;;-1:-1:-1;17333:42:0;;;;-1:-1:-1;;;17333:42:0;;;;;;31656:97;;;;;;;;;;-1:-1:-1;31656:97:0;;;;;:::i;:::-;;:::i;17923:26::-;;;;;;;;;;-1:-1:-1;17923:26:0;;;;;;;;;;;37238:205;;;;;;;;;;-1:-1:-1;37238:205:0;;;;;:::i;:::-;;:::i;25123:25::-;;;;;;;;;;;;;;;;24428:27;;;;;;;;;;;;;;;;34898:179;;;;;;;;;;-1:-1:-1;34898:179:0;;;;;:::i;:::-;;:::i;17836:20::-;;;;;;;;;;-1:-1:-1;17836:20:0;;;;;;;;28340:289;;;;;;;;;;-1:-1:-1;28340:289:0;;;;;:::i;:::-;;:::i;24377:38::-;;;;;;;;;;;;;;;;33538:26;;;;;;;;;;-1:-1:-1;33538:26:0;;;;;;;;;;;18196:18;;;;;;;;;;-1:-1:-1;18196:18:0;;;;-1:-1:-1;;;;;18196:18:0;;;33738:149;;;;;;;;;;-1:-1:-1;33738:149:0;;;;;:::i;:::-;;:::i;17723:46::-;;;;;;;;;;;;;;;;29210:92;;;;;;;;;;-1:-1:-1;29210:92:0;;;;;:::i;:::-;;:::i;31555:93::-;;;;;;;;;;;;;:::i;31282:265::-;;;;;;;;;;;;;:::i;17776:45::-;;;;;;;;;;;;;;;;24583:31;;;;;;;;;;;;;;;;28635:110;;;;;;;;;;-1:-1:-1;28725:12:0;;28635:110;;34604:123;;;;;;;;;;-1:-1:-1;34604:123:0;;;;;:::i;:::-;;:::i;33903:289::-;;;;;;;;;;-1:-1:-1;33903:289:0;;;;;:::i;:::-;;:::i;29555:321::-;;;;;;;;;;-1:-1:-1;29555:321:0;;;;;:::i;:::-;;:::i;16479:45::-;;;;;;;;;;-1:-1:-1;16479:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;27602:256;;;;;;;;;;-1:-1:-1;27602:256:0;;;;;:::i;:::-;;:::i;35897:121::-;;;;;;;;;;-1:-1:-1;35897:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;35992:18:0;35965:7;35992:18;;;:9;:18;;;;;;;35897:121;8128:140;;;;;;;;;;;;;:::i;17667:49::-;;;;;;;;;;;;;;;;24541:29;;;;;;;;;;-1:-1:-1;24541:29:0;;;;;;;;;;;24507:27;;;;;;;;;;-1:-1:-1;24507:27:0;;;;;;;;;;;33086:128;;;;;;;;;;-1:-1:-1;33086:128:0;;;;;:::i;:::-;;:::i;31890:107::-;;;;;;;;;;-1:-1:-1;31890:107:0;;;;;:::i;:::-;;:::i;17526:73::-;;;;;;;;;;;;17557:42;17526:73;;32856:105;;;;;;;;;;-1:-1:-1;32856:105:0;;;;;:::i;:::-;;:::i;29884:102::-;;;;;;;;;;-1:-1:-1;29884:102:0;;;;;:::i;:::-;;:::i;28822:28::-;;;;;;;;;;-1:-1:-1;28822:28:0;;;;;;;;28753;;;;;;;;;;-1:-1:-1;28753:28:0;;;;;;;;;;;35369:94;;;;;;;;;;-1:-1:-1;35421:7:0;7968:6;-1:-1:-1;;;;;7968:6:0;35369:94;;32969:109;;;;;;;;;;-1:-1:-1;32969:109:0;;;;;:::i;:::-;;:::i;18287:39::-;;;;;;;;;;-1:-1:-1;18287:39:0;;;;-1:-1:-1;;;;;18287:39:0;;;35573:98;;;;;;;;;;-1:-1:-1;35656:7:0;;;;;;;;;;;;-1:-1:-1;;;35656:7:0;;;;35573:98;;18019:25;;;;;;;;;;-1:-1:-1;18019:25:0;;;;-1:-1:-1;;;18019:25:0;;;;;;32141:580;;;;;;;;;;-1:-1:-1;32141:580:0;;;;;:::i;:::-;;:::i;34737:153::-;;;;;;;;;;;;;:::i;16774:43::-;;;;;;;;;;-1:-1:-1;16774:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17612:48;;;;;;;;;;;;;;;;37451:342;;;;;;;;;;-1:-1:-1;37451:342:0;;;;;:::i;:::-;;:::i;34208:129::-;;;;;;;;;;-1:-1:-1;34208:129:0;;;;;:::i;:::-;;:::i;36026:167::-;;;;;;;;;;-1:-1:-1;36026:167:0;;;;;:::i;:::-;;:::i;32009:118::-;;;;;;;;;;-1:-1:-1;32009:118:0;;;;;:::i;:::-;;:::i;18126:27::-;;;;;;;;;;-1:-1:-1;18126:27:0;;;;-1:-1:-1;;;18126:27:0;;;;;;34345:118;;;;;;;;;;-1:-1:-1;34345:118:0;;;;;:::i;:::-;;:::i;35085:179::-;;;;;;;;;;-1:-1:-1;35085:179:0;;;;;:::i;:::-;;:::i;16912:40::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16912:40:0;;;;;29994:231;;;;;;;;;;-1:-1:-1;29994:231:0;;;;;:::i;:::-;;:::i;34471:125::-;;;;;;;;;;-1:-1:-1;34471:125:0;;;;;:::i;:::-;;:::i;28861:104::-;;;;;;;;;;-1:-1:-1;28861:104:0;;;;;:::i;:::-;;:::i;31765:113::-;;;;;;;;;;-1:-1:-1;31765:113:0;;;;;:::i;:::-;;:::i;33624:100::-;;;;;;;;;;-1:-1:-1;33624:100:0;;;;;:::i;:::-;;:::i;18221:18::-;;;;;;;;;;-1:-1:-1;18221:18:0;;;;-1:-1:-1;;;;;18221:18:0;;;17439:80;;;;;;;;;;;;17477:42;17439:80;;17863:21;;;;;;;;;;-1:-1:-1;17863:21:0;;;;;;;;;;;16862:43;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16862:43:0;;;;;30472:126;;;;;;;;;;-1:-1:-1;30472:126:0;;;;;:::i;:::-;;:::i;30604:127::-;;;;;;;;;;-1:-1:-1;30604:127:0;;;;;:::i;:::-;;:::i;32733:111::-;;;;;;;;;;-1:-1:-1;32733:111:0;;;;;:::i;:::-;;:::i;18090:29::-;;;;;;;;;;-1:-1:-1;18090:29:0;;;;-1:-1:-1;;;18090:29:0;;;;;;30739:268;;;;;;;;;;;;;:::i;36201:147::-;;;;;;;;;;-1:-1:-1;36201:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;36312:19:0;;;36285:7;36312:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;36201:147;33228:282;;;;;;;;;;-1:-1:-1;33228:282:0;;;;;:::i;:::-;;:::i;29072:97::-;;;;;;;;;;-1:-1:-1;29072:97:0;;;;;:::i;:::-;;:::i;27870:157::-;;;;;;;;;;;;;:::i;:::-;;;;15874:25:1;;;15930:2;15915:18;;15908:34;;;;15847:18;27870:157:0;15700:248:1;29310:115:0;;;;;;;;;;-1:-1:-1;29310:115:0;;;;;:::i;:::-;;:::i;30349:111::-;;;;;;;;;;-1:-1:-1;30349:111:0;;;;;:::i;:::-;;:::i;8282:236::-;;;;;;;;;;-1:-1:-1;8282:236:0;;;;;:::i;:::-;;:::i;28788:27::-;;;;;;;;;;;;;;;;17989:23;;;;;;;;;;-1:-1:-1;17989:23:0;;;;-1:-1:-1;;;17989:23:0;;;;;;16606:45;;;;;;;;;;-1:-1:-1;16606:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;31015:259;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;;;;;;;;;31090:13:::1;::::0;;31075:14:::1;31114:15:::0;;;;31192:32:::1;::::0;31090:13;;31157:10:::1;::::0;;;31090:13;;31192:32:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31178:46;;;31243:4;31235:31;;;::::0;-1:-1:-1;;;31235:31:0;;13510:2:1;31235:31:0::1;::::0;::::1;13492:21:1::0;13549:2;13529:18;;;13522:30;-1:-1:-1;;;13568:18:1;;;13561:45;13623:18;;31235:31:0::1;13308:339:1::0;31235:31:0::1;31064:210;;;31015:259::o:0;36356:161::-;36433:4;36450:37;36459:10;36471:7;36480:6;36450:8;:37::i;:::-;-1:-1:-1;36505:4:0;36356:161;;;;;:::o;29437:110::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29513:26:::1;:15;29530:8;29513:26;:::i;:::-;29501:10;29491:21;::::0;;;:9:::1;:21;::::0;;;;:48;29437:110::o;30233:::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30313:22:::1;:9;30327:7:::0;30313:13:::1;:22::i;:::-;;30233:110:::0;:::o;17001:66::-;17054:13;16993:1;17054:2;:13;:::i;:::-;17040:27;;:11;:27;:::i;:::-;17001:66;:::o;36830:392::-;36930:4;36947:36;36957:6;36965:9;36976:6;36947:9;:36::i;:::-;-1:-1:-1;;;;;37023:19:0;;36996:24;37023:19;;;:11;:19;;;;;;;;37043:10;37023:31;;;;;;;;37073:26;;;;37065:59;;;;-1:-1:-1;;;37065:59:0;;9278:2:1;37065:59:0;;;9260:21:1;9317:2;9297:18;;;9290:30;-1:-1:-1;;;9336:18:1;;;9329:50;9396:18;;37065:59:0;9076:344:1;37065:59:0;37137:55;37146:6;37154:10;37166:25;37185:6;37166:16;:25;:::i;:::-;37137:8;:55::i;:::-;-1:-1:-1;37210:4:0;;36830:392;-1:-1:-1;;;;36830:392:0:o;28973:91::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29041:9:::1;:15:::0;28973:91::o;31656:97::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31729:8:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;31729:16:0::1;-1:-1:-1::0;;31729:16:0;;::::1;::::0;;;::::1;::::0;;31656:97::o;37238:205::-;37346:10;37320:4;37367:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37367:32:0;;;;;;;;;;37320:4;;37337:76;;37358:7;;37367:45;;37402:10;;37367:45;:::i;34898:179::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34960:3:::1;:10:::0;;-1:-1:-1;;;;;;34960:10:0::1;-1:-1:-1::0;;;;;34960:10:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;34981:11:0;;;:6:::1;:11;::::0;;;;;:18;;-1:-1:-1;;34981:18:0::1;-1:-1:-1::0;34981:18:0::1;::::0;;35024:3;;35010:18:::1;::::0;:9:::1;::::0;35024:3:::1;35010:13;:18::i;:::-;-1:-1:-1::0;35065:3:0::1;::::0;35039:30:::1;::::0;:21:::1;::::0;-1:-1:-1;;;;;35065:3:0::1;35039:25;:30::i;28340:289::-:0;-1:-1:-1;;;;;28470:25:0;;28434:7;28470:25;;;:9;:25;;;;;;28519:15;28509:25;;28506:74;;-1:-1:-1;28567:1:0;;28340:289;-1:-1:-1;;28340:289:0:o;28506:74::-;28597:24;28606:15;28597:8;:24;:::i;:::-;28590:31;28340:289;-1:-1:-1;;;28340:289:0:o;33738:149::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33835:22:::1;:44:::0;;-1:-1:-1;;;;;33835:44:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;33835:44:0;;::::1;::::0;;;::::1;::::0;;33738:149::o;29210:92::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29275:12:::1;:19:::0;;-1:-1:-1;;;;;29275:19:0;;::::1;-1:-1:-1::0;;;29275:19:0::1;::::0;;;::::1;::::0;;;::::1;::::0;;29210:92::o;31555:93::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31628:10:::1;31607:33;31282:265:::0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31359:15:::1;::::0;;31344:14:::1;31385:17:::0;;;;31465:32:::1;::::0;31359:15;;31430:10:::1;::::0;;;31359:15;;31465:32:::1;4753:205:1::0;34604:123:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34691:20:0::1;34714:5;34691:20:::0;;;:10:::1;:20;::::0;;;;:28;;-1:-1:-1;;34691:28:0::1;::::0;;34604:123::o;33903:289::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34045:30:::1;::::0;-1:-1:-1;;;34045:30:0;;34069:4:::1;34045:30;::::0;::::1;5109:51:1::0;34002:10:0;;33980:12:::1;::::0;-1:-1:-1;;;;;34045:15:0;::::1;::::0;::::1;::::0;5082:18:1;;34045:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34024:51;;34105:1;34094:10;:12;34086:49;;;::::0;-1:-1:-1;;;34086:49:0;;11782:2:1;34086:49:0::1;::::0;::::1;11764:21:1::0;11821:2;11801:18;;;11794:30;11860:26;11840:18;;;11833:54;11904:18;;34086:49:0::1;11580:348:1::0;34086:49:0::1;34146:38;::::0;-1:-1:-1;;;34146:38:0;;34161:10:::1;34146:38;::::0;::::1;5345:51:1::0;5412:18;;;5405:34;;;-1:-1:-1;;;;;34146:14:0;::::1;::::0;::::1;::::0;5318:18:1;;34146:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;33969:223;;33903:289:::0;:::o;29555:321::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29645:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;;:25;-1:-1:-1;29645:25:0::1;29637:55;;;::::0;-1:-1:-1;;;29637:55:0;;13164:2:1;29637:55:0::1;::::0;::::1;13146:21:1::0;13203:2;13183:18;;;13176:30;-1:-1:-1;;;13222:18:1;;;13215:47;13279:18;;29637:55:0::1;12962:341:1::0;29637:55:0::1;29728:13;16993:1;29728:2;:13;:::i;:::-;29721:20;::::0;:6;:20:::1;:::i;:::-;-1:-1:-1::0;;;;;29703:15:0;::::1;;::::0;;;:9:::1;:15;::::0;;;;:39;;:15;;;:39:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;29787:13:0::1;::::0;-1:-1:-1;16993:1:0::1;29787:2;:13;:::i;:::-;29780:20;::::0;:6;:20:::1;:::i;:::-;29771:4;29753:24;::::0;;;:9:::1;:24;::::0;;;;:48;;:24;;;:48:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;29840:4:0::1;::::0;-1:-1:-1;;;;;;29817:51:0;::::1;-1:-1:-1::0;;;;;;;;;;;29854:13:0::1;16993:1;29854:2;:13;:::i;:::-;29847:20;::::0;:6;:20:::1;:::i;:::-;29817:51;::::0;6640:25:1;;;6628:2;6613:18;29817:51:0::1;;;;;;;;29555:321:::0;;:::o;27602:256::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;27696:4:::1;27678:24;::::0;;;:9:::1;:24;::::0;;;;;:34;-1:-1:-1;27678:34:0::1;27670:43;;;::::0;::::1;;27742:4;27724:24;::::0;;;:9:::1;:24;::::0;;;;:34;;27752:6;;27724:24;:34:::1;::::0;27752:6;;27724:34:::1;:::i;:::-;;;;;;;;27791:6;27769:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;27813:37:0::1;::::0;6640:25:1;;;17557:42:0::1;::::0;27830:4:::1;::::0;-1:-1:-1;;;;;;;;;;;27813:37:0;6628:2:1;6613:18;27813:37:0::1;;;;;;;27602:256:::0;:::o;8128:140::-;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;10722:2:1;8028:66:0;;;10704:21:1;;;10741:18;;;10734:30;10800:34;10780:18;;;10773:62;10852:18;;8028:66:0;10520:356:1;8028:66:0;8227:1:::1;8211:6:::0;;8190:40:::1;::::0;-1:-1:-1;;;;;8211:6:0;;::::1;::::0;8190:40:::1;::::0;8227:1;;8190:40:::1;8258:1;8241:19:::0;;-1:-1:-1;;;;;;8241:19:0::1;::::0;;8128:140::o;33086:128::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33174:32:::1;33193:12;:4:::0;33200:5:::1;33193:12;:::i;:::-;33174:18;:32::i;:::-;33086:128:::0;:::o;31890:107::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31964:16:::1;:25:::0;;;::::1;;;;-1:-1:-1::0;;31964:25:0;;::::1;::::0;;;::::1;::::0;;31890:107::o;32856:105::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32933:11:::1;:20:::0;;::::1;::::0;;::::1;;;-1:-1:-1::0;;32933:20:0;;::::1;::::0;;;::::1;::::0;;32856:105::o;29884:102::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29958:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:20;;-1:-1:-1;;29958:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29884:102::o;32969:109::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33048:13:::1;:22:::0;;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;33048:22:0;;::::1;::::0;;;::::1;::::0;;32969:109::o;32141:580::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32324:14:::1;32383::::0;32368;32339:27:::1;32355:11:::0;32339:13;:27:::1;:::i;:::-;:43;;;;:::i;:::-;:58;;;;:::i;:::-;32324:73;;32416:8;:13;;32426:3;32416:13;32408:64;;;::::0;-1:-1:-1;;;32408:64:0;;9971:2:1;32408:64:0::1;::::0;::::1;9953:21:1::0;10010:2;9990:18;;;9983:30;10049:34;10029:18;;;10022:62;-1:-1:-1;;;10100:18:1;;;10093:36;10146:19;;32408:64:0::1;9769:402:1::0;32408:64:0::1;-1:-1:-1::0;32483:12:0::1;:28:::0;;::::1;32689:24:::0;;::::1;::::0;::::1;-1:-1:-1::0;;32662:16:0;;::::1;32483:28;32662:16;-1:-1:-1::0;;32596:28:0;;::::1;-1:-1:-1::0;;;32596:28:0::1;-1:-1:-1::0;;32557:28:0;;::::1;::::0;::::1;32596::::0;;;;-1:-1:-1;;32522:24:0;;::::1;-1:-1:-1::0;;;32522:24:0::1;-1:-1:-1::0;;32483:28:0;;::::1;-1:-1:-1::0;;;32483:28:0::1;32522:24:::0;;;;-1:-1:-1;;32522:24:0;;;;;;;;;;::::1;32596:28:::0;;;;;;;;::::1;32662:16:::0;;;;32637:14;;;::::1;32662:16:::0;;;;::::1;32689:24:::0;;;::::1;;::::0;;32141:580::o;34737:153::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34807:51:::1;::::0;34794:9:::1;::::0;34807:10:::1;::::0;34831:21:::1;::::0;34794:9;34807:51;34794:9;34807:51;34831:21;34807:10;:51:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34793:65;;;34877:4;34869:13;;;::::0;::::1;37451:342:::0;37594:10;37538:4;37582:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;37582:32:0;;;;;;;;;;37633:35;;;;37625:60;;;;-1:-1:-1;;;37625:60:0;;13854:2:1;37625:60:0;;;13836:21:1;13893:2;13873:18;;;13866:30;-1:-1:-1;;;13912:18:1;;;13905:42;13964:18;;37625:60:0;13652:336:1;37625:60:0;37698:65;37707:10;37719:7;37728:34;37747:15;37728:16;:34;:::i;37698:65::-;-1:-1:-1;37781:4:0;;37451:342;-1:-1:-1;;;37451:342:0:o;34208:129::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34297:11:::1;:32:::0;;-1:-1:-1;;34297:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;34208:129::o;36026:167::-;36106:4;36123:40;36133:10;36145:9;36156:6;36123:9;:40::i;32009:118::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32091:12:::1;:28:::0;32009:118::o;34345:::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;34429:17:::1;:26:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;34429:26:0;;::::1;::::0;;;::::1;::::0;;34345:118::o;35085:179::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;35147:3:::1;:10:::0;;-1:-1:-1;;;;;;35147:10:0::1;-1:-1:-1::0;;;;;35147:10:0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;35168:11:0;;;:6:::1;:11;::::0;;;;;:18;;-1:-1:-1;;35168:18:0::1;-1:-1:-1::0;35168:18:0::1;::::0;;35211:3;;35197:18:::1;::::0;:9:::1;::::0;35211:3:::1;35197:13;:18::i;29994:231::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30078:15:0;::::1;30061:14;30078:15:::0;;;:9:::1;:15;::::0;;;;;;;30104:17;;;;30150:4:::1;30132:24:::0;;;;;:32;;30078:15;;;;30132:32:::1;::::0;30078:15;;30132:32:::1;:::i;:::-;::::0;;;-1:-1:-1;;30180:37:0::1;::::0;6640:25:1;;;30203:4:0::1;::::0;-1:-1:-1;;;;;30180:37:0;::::1;::::0;-1:-1:-1;;;;;;;;;;;30180:37:0;6628:2:1;6613:18;30180:37:0::1;6486:185:1::0;34471:125:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34558:23:0::1;;::::0;;;:10:::1;:23;::::0;;;;:30;;-1:-1:-1;;34558:30:0::1;34584:4;34558:30;::::0;;34471:125::o;28861:104::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;28934:12:::1;:23:::0;;-1:-1:-1;;28934:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28861:104::o;31765:113::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;31847:16:::1;:23:::0;;-1:-1:-1;;31847:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31765:113::o;33624:100::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33694:14:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;33694:22:0;;::::1;::::0;;;::::1;::::0;;33624:100::o;30472:126::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30556:34:::1;:21;30582:7:::0;30556:25:::1;:34::i;30604:127::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30686:37:::1;:21;30715:7:::0;30686:28:::1;:37::i;32733:111::-:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;32813:14:::1;:23:::0;;-1:-1:-1;;32813:23:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;32733:111::o;30739:268::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30817:16:::1;::::0;;30802:14:::1;30844:18:::0;;;;30925:32:::1;::::0;30817:16;;30890:10:::1;::::0;;;30817:16;;30925:32:::1;4753:205:1::0;33228:282:0;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;33363:13:::1;16993:1;33363:2;:13;:::i;:::-;33347:29;::::0;:15;:29:::1;:::i;:::-;33331:45:::0;-1:-1:-1;33413:13:0::1;16993:1;33413:2;:13;:::i;:::-;33400:26;::::0;:12;:26:::1;:::i;:::-;33437:12;:30:::0;;;;-1:-1:-1;33478:9:0::1;:24:::0;33228:282::o;29072:97::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;29140:15:::1;:21:::0;;::::1;::::0;;::::1;-1:-1:-1::0;;;29140:21:0::1;-1:-1:-1::0;;29140:21:0;;::::1;::::0;;;::::1;::::0;;29072:97::o;27870:157::-;27919:15;;27980:13;16993:1;27980:2;:13;:::i;:::-;27967:12;;:26;;;;:::i;:::-;28005:13;16993:1;28005:2;:13;:::i;:::-;27995:9;;:23;;;;:::i;:::-;27960:59;;;;27870:157;;:::o;29310:115::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29393:16:0;;;::::1;;::::0;;;:10:::1;:16;::::0;;;;:24;;-1:-1:-1;;29393:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29310:115::o;30349:111::-;18380:19;18388:10;18380:7;:19::i;:::-;18372:50;;;;-1:-1:-1;;;18372:50:0;;;;;;;:::i;:::-;30427:25:::1;:9;30444:7:::0;30427:16:::1;:25::i;8282:236::-:0;8047:10;8036:7;7941;7968:6;-1:-1:-1;;;;;7968:6:0;;7903:79;8036:7;-1:-1:-1;;;;;8036:21:0;;8028:66;;;;-1:-1:-1;;;8028:66:0;;10722:2:1;8028:66:0;;;10704:21:1;;;10741:18;;;10734:30;10800:34;10780:18;;;10773:62;10852:18;;8028:66:0;10520:356:1;8028:66:0;-1:-1:-1;;;;;8363:22:0;::::1;8355:73;;;::::0;-1:-1:-1;;;8355:73:0;;8180:2:1;8355:73:0::1;::::0;::::1;8162:21:1::0;8219:2;8199:18;;;8192:30;8258:34;8238:18;;;8231:62;-1:-1:-1;;;8309:18:1;;;8302:36;8355:19;;:73:0::1;7978:402:1::0;8355:73:0::1;8465:6;::::0;;8444:38:::1;::::0;-1:-1:-1;;;;;8444:38:0;;::::1;::::0;8465:6;::::1;::::0;8444:38:::1;::::0;::::1;8493:6;:17:::0;;-1:-1:-1;;;;;;8493:17:0::1;-1:-1:-1::0;;;;;8493:17:0;;;::::1;::::0;;;::::1;::::0;;8282:236::o;14626:152::-;14696:4;14720:50;14725:3;-1:-1:-1;;;;;14745:23:0;;14720:4;:50::i;18460:111::-;18513:4;7968:6;;-1:-1:-1;;;;;18536:13:0;;;7968:6;;18536:13;;:27;;-1:-1:-1;;;;;;;18551:12:0;;;;;:6;:12;;;;;;;;;18460:111::o;36523:299::-;-1:-1:-1;;;;;36616:19:0;;36608:49;;;;-1:-1:-1;;;36608:49:0;;8587:2:1;36608:49:0;;;8569:21:1;8626:2;8606:18;;;8599:30;-1:-1:-1;;;8645:18:1;;;8638:47;8702:18;;36608:49:0;8385:341:1;36608:49:0;-1:-1:-1;;;;;36676:21:0;;36668:49;;;;-1:-1:-1;;;36668:49:0;;10378:2:1;36668:49:0;;;10360:21:1;10417:2;10397:18;;;10390:30;-1:-1:-1;;;10436:18:1;;;10429:45;10491:18;;36668:49:0;10176:339:1;36668:49:0;-1:-1:-1;;;;;36730:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;36782:32;;6640:25:1;;;36782:32:0;;6613:18:1;36782:32:0;;;;;;;36523:299;;;:::o;19746:1893::-;-1:-1:-1;;;;;19842:20:0;;19834:51;;;;-1:-1:-1;;;19834:51:0;;7480:2:1;19834:51:0;;;7462:21:1;7519:2;7499:18;;;7492:30;-1:-1:-1;;;7538:18:1;;;7531:48;7596:18;;19834:51:0;7278:342:1;19834:51:0;-1:-1:-1;;;;;19904:23:0;;19896:52;;;;-1:-1:-1;;;19896:52:0;;8933:2:1;19896:52:0;;;8915:21:1;8972:2;8952:18;;;8945:30;-1:-1:-1;;;8991:18:1;;;8984:46;9047:18;;19896:52:0;8731:340:1;19896:52:0;19962:11;;;;19959:113;;;-1:-1:-1;;;;;19999:18:0;;;;;;:10;:18;;;;;;;;19998:19;:45;;;;-1:-1:-1;;;;;;20022:21:0;;;;;;:10;:21;;;;;;;;20021:22;19998:45;19990:70;;;;-1:-1:-1;;;19990:70:0;;12135:2:1;19990:70:0;;;12117:21:1;12174:2;12154:18;;;12147:30;-1:-1:-1;;;12193:18:1;;;12186:42;12245:18;;19990:70:0;11933:336:1;19990:70:0;20107:12;;-1:-1:-1;;;;;20099:20:0;;;-1:-1:-1;;;20107:12:0;;;;20099:20;20084:12;20151:26;:9;20099:6;20151:18;:26::i;:::-;:59;;;-1:-1:-1;20181:29:0;:9;20200;20181:18;:29::i;:::-;20151:77;;;-1:-1:-1;;;;;;20214:14:0;;;;;;:6;:14;;;;;;;;20151:77;:98;;;-1:-1:-1;;;;;;20232:17:0;;;;;;:6;:17;;;;;;;;20151:98;20132:118;-1:-1:-1;20263:23:0;-1:-1:-1;;;;;20288:21:0;;20304:4;20288:21;;:49;;-1:-1:-1;;;;;;20313:24:0;;20332:4;20313:24;20288:49;20390:19;;20263:75;;-1:-1:-1;20351:24:0;;-1:-1:-1;;;;;20380:29:0;;;20390:19;;20380:29;:59;;;;-1:-1:-1;;;;;;20413:26:0;;17477:42;20413:26;20380:59;20379:135;;;-1:-1:-1;20467:19:0;;-1:-1:-1;;;;;20454:32:0;;;20467:19;;20454:32;:59;;;;-1:-1:-1;;;;;;20490:23:0;;17477:42;20490:23;20454:59;20351:164;;20533:18;:41;;;;20555:19;20533:41;:55;;;;20578:10;20533:55;:66;;;;20592:7;20533:66;20530:1102;;;20615:43;20632:6;20640:9;20651:6;20615:16;:43::i;:::-;20530:1102;;;20704:14;;;;;;;20699:404;;7941:7;7968:6;-1:-1:-1;;;;;20743:17:0;;;7968:6;;20743:17;;;;:41;;-1:-1:-1;7941:7:0;7968:6;-1:-1:-1;;;;;20764:20:0;;;7968:6;;20764:20;;20743:41;20739:349;;;20813:10;;-1:-1:-1;;;20813:10:0;;;;20809:260;;;20873:9;-1:-1:-1;;;;;20857:28:0;20866:6;-1:-1:-1;;;;;20857:28:0;-1:-1:-1;;;;;;;;;;;20883:1:0;20857:28;;;;6640:25:1;;6628:2;6613:18;;6486:185;20857:28:0;;;;;;;;20912:7;;;;19746:1893;;;:::o;20809:260::-;21004:14;;;;;;;20996:49;;;;-1:-1:-1;;;20996:49:0;;11083:2:1;20996:49:0;;;11065:21:1;11122:2;11102:18;;;11095:30;11161:25;11141:18;;;11134:53;11204:18;;20996:49:0;10881:347:1;20996:49:0;21154:19;;21135:10;;-1:-1:-1;;;;;21146:27:0;;;21154:19;;21146:27;;:53;;-1:-1:-1;;;;;;21176:23:0;;17477:42;21176:23;21146:53;21237:19;;21135:64;;-1:-1:-1;21214:11:0;;-1:-1:-1;;;;;21226:30:0;;;21237:19;;21226:30;;:59;;-1:-1:-1;;;;;;21259:26:0;;17477:42;21259:26;21226:59;21214:71;;21300:52;21315:6;21322:9;21332:6;21339:5;21345:6;21300:14;:52::i;:::-;21372:8;;-1:-1:-1;;;21372:8:0;;;;21369:250;;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;;-1:-1:-1;21401:12:0;21369:250;20684:948;;20530:1102;19823:1816;;;;19746:1893;;;:::o;25360:1329::-;25240:27;:34;;-1:-1:-1;;25240:34:0;25270:4;25240:34;;;;;;25478:4:::1;25240:27:::0;25460:24;;;::::1;::::0;;;;;;;;25525:13:::1;::::0;25460:24;;25240:27;25511::::1;::::0;-1:-1:-1;;;25525:13:0;::::1;25240:34:::0;25525:13;;::::1;::::0;25511;;::::1;;:27;:::i;:::-;25495:43;;;;25549:19;25569:9;;25549:29;;25606:8;25592:11;:22;25589:127;;;25634:12;::::0;::::1;;25631:74;;;-1:-1:-1::0;25681:8:0;25631:74:::1;25748:11;25732:15;:27;:40;;;-1:-1:-1::0;25761:11:0::1;::::0;::::1;::::0;25732:40:::1;25729:77;;;25788:7;;;;;25729:77;25855:13;::::0;25816:25:::1;::::0;25842:36:::1;::::0;::::1;::::0;25843:25:::1;::::0;25855:13;;::::1;;;25843:11:::0;:25:::1;:::i;:::-;25842:36;;;;:::i;:::-;25929:13;::::0;25816:62;;-1:-1:-1;25889:25:0::1;::::0;25916:36:::1;::::0;::::1;::::0;25917:25:::1;::::0;-1:-1:-1;;;25929:13:0;::::1;;;25917:11:::0;:25:::1;:::i;:::-;25916:36;;;;:::i;:::-;26002:12;::::0;25889:63;;-1:-1:-1;25963:24:0::1;::::0;25989:35:::1;::::0;::::1;::::0;25990:24:::1;::::0;-1:-1:-1;;;26002:12:0;::::1;;;25990:11:::0;:24:::1;:::i;:::-;25989:35;;;;:::i;:::-;26072:10;::::0;25963:61;;-1:-1:-1;26035:22:0::1;::::0;26059:33:::1;::::0;::::1;::::0;26060:22:::1;::::0;-1:-1:-1;;;26072:10:0;::::1;;;26060:11:::0;:22:::1;:::i;:::-;26059:33;;;;:::i;:::-;26035:57:::0;-1:-1:-1;26105:16:0::1;26122:19;26140:1;26122:17:::0;:19:::1;:::i;:::-;26105:36:::0;-1:-1:-1;26152:19:0::1;26172:26;26105:36:::0;26172:17;:26:::1;:::i;:::-;26152:46:::0;-1:-1:-1;26214:17:0::1;26277:16:::0;26262:14;26232:29:::1;26244:17:::0;26152:46;26232:29:::1;:::i;:::-;:44;;;;:::i;:::-;:61;;;;:::i;:::-;26214:79:::0;-1:-1:-1;26335:21:0::1;26367:27;26214:79:::0;26367:16:::1;:27::i;:::-;26405:14;26421:41;26445:17:::0;26421:21:::1;:41;:::i;:::-;26405:58:::0;-1:-1:-1;26474:14:0::1;26512:9:::0;26492:18:::1;26499:11:::0;26405:58;26492:18:::1;:::i;:::-;26491:30;;;;:::i;:::-;26474:47;;26532:31;26546:8;26556:6;26532:13;:31::i;:::-;26574:20;26596:41;26620:17:::0;26596:21:::1;:41;:::i;:::-;26574:64;;26649:32;26668:12;26649:18;:32::i;:::-;25425:1264;;;;;;;;;;;;;;25285:1;-1:-1:-1::0;25297:27:0;:35;;-1:-1:-1;;25297:35:0;;;25360:1329::o;14792:158::-;14865:4;14889:53;14897:3;-1:-1:-1;;;;;14917:23:0;;14889:7;:53::i;12214:305::-;12277:4;13303:19;;;:12;;;:19;;;;;;12294:218;;-1:-1:-1;12337:23:0;;;;;;;;:11;:23;;;;;;;;;;;;;12411:18;;12389:19;;;:12;;;:19;;;;;;:40;;;;12444:11;;12294:218;-1:-1:-1;12495:5:0;12488:12;;14964:167;-1:-1:-1;;;;;15098:23:0;;15044:4;13303:19;;;:12;;;:19;;;;;;:24;;15068:55;13206:129;23454:351;-1:-1:-1;;;;;23573:17:0;;23549:21;23573:17;;;:9;:17;;;;;;23609:23;;;;23601:60;;;;-1:-1:-1;;;23601:60:0;;7827:2:1;23601:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;23601:60:0;7625:348:1;23601:60:0;23675:27;23688:6;23695;23675:12;:27::i;:::-;23716:28;23726:9;23737:6;23716:9;:28::i;:::-;23778:9;-1:-1:-1;;;;;23762:33:0;23771:6;-1:-1:-1;;;;;23762:33:0;-1:-1:-1;;;;;;;;;;;23788:6:0;23762:33;;;;6640:25:1;;6628:2;6613:18;;6486:185;23762:33:0;;;;;;;;23538:267;23454:351;;;:::o;21657:1785::-;-1:-1:-1;;;;;21800:20:0;;;21773:24;21800:20;;;:9;:20;;;;;;;21855:17;;;;;;;;21891:23;;;;21883:60;;;;-1:-1:-1;;;21883:60:0;;7827:2:1;21883:60:0;;;7809:21:1;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:1;;;7878:54;7949:18;;21883:60:0;7625:348:1;21883:60:0;21980:1;21970:9;;:11;;;;:::i;:::-;21958:9;:23;21994:9;22014:893;;;;22043:38;:21;22074:6;22043:30;:38::i;:::-;22039:247;;-1:-1:-1;;;;;22120:17:0;;;;;;:9;:17;;;;;;22139:15;-1:-1:-1;22120:34:0;;:52;;-1:-1:-1;22156:16:0;;;;;;;22120:52;22112:82;;;;-1:-1:-1;;;22112:82:0;;14195:2:1;22112:82:0;;;14177:21:1;14234:2;14214:18;;;14207:30;-1:-1:-1;;;14253:18:1;;;14246:48;14311:18;;22112:82:0;13993:342:1;22112:82:0;22258:12;;22242:28;;:15;:28;:::i;:::-;-1:-1:-1;;;;;22224:17:0;;;;;;:9;:17;;;;;:46;22039:247;22330:9;;22322:6;:17;;22314:44;;;;-1:-1:-1;;;22314:44:0;;9627:2:1;22314:44:0;;;9609:21:1;9666:2;9646:18;;;9639:30;-1:-1:-1;;;9685:18:1;;;9678:45;9740:18;;22314:44:0;9425:339:1;22314:44:0;-1:-1:-1;22377:8:0;;;;;;;22014:893;;;22408:5;22405:502;;;22469:12;;22444:23;22461:6;22444:16;:23;:::i;:::-;:37;;22436:65;;;;-1:-1:-1;;;22436:65:0;;;;;;;:::i;:::-;22532:8;;22524:6;:16;;22516:45;;;;-1:-1:-1;;;22516:45:0;;;;;;;:::i;:::-;-1:-1:-1;22580:7:0;;;;22405:502;;;22662:12;;22637:23;22654:6;22637:16;:23;:::i;:::-;:37;;22629:65;;;;-1:-1:-1;;;22629:65:0;;;;;;;:::i;:::-;22727:38;:21;22758:6;22727:30;:38::i;:::-;22723:139;;-1:-1:-1;;;;;22792:17:0;;;;;;:9;:17;;;;;;22811:15;-1:-1:-1;22792:34:0;;:52;;-1:-1:-1;22828:16:0;;;;;;;22792:52;22784:78;;;;-1:-1:-1;;;22784:78:0;;12821:2:1;22784:78:0;;;12803:21:1;12860:2;12840:18;;;12833:30;-1:-1:-1;;;12879:18:1;;;12872:44;12933:18;;22784:78:0;12619:338:1;22784:78:0;-1:-1:-1;22881:12:0;;;;;;;22405:502;22938:19;;-1:-1:-1;;;;;22930:27:0;;;22938:19;;22930:27;;;;22929:50;;-1:-1:-1;22962:16:0;;;;22961:17;22929:50;:82;;;;-1:-1:-1;22983:27:0;;;;22982:28;22929:82;22926:126;;;23026:26;23045:6;23026:18;:26::i;:::-;23154:12;;23066:21;;23088:79;;23102:6;;23110:3;;23154:12;-1:-1:-1;;;23154:12:0;;;;;-1:-1:-1;;;23143:10:0;;;;;23115:27;;23129:13;;;;;;-1:-1:-1;;;23115:13:0;;;;:27;:::i;:::-;:38;;;;:::i;:::-;:51;;;;:::i;:::-;23088:13;:79::i;:::-;23066:101;-1:-1:-1;23181:19:0;23201:22;23066:101;23201:6;:22;:::i;:::-;23181:42;;23239:27;23252:6;23259;23239:12;:27::i;:::-;23300:4;23282:24;;;;:9;:24;;;;;:41;;23310:13;;23282:24;:41;;23310:13;;23282:41;:::i;:::-;;;;-1:-1:-1;23339:33:0;;-1:-1:-1;23349:9:0;23360:11;23339:9;:33::i;:::-;23406:9;-1:-1:-1;;;;;23390:38:0;23399:6;-1:-1:-1;;;;;23390:38:0;-1:-1:-1;;;;;;;;;;;23416:11:0;23390:38;;;;6640:25:1;;6628:2;6613:18;;6486:185;23390:38:0;;;;;;;;21762:1680;;;;;21657:1785;;;;;:::o;26701:455::-;26794:14;;26762:56;;26779:4;;-1:-1:-1;;;;;26794:14:0;26811:6;26762:8;:56::i;:::-;26853:16;;;26867:1;26853:16;;;;;;;;26829:21;;26853:16;;;;;;;;;;-1:-1:-1;26853:16:0;26829:40;;26898:4;26880;26885:1;26880:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26880:23:0;;;:7;;;;;;;;;;:23;;;;26924:14;;:21;;;-1:-1:-1;;;26924:21:0;;;;:14;;;;;:19;;:21;;;;;26880:7;;26924:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26914:4;26919:1;26914:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;26914:31:0;;;:7;;;;;;;;;:31;26958:14;;:190;;-1:-1:-1;;;26958:190:0;;:14;;;:65;;:190;;27038:6;;26958:14;;27075:4;;27102;;27122:15;;26958:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26751:405;26701:455;:::o;27168:397::-;27262:9;27250:10;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;27314:14:0;;27282:61;;27299:4;;-1:-1:-1;;;;;27314:14:0;27331:11;27282:8;:61::i;:::-;27354:14;;:203;;-1:-1:-1;;;27354:203:0;;27425:4;27354:203;;;5791:34:1;;;5841:18;;;5834:34;;;27354:14:0;5884:18:1;;;5877:34;;;5927:18;;;5920:34;5970:19;;;5963:44;27531:15:0;6023:19:1;;;6016:35;-1:-1:-1;;;;;27354:14:0;;;;:30;;27392:9;;5725:19:1;;27354:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;27168:397;;:::o;24715:384::-;24819:14;;24781:22;;24835:3;;24807:26;;24819:14;;24807:9;:26;:::i;:::-;24806:32;;;;:::i;:::-;24886:13;;24781:57;;-1:-1:-1;24849:21:0;;24901:3;;24874:25;;24886:13;;;;;24874:9;:25;:::i;:::-;24873:31;;;;:::i;:::-;24950:11;;24849:55;;-1:-1:-1;24915:19:0;;24963:3;;24938:23;;24950:11;;;;;24938:9;:23;:::i;:::-;24937:29;;;;:::i;:::-;24915:51;;24997:14;24979:16;;:32;;;;;;;:::i;:::-;;;;;;;;25039:13;25022:15;;:30;;;;;;;:::i;:::-;;;;;;;;25078:11;25063:13;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;24715:384:0:o;12533:659::-;12599:4;12640:19;;;:12;;;:19;;;;;;12676:15;;12672:513;;12725:21;12749:14;12762:1;12749:10;:14;:::i;:::-;12798:18;;12725:38;;-1:-1:-1;12778:17:0;;12798:22;;12819:1;;12798:22;:::i;:::-;12778:42;;12846:17;12866:3;:11;;12878:9;12866:22;;;;;;;;:::i;:::-;;;;;;;;;12846:42;;12941:9;12912:3;:11;;12924:13;12912:26;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;12972:23;;;:12;;;:23;;;;;;:36;;;13033:17;;12972:3;;13033:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;13081:3;:12;;:19;13094:5;13081:19;;;;;;;;;;;13074:26;;;13124:4;13117:11;;;;;;;;12672:513;13168:5;13161:12;;;;;24164:158;-1:-1:-1;;;;;24256:15:0;;24238:17;24256:15;;;:9;:15;;;;;;:22;;24272:6;;24256:22;:::i;:::-;-1:-1:-1;;;;;24289:15:0;;;;;;;:9;:15;;;;;:25;;;;-1:-1:-1;;24164:158:0:o;23991:157::-;-1:-1:-1;;;;;24080:15:0;;24062:17;24080:15;;;:9;:15;;;;;;:22;;24096:6;;24080:22;:::i;23817:156::-;23907:7;23960:5;23946:10;23935:21;;23942:3;23935:10;;:6;:10;;;;:::i;:::-;:21;;;;:::i;:::-;23934:31;;;;:::i;:::-;23927:38;23817:156;-1:-1:-1;;;;23817:156:0:o;14::1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:247::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;683:388::-;751:6;759;812:2;800:9;791:7;787:23;783:32;780:52;;;828:1;825;818:12;780:52;867:9;854:23;886:31;911:5;886:31;:::i;:::-;936:5;-1:-1:-1;993:2:1;978:18;;965:32;1006:33;965:32;1006:33;:::i;:::-;1058:7;1048:17;;;683:388;;;;;:::o;1076:456::-;1153:6;1161;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:33;1375:32;1416:33;:::i;:::-;1076:456;;1468:7;;-1:-1:-1;;;1522:2:1;1507:18;;;;1494:32;;1076:456::o;1537:382::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1718:9;1705:23;1737:31;1762:5;1737:31;:::i;:::-;1787:5;-1:-1:-1;1844:2:1;1829:18;;1816:32;1857:30;1816:32;1857:30;:::i;1924:315::-;1992:6;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;2229:2;2214:18;;;;2201:32;;-1:-1:-1;;;1924:315:1:o;2244:241::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:28;2449:5;2427:28;:::i;2490:245::-;2557:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2658:9;2652:16;2677:28;2699:5;2677:28;:::i;2740:272::-;2798:6;2851:2;2839:9;2830:7;2826:23;2822:32;2819:52;;;2867:1;2864;2857:12;2819:52;2906:9;2893:23;2956:6;2949:5;2945:18;2938:5;2935:29;2925:57;;2978:1;2975;2968:12;3017:180;3076:6;3129:2;3117:9;3108:7;3104:23;3100:32;3097:52;;;3145:1;3142;3135:12;3097:52;-1:-1:-1;3168:23:1;;3017:180;-1:-1:-1;3017:180:1:o;3202:184::-;3272:6;3325:2;3313:9;3304:7;3300:23;3296:32;3293:52;;;3341:1;3338;3331:12;3293:52;-1:-1:-1;3364:16:1;;3202:184;-1:-1:-1;3202:184:1:o;3391:248::-;3459:6;3467;3520:2;3508:9;3499:7;3495:23;3491:32;3488:52;;;3536:1;3533;3526:12;3488:52;-1:-1:-1;;3559:23:1;;;3629:2;3614:18;;;3601:32;;-1:-1:-1;3391:248:1:o;3644:306::-;3732:6;3740;3748;3801:2;3789:9;3780:7;3776:23;3772:32;3769:52;;;3817:1;3814;3807:12;3769:52;3846:9;3840:16;3830:26;;3896:2;3885:9;3881:18;3875:25;3865:35;;3940:2;3929:9;3925:18;3919:25;3909:35;;3644:306;;;;;:::o;3955:182::-;4012:6;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4104:27;4121:9;4104:27;:::i;4142:606::-;4241:6;4249;4257;4265;4273;4281;4289;4342:3;4330:9;4321:7;4317:23;4313:33;4310:53;;;4359:1;4356;4349:12;4310:53;4382:27;4399:9;4382:27;:::i;:::-;4372:37;;4428:36;4460:2;4449:9;4445:18;4428:36;:::i;:::-;4418:46;;4483:36;4515:2;4504:9;4500:18;4483:36;:::i;:::-;4473:46;;4538:36;4570:2;4559:9;4555:18;4538:36;:::i;:::-;4528:46;;4593:37;4625:3;4614:9;4610:19;4593:37;:::i;:::-;4583:47;;4649:37;4681:3;4670:9;4666:19;4649:37;:::i;:::-;4639:47;;4705:37;4737:3;4726:9;4722:19;4705:37;:::i;:::-;4695:47;;4142:606;;;;;;;;;;:::o;6676:597::-;6788:4;6817:2;6846;6835:9;6828:21;6878:6;6872:13;6921:6;6916:2;6905:9;6901:18;6894:34;6946:1;6956:140;6970:6;6967:1;6964:13;6956:140;;;7065:14;;;7061:23;;7055:30;7031:17;;;7050:2;7027:26;7020:66;6985:10;;6956:140;;;7114:6;7111:1;7108:13;7105:91;;;7184:1;7179:2;7170:6;7159:9;7155:22;7151:31;7144:42;7105:91;-1:-1:-1;7257:2:1;7236:15;-1:-1:-1;;7232:29:1;7217:45;;;;7264:2;7213:54;;6676:597;-1:-1:-1;;;6676:597:1:o;11233:342::-;11435:2;11417:21;;;11474:2;11454:18;;;11447:30;-1:-1:-1;;;11508:2:1;11493:18;;11486:48;11566:2;11551:18;;11233:342::o;12274:340::-;12476:2;12458:21;;;12515:2;12495:18;;;12488:30;-1:-1:-1;;;12549:2:1;12534:18;;12527:46;12605:2;12590:18;;12274:340::o;14715:980::-;14977:4;15025:3;15014:9;15010:19;15056:6;15045:9;15038:25;15082:2;15120:6;15115:2;15104:9;15100:18;15093:34;15163:3;15158:2;15147:9;15143:18;15136:31;15187:6;15222;15216:13;15253:6;15245;15238:22;15291:3;15280:9;15276:19;15269:26;;15330:2;15322:6;15318:15;15304:29;;15351:1;15361:195;15375:6;15372:1;15369:13;15361:195;;;15440:13;;-1:-1:-1;;;;;15436:39:1;15424:52;;15531:15;;;;15496:12;;;;15472:1;15390:9;15361:195;;;-1:-1:-1;;;;;;;15612:32:1;;;;15607:2;15592:18;;15585:60;-1:-1:-1;;;15676:3:1;15661:19;15654:35;15573:3;14715:980;-1:-1:-1;;;14715:980:1:o;16754:128::-;16794:3;16825:1;16821:6;16818:1;16815:13;16812:39;;;16831:18;;:::i;:::-;-1:-1:-1;16867:9:1;;16754:128::o;16887:204::-;16925:3;16961:4;16958:1;16954:12;16993:4;16990:1;16986:12;17028:3;17022:4;17018:14;17013:3;17010:23;17007:49;;;17036:18;;:::i;:::-;17072:13;;16887:204;-1:-1:-1;;;16887:204:1:o;17096:217::-;17136:1;17162;17152:132;;17206:10;17201:3;17197:20;17194:1;17187:31;17241:4;17238:1;17231:15;17269:4;17266:1;17259:15;17152:132;-1:-1:-1;17298:9:1;;17096:217::o;17318:422::-;17407:1;17450:5;17407:1;17464:270;17485:7;17475:8;17472:21;17464:270;;;17544:4;17540:1;17536:6;17532:17;17526:4;17523:27;17520:53;;;17553:18;;:::i;:::-;17603:7;17593:8;17589:22;17586:55;;;17623:16;;;;17586:55;17702:22;;;;17662:15;;;;17464:270;;;17468:3;17318:422;;;;;:::o;17745:140::-;17803:5;17832:47;17873:4;17863:8;17859:19;17853:4;17939:5;17969:8;17959:80;;-1:-1:-1;18010:1:1;18024:5;;17959:80;18058:4;18048:76;;-1:-1:-1;18095:1:1;18109:5;;18048:76;18140:4;18158:1;18153:59;;;;18226:1;18221:130;;;;18133:218;;18153:59;18183:1;18174:10;;18197:5;;;18221:130;18258:3;18248:8;18245:17;18242:43;;;18265:18;;:::i;:::-;-1:-1:-1;;18321:1:1;18307:16;;18336:5;;18133:218;;18435:2;18425:8;18422:16;18416:3;18410:4;18407:13;18403:36;18397:2;18387:8;18384:16;18379:2;18373:4;18370:12;18366:35;18363:77;18360:159;;;-1:-1:-1;18472:19:1;;;18504:5;;18360:159;18551:34;18576:8;18570:4;18551:34;:::i;:::-;18621:6;18617:1;18613:6;18609:19;18600:7;18597:32;18594:58;;;18632:18;;:::i;:::-;18670:20;;17890:806;-1:-1:-1;;;17890:806:1:o;18701:168::-;18741:7;18807:1;18803;18799:6;18795:14;18792:1;18789:21;18784:1;18777:9;18770:17;18766:45;18763:71;;;18814:18;;:::i;:::-;-1:-1:-1;18854:9:1;;18701:168::o;18874:125::-;18914:4;18942:1;18939;18936:8;18933:34;;;18947:18;;:::i;:::-;-1:-1:-1;18984:9:1;;18874:125::o;19004:127::-;19065:10;19060:3;19056:20;19053:1;19046:31;19096:4;19093:1;19086:15;19120:4;19117:1;19110:15;19136:127;19197:10;19192:3;19188:20;19185:1;19178:31;19228:4;19225:1;19218:15;19252:4;19249:1;19242:15;19268:127;19329:10;19324:3;19320:20;19317:1;19310:31;19360:4;19357:1;19350:15;19384:4;19381:1;19374:15;19532:131;-1:-1:-1;;;;;19607:31:1;;19597:42;;19587:70;;19653:1;19650;19643:12;19668:118;19754:5;19747:13;19740:21;19733:5;19730:32;19720:60;;19776:1;19773;19766:12

Swarm Source

ipfs://5efa1b3318facc87d506f5e59182ab6e7df9bb87d92c8bb0f4d7e5d6a7d4104b
Block Transaction Difficulty Gas Used Reward
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.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.