Contract 0x10ed43c718714eb63d5aa57b78b54704e256024e 11

 

Contract Overview

PancakeSwap: Router v2
Balance:
0 BNB

BNB Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xdd3a831575b8f1d408194e28e6ee73f8d57f699e1f2b7eba3ca880430282a81cSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0xbb8b999fc5a706c91befac0ecbcec5a5571bb37a IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.35 BNB(Pending)
0xa6c09837a263c0011d9b5899fb0deb180a211f67da913393818de3eed47195e8Swap ETH For Exa...(pending)2021-09-23 9:12:34secs ago0xdf29cf1e8c028f8fd2c0318d170ce78ea75add46 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.293599152892281437 BNB(Pending)
0x41e76728e3fbf3a9981267060602d8af55eddecdf4c3cb4cbed02dbaa1e249aaRemove Liquidity...(pending)2021-09-23 9:12:34secs ago0x0746f2ab65b076c5063732d205e0ba9d555e9231 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xeedfb1ef78b2078565f8abc0d451973813a67f3032eaa08efcd3c4d813ca0086Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0x11bc912591f54b22efde2fb33ef1a4fabff9ab41 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xc1e5e105dfb34035453479b2d48b0b1ecccd401eb3ad8ed234d1a6ee276ac183Swap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x1eaccbf3a3327ddc7f704730486a649b5e9152a0 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.000430403 BNB(Pending)
0x817dc15ee97677cccd90f77d67dd48ed37665465f98838bf8fb1445d11ece500Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0x1f721225e0b709b689a0f905ed17db67d7e557e5 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x1d8d348018d584354052656214e3daf888472a7aeb15de0c119aaf185949185cSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x810975d53c9677d463d0e14b81c0edee2e7b399a IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.074 BNB(Pending)
0xf615aa323abee3c6bb7ce89e5a84dd74a58158ce2edd405a16e226115a0e61eaSwap ETH For Exa...(pending)2021-09-23 9:12:34secs ago0x1f4b67e07e3694c2adfb16c1e536043f4faf1796 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.225453001897440109 BNB(Pending)
0x4690ca375545a1360d7a11bf9088d9ed6095d4c911af18598f69c1cd33eb3053Remove Liquidity...(pending)2021-09-23 9:12:34secs ago0x731b0e58608792ba72fca6e4a7e119a06426f935 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xd5afbd985ebe57daa959abd001e7d6e9d50d6261e793a3adfb371932d66f327fSwap Tokens For ...(pending)2021-09-23 9:12:34secs ago0xe168409e8fc6a33850b27015555df835411889e5 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xa31d319de5f2fdd2b60fc1f8754eb64912f39fd7f7874b38c834ea713d42d4baSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x6dd73d29ee02188954b793b9cfdc5dc2a6b568f4 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.2 BNB(Pending)
0xac336b90dee13e505dac9674e9ce6c925ad1a8612eb7ebbb6fa20dd07cddaa5fSwap Exact Token...(pending)2021-09-23 9:12:34secs ago0x0bb28cd547138f72074155293ac315cab698032c IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x13edd6bdcea8c2dbfa16f6ed15f6e7befca29f2f47e2574c728bd55e6b132ae8Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0xb9920420c961d880a0a12e56578bd6abaadefd49 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x80fc4ae517c62dd51bc23be4cd185a324f9462d61b43e8db72aade9b37d35afcSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0xa18c39159ccc4b569ea701078574dc42d9c48bfa IN 0x10ed43c718714eb63d5aa57b78b54704e256024e4 BNB(Pending)
0x6b4d6ec86708b29a4d60713935eb05f582b0b68b2ef0ee55522ac458cda02000Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0xf367b908a0cb0f852210acb2944180aadfcb43e4 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x8e43f460536ee43b5f235eb764236f2e04b1cb8ca6fb4d54ce40f5c1220b9ff4Swap ETH For Exa...(pending)2021-09-23 9:12:34secs ago0x819b4688839805e963ca34fb650b59a92f14efb8 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.001146032008986498 BNB(Pending)
0xe8e6917ecb4af35d964fda1b0943cceca02f1d2c180607099afc6d803d0201aeSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x4dc7003d6190ba057a3275be41c67243f0ee9224 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.019760985 BNB(Pending)
0xcf19d63376f9b33900ecbbe15a8abef2836f0d9183a0622469578a066b17f52eSwap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x4cca7ab593c533270c3fffa212c6537eea2b77a8 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e1.130806146820495072 BNB(Pending)
0x25e71e5c8277784d64ca041017e1426987b096c56cc559b3bced9bfe5a87cf05Swap ETH For Exa...(pending)2021-09-23 9:12:34secs ago0x87cf3617fb6cdb6e897f1a48b1c5fc3c81b25633 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.047798708809364672 BNB(Pending)
0x8324bf8c0dccdea64960b0c96d3833b21b53d9c0914e9806de357eec4a774b68Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0x90be3807f8b92fa409be73061e2c1c83c2cf8505 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x34e3de96f0a9e86dbc887f3b70648e33a08fbb6962a4f645d4882080d5469a23Swap Exact ETH F...(pending)2021-09-23 9:12:34secs ago0x185ede26939b2737e5808013f3357b480cdb0b3c IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0.02 BNB(Pending)
0x5a4f9be68abbf483d6ad08af53f5687191413d88e5e14d15d344ff21f192e02eSwap Exact Token...(pending)2021-09-23 9:12:34secs ago0xae9c025417cec6c12c79af039a7771b68a784532 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xf000d8bf0b8afad0bb57cb693284cfd33345cf11411e0fa14c042a79e45fd429Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0x6aa27ff54c1724af8c0d636230ef09e9df53ea48 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0x580d7b5bceebc94338335dd6e4ae90d38ab48e73f62ef30a71d914f05afe19f9Swap Exact Token...(pending)2021-09-23 9:12:34secs ago0xfd2103bf6683387d5f8c3dfd37f089dd51e1a7ac IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
0xf3dc1a2a67c5b0d099e882897b924eab6eaa229b9a332d93105c7b27f8ed4150Swap Tokens For ...(pending)2021-09-23 9:12:34secs ago0xce4b231cdb95fa1198093172b97245cee3b7a889 IN 0x10ed43c718714eb63d5aa57b78b54704e256024e0 BNB(Pending)
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x2a2642fd9654dc87a94817759e23b022998234c9601881233662b2e08039710e111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x82db5707a1bf225a82af5cb163923dbd73bc718d0.000999997688924823 BNB
0x2a2642fd9654dc87a94817759e23b022998234c9601881233662b2e08039710e111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.199999537784964788 BNB
0xe73c729fbb559e2f9c15fa4d4675efb1501b6864efa5193dcbbd4c3991e61273111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x63f0a953b96b0e4b4b4277428e3a69d3af9aec1e0.003563236785313376 BNB
0xe73c729fbb559e2f9c15fa4d4675efb1501b6864efa5193dcbbd4c3991e61273111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.686867724547232848 BNB
0x0c63d66f08a23e85409ca15bf941484a5184dbf203701d2752b60436f8529289111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.000068073052868225 BNB
0xe98e7c6cb8007d9b5a5952c3324f25aa3cc349280797806b18e7120cd9b82a79111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20xdd2f4ed1f32d4ea0eca1cd9807922d2b194f7b918.204869620844557193 BNB
0xe98e7c6cb8007d9b5a5952c3324f25aa3cc349280797806b18e7120cd9b82a79111609432021-09-23 9:11:5044 secs ago Binance: WBNB Token PancakeSwap: Router v28.204869620844557193 BNB
0x18cce8442e97e4cc95456c485a4f1915164032014f956ef664010129593c7280111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20xbef721783ef3a1fd311c0d04c83bdbdb76e7547f0.874145946307881968 BNB
0x18cce8442e97e4cc95456c485a4f1915164032014f956ef664010129593c7280111609432021-09-23 9:11:5044 secs ago Binance: WBNB Token PancakeSwap: Router v20.874145946307881968 BNB
0xb6f3a560b0b02531926d347d222b6eee678a7c28b02fe9ce2f32db4cc96052bb111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x56ef885fc2d7ed544cfcc3c4d6d78977200bbec60.041737674510092665 BNB
0xb6f3a560b0b02531926d347d222b6eee678a7c28b02fe9ce2f32db4cc96052bb111609432021-09-23 9:11:5044 secs ago Binance: WBNB Token PancakeSwap: Router v20.041737674510092665 BNB
0x9e189593e558f0c70be0b35786d87660464a2239bff76b295cb4fecb102d6dad111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token1.5 BNB
0x611f0519a714620be3c25f7b462c8c02851d88e04be483100af2b3165de54d14111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x3d6537d0d7f286753f68f90a8bc501456fcd26940.000214007102196747 BNB
0x611f0519a714620be3c25f7b462c8c02851d88e04be483100af2b3165de54d14111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.042851924018952649 BNB
0xc54516cbb1e7d3e29afb0f2a86560e5e8c714f06e2e4fb40a0f79e0db1976df0111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x781fdcbac3c49f74a6a7b49c70ef64007b4f2b2f0.000212925082041976 BNB
0xc54516cbb1e7d3e29afb0f2a86560e5e8c714f06e2e4fb40a0f79e0db1976df0111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.210104013446336798 BNB
0x2d445b5b483435fae888c882f17e26fc3d025c950ceec93e815b4afe1c48be78111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x386c225bc5c79268c9eb70168ff122586aefbce50.000127190625910256 BNB
0x2d445b5b483435fae888c882f17e26fc3d025c950ceec93e815b4afe1c48be78111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.028126852301139227 BNB
0xa1281da6a7bdfda9facf2b4a3e6093ddaf10f306a7d84f7f35a7172b19830fe5111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.05 BNB
0x22eb56a805b88af82c9d61018f8bc19d9e8a515b0c0c18b87de437004566a777111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x27bbb28eab6b354612316747b8c251e23e424b1d0.000083030708895472 BNB
0x22eb56a805b88af82c9d61018f8bc19d9e8a515b0c0c18b87de437004566a777111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token0.016606141779094434 BNB
0x2297899b2826f224d4eaed62a806ef7d1e6b57481c0e16929e7b051deaa21f4a111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x7ca330634bfe5668176b69840e39f47ae4f1d0a40.659093606416847017 BNB
0x2297899b2826f224d4eaed62a806ef7d1e6b57481c0e16929e7b051deaa21f4a111609432021-09-23 9:11:5044 secs ago Binance: WBNB Token PancakeSwap: Router v20.659093606416847017 BNB
0xd0e447ed6a687b6012e5e3025848897c2dbcbe08d933d99d46006072d6eadc4b111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v2 Binance: WBNB Token2.22 BNB
0xd7bc5b21832af8f25a92179154f49a8dc14cf5b158ac972810963f9fb53d110a111609432021-09-23 9:11:5044 secs ago PancakeSwap: Router v20x50a25c38f8652cfc0c239878b5caabeb29f360120.000214405374978454 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PancakeRouter

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at BscScan.com on 2021-04-23
*/

// File: @uniswap\lib\contracts\libraries\TransferHelper.sol

pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');
    }
}

// File: contracts\interfaces\IPancakeRouter01.sol

pragma solidity >=0.6.2;

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function 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 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);
}

// File: contracts\interfaces\IPancakeRouter02.sol

pragma solidity >=0.6.2;

interface IPancakeRouter02 is IPancakeRouter01 {
    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;
}

// File: contracts\interfaces\IPancakeFactory.sol

pragma solidity >=0.5.0;

interface IPancakeFactory {
    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;

    function INIT_CODE_PAIR_HASH() external view returns (bytes32);
}

// File: contracts\libraries\SafeMath.sol

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

// File: contracts\interfaces\IPancakePair.sol

pragma solidity >=0.5.0;

interface IPancakePair {
    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;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

// File: contracts\libraries\PancakeLibrary.sol

pragma solidity >=0.5.0;



library PancakeLibrary {
    using SafeMath for uint;

    // returns sorted token addresses, used to handle return values from pairs sorted in this order
    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {
        require(tokenA != tokenB, 'PancakeLibrary: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'PancakeLibrary: ZERO_ADDRESS');
    }

    // calculates the CREATE2 address for a pair without making any external calls
    function pairFor(address factory, address tokenA, address tokenB) internal pure returns (address pair) {
        (address token0, address token1) = sortTokens(tokenA, tokenB);
        pair = address(uint(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'00fb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5' // init code hash
            ))));
    }

    // fetches and sorts the reserves for a pair
    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {
        (address token0,) = sortTokens(tokenA, tokenB);
        pairFor(factory, tokenA, tokenB);
        (uint reserve0, uint reserve1,) = IPancakePair(pairFor(factory, tokenA, tokenB)).getReserves();
        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
    }

    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset
    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {
        require(amountA > 0, 'PancakeLibrary: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        amountB = amountA.mul(reserveB) / reserveA;
    }

    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {
        require(amountIn > 0, 'PancakeLibrary: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(9975);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(10000).add(amountInWithFee);
        amountOut = numerator / denominator;
    }

    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {
        require(amountOut > 0, 'PancakeLibrary: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'PancakeLibrary: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(10000);
        uint denominator = reserveOut.sub(amountOut).mul(9975);
        amountIn = (numerator / denominator).add(1);
    }

    // performs chained getAmountOut calculations on any number of pairs
    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PancakeLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[0] = amountIn;
        for (uint i; i < path.length - 1; i++) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);
            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);
        }
    }

    // performs chained getAmountIn calculations on any number of pairs
    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {
        require(path.length >= 2, 'PancakeLibrary: INVALID_PATH');
        amounts = new uint[](path.length);
        amounts[amounts.length - 1] = amountOut;
        for (uint i = path.length - 1; i > 0; i--) {
            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);
            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);
        }
    }
}

// File: contracts\interfaces\IERC20.sol

pragma solidity >=0.5.0;

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

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view 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);
}

// File: contracts\interfaces\IWETH.sol

pragma solidity >=0.5.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

// File: contracts\PancakeRouter.sol

pragma solidity =0.6.6;







contract PancakeRouter is IPancakeRouter02 {
    using SafeMath for uint;

    address public immutable override factory;
    address public immutable override WETH;

    modifier ensure(uint deadline) {
        require(deadline >= block.timestamp, 'PancakeRouter: EXPIRED');
        _;
    }

    constructor(address _factory, address _WETH) public {
        factory = _factory;
        WETH = _WETH;
    }

    receive() external payable {
        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract
    }

    // **** ADD LIQUIDITY ****
    function _addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin
    ) internal virtual returns (uint amountA, uint amountB) {
        // create the pair if it doesn't exist yet
        if (IPancakeFactory(factory).getPair(tokenA, tokenB) == address(0)) {
            IPancakeFactory(factory).createPair(tokenA, tokenB);
        }
        (uint reserveA, uint reserveB) = PancakeLibrary.getReserves(factory, tokenA, tokenB);
        if (reserveA == 0 && reserveB == 0) {
            (amountA, amountB) = (amountADesired, amountBDesired);
        } else {
            uint amountBOptimal = PancakeLibrary.quote(amountADesired, reserveA, reserveB);
            if (amountBOptimal <= amountBDesired) {
                require(amountBOptimal >= amountBMin, 'PancakeRouter: INSUFFICIENT_B_AMOUNT');
                (amountA, amountB) = (amountADesired, amountBOptimal);
            } else {
                uint amountAOptimal = PancakeLibrary.quote(amountBDesired, reserveB, reserveA);
                assert(amountAOptimal <= amountADesired);
                require(amountAOptimal >= amountAMin, 'PancakeRouter: INSUFFICIENT_A_AMOUNT');
                (amountA, amountB) = (amountAOptimal, amountBDesired);
            }
        }
    }
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {
        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);
        address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);
        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);
        liquidity = IPancakePair(pair).mint(to);
    }
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {
        (amountToken, amountETH) = _addLiquidity(
            token,
            WETH,
            amountTokenDesired,
            msg.value,
            amountTokenMin,
            amountETHMin
        );
        address pair = PancakeLibrary.pairFor(factory, token, WETH);
        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);
        IWETH(WETH).deposit{value: amountETH}();
        assert(IWETH(WETH).transfer(pair, amountETH));
        liquidity = IPancakePair(pair).mint(to);
        // refund dust eth, if any
        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);
    }

    // **** REMOVE LIQUIDITY ****
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {
        address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
        IPancakePair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair
        (uint amount0, uint amount1) = IPancakePair(pair).burn(to);
        (address token0,) = PancakeLibrary.sortTokens(tokenA, tokenB);
        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);
        require(amountA >= amountAMin, 'PancakeRouter: INSUFFICIENT_A_AMOUNT');
        require(amountB >= amountBMin, 'PancakeRouter: INSUFFICIENT_B_AMOUNT');
    }
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {
        (amountToken, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, amountToken);
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, 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 virtual override returns (uint amountA, uint amountB) {
        address pair = PancakeLibrary.pairFor(factory, tokenA, tokenB);
        uint value = approveMax ? uint(-1) : liquidity;
        IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);
    }
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountToken, uint amountETH) {
        address pair = PancakeLibrary.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);
    }

    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) public virtual override ensure(deadline) returns (uint amountETH) {
        (, amountETH) = removeLiquidity(
            token,
            WETH,
            liquidity,
            amountTokenMin,
            amountETHMin,
            address(this),
            deadline
        );
        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));
        IWETH(WETH).withdraw(amountETH);
        TransferHelper.safeTransferETH(to, amountETH);
    }
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external virtual override returns (uint amountETH) {
        address pair = PancakeLibrary.pairFor(factory, token, WETH);
        uint value = approveMax ? uint(-1) : liquidity;
        IPancakePair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);
        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(
            token, liquidity, amountTokenMin, amountETHMin, to, deadline
        );
    }

    // **** SWAP ****
    // requires the initial amount to have already been sent to the first pair
    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = PancakeLibrary.sortTokens(input, output);
            uint amountOut = amounts[i + 1];
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));
            address to = i < path.length - 2 ? PancakeLibrary.pairFor(factory, output, path[i + 2]) : _to;
            IPancakePair(PancakeLibrary.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = PancakeLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {
        amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'PancakeRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, to);
    }
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'PancakeRouter: INVALID_PATH');
        amounts = PancakeLibrary.getAmountsOut(factory, msg.value, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
    }
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'PancakeRouter: INVALID_PATH');
        amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= amountInMax, 'PancakeRouter: EXCESSIVE_INPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[path.length - 1] == WETH, 'PancakeRouter: INVALID_PATH');
        amounts = PancakeLibrary.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]
        );
        _swap(amounts, path, address(this));
        IWETH(WETH).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);
    }
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        virtual
        override
        payable
        ensure(deadline)
        returns (uint[] memory amounts)
    {
        require(path[0] == WETH, 'PancakeRouter: INVALID_PATH');
        amounts = PancakeLibrary.getAmountsIn(factory, amountOut, path);
        require(amounts[0] <= msg.value, 'PancakeRouter: EXCESSIVE_INPUT_AMOUNT');
        IWETH(WETH).deposit{value: amounts[0]}();
        assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amounts[0]));
        _swap(amounts, path, to);
        // refund dust eth, if any
        if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);
    }

    // **** SWAP (supporting fee-on-transfer tokens) ****
    // requires the initial amount to have already been sent to the first pair
    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {
        for (uint i; i < path.length - 1; i++) {
            (address input, address output) = (path[i], path[i + 1]);
            (address token0,) = PancakeLibrary.sortTokens(input, output);
            IPancakePair pair = IPancakePair(PancakeLibrary.pairFor(factory, input, output));
            uint amountInput;
            uint amountOutput;
            { // scope to avoid stack too deep errors
            (uint reserve0, uint reserve1,) = pair.getReserves();
            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);
            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);
            amountOutput = PancakeLibrary.getAmountOut(amountInput, reserveInput, reserveOutput);
            }
            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));
            address to = i < path.length - 2 ? PancakeLibrary.pairFor(factory, output, path[i + 2]) : _to;
            pair.swap(amount0Out, amount1Out, to, new bytes(0));
        }
    }
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external virtual override ensure(deadline) {
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        payable
        ensure(deadline)
    {
        require(path[0] == WETH, 'PancakeRouter: INVALID_PATH');
        uint amountIn = msg.value;
        IWETH(WETH).deposit{value: amountIn}();
        assert(IWETH(WETH).transfer(PancakeLibrary.pairFor(factory, path[0], path[1]), amountIn));
        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);
        _swapSupportingFeeOnTransferTokens(path, to);
        require(
            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,
            'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT'
        );
    }
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external
        virtual
        override
        ensure(deadline)
    {
        require(path[path.length - 1] == WETH, 'PancakeRouter: INVALID_PATH');
        TransferHelper.safeTransferFrom(
            path[0], msg.sender, PancakeLibrary.pairFor(factory, path[0], path[1]), amountIn
        );
        _swapSupportingFeeOnTransferTokens(path, address(this));
        uint amountOut = IERC20(WETH).balanceOf(address(this));
        require(amountOut >= amountOutMin, 'PancakeRouter: INSUFFICIENT_OUTPUT_AMOUNT');
        IWETH(WETH).withdraw(amountOut);
        TransferHelper.safeTransferETH(to, amountOut);
    }

    // **** LIBRARY FUNCTIONS ****
    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {
        return PancakeLibrary.quote(amountA, reserveA, reserveB);
    }

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountOut)
    {
        return PancakeLibrary.getAmountOut(amountIn, reserveIn, reserveOut);
    }

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)
        public
        pure
        virtual
        override
        returns (uint amountIn)
    {
        return PancakeLibrary.getAmountIn(amountOut, reserveIn, reserveOut);
    }

    function getAmountsOut(uint amountIn, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return PancakeLibrary.getAmountsOut(factory, amountIn, path);
    }

    function getAmountsIn(uint amountOut, address[] memory path)
        public
        view
        virtual
        override
        returns (uint[] memory amounts)
    {
        return PancakeLibrary.getAmountsIn(factory, amountOut, path);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_WETH","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"amountADesired","type":"uint256"},{"internalType":"uint256","name":"amountBDesired","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amountTokenDesired","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"addLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountIn","outputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"reserveIn","type":"uint256"},{"internalType":"uint256","name":"reserveOut","type":"uint256"}],"name":"getAmountOut","outputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsIn","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"}],"name":"getAmountsOut","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"reserveA","type":"uint256"},{"internalType":"uint256","name":"reserveB","type":"uint256"}],"name":"quote","outputs":[{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidity","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETH","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"removeLiquidityETHSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermit","outputs":[{"internalType":"uint256","name":"amountToken","type":"uint256"},{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountTokenMin","type":"uint256"},{"internalType":"uint256","name":"amountETHMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityETHWithPermitSupportingFeeOnTransferTokens","outputs":[{"internalType":"uint256","name":"amountETH","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"amountAMin","type":"uint256"},{"internalType":"uint256","name":"amountBMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bool","name":"approveMax","type":"bool"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"removeLiquidityWithPermit","outputs":[{"internalType":"uint256","name":"amountA","type":"uint256"},{"internalType":"uint256","name":"amountB","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapETHForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactETHForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForETHSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokensSupportingFeeOnTransferTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactETH","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200573738038062005737833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155b062000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb5280614449528061448c52806147ec52806149cd5280614f48528061502952806150a952506155b06000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154326029913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b0565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614380915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614607565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154326029913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614380915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460792505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154e86025913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b0565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614795915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2816565b1015611d8d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154326029913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614795915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154326029913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806154326029913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614380915050565b5095945050505050565b6000610f44848484614b9a565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460792505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154e86025913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbe565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614795915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9e565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061547e6024913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155576024913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef1565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b0565b6132e78c3383876141b0565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef1565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f50616e63616b65526f757465723a204558504952454400000000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f50616e63616b65526f757465723a20494e56414c49445f504154480000000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460792505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154e86025913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614380915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154c56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806153df6029913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061550d6026913960400191505060405180910390fd5b6000613f0f856126f763ffffffff6151f216565b90506000613f23828563ffffffff6151f216565b90506000613f4983613f3d8861271063ffffffff6151f216565b9063ffffffff61527816565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152ea565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9e565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527efb7f630766e6a796048ea87d01acd3068e8ff67d078148a3fa3f4a84f69bd5609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614251565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f0576040519150601f19603f3d011682016040523d82523d6000602084013e6142f5565b606091505b5091509150818015614323575080511580614323575080806020019051602081101561432057600080fd5b50515b614378576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146015760008084838151811061439e57fe5b60200260200101518584600101815181106143b557fe5b60200260200101519150915060006143cd8383614d9e565b50905060008785600101815181106143e157fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146144295782600061442d565b6000835b91509150600060028a510388106144445788614485565b6144857f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447857fe5b60200260200101516140c6565b90506144b27f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fc576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561458757818101518382015260200161456f565b50505050905090810190601f1680156145b45780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d657600080fd5b505af11580156145ea573d6000803e3d6000fd5b505060019099019850614383975050505050505050565b50505050565b606060028251101561467a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50616e63616b654c6962726172793a20494e56414c49445f5041544800000000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469257600080fd5b506040519080825280602002602001820160405280156146bc578160200160208202803683370190505b50905082816001835103815181106146d057fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147308786600186038151811061471c57fe5b602002602001015187868151811061406b57fe5b9150915061475284848151811061474357fe5b60200260200101518383614b9a565b84600185038151811061476157fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614700565b60005b6001835103811015613e37576000808483815181106147b357fe5b60200260200101518584600101815181106147ca57fe5b60200260200101519150915060006147e28383614d9e565b50905060006148127f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486057600080fd5b505afa158015614874573d6000803e3d6000fd5b505050506040513d606081101561488a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d45782846148d7565b83835b9150915061495c828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b9550614969868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ad578260006149b1565b6000835b91509150600060028c51038a106149c8578a6149fc565b6149fc7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447857fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aac578181015183820152602001614a94565b50505050905090810190601f168015614ad95780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afb57600080fd5b505af1158015614b0f573d6000803e3d6000fd5b50506001909b019a506147989950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615408602a913960400191505060405180910390fd5b600083118015614c045750600082115b614c59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061550d6026913960400191505060405180910390fd5b6000614c7d612710614c71868863ffffffff6151f216565b9063ffffffff6151f216565b90506000614c976126f7614c71868963ffffffff614b2816565b9050614cb46001828481614ca757fe5b049063ffffffff61527816565b9695505050505050565b6000808411614d18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154a26023913960400191505060405180910390fd5b600083118015614d285750600082115b614d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061550d6026913960400191505060405180910390fd5b82614d8e858463ffffffff6151f216565b81614d9557fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061545b6023913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e60578284614e63565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f50616e63616b654c6962726172793a205a45524f5f4144445245535300000000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9157600080fd5b505afa158015614fa5573d6000803e3d6000fd5b505050506040513d6020811015614fbb57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a157604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507457600080fd5b505af1158015615088573d6000803e3d6000fd5b505050506040513d602081101561509e57600080fd5b50505b6000806150cf7f00000000000000000000000000000000000000000000000000000000000000008b8b6152ea565b915091508160001480156150e1575080155b156150f1578793508692506151e5565b60006150fe898484614cbe565b905087811161516b5785811015615160576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155576024913960400191505060405180910390fd5b8894509250826151e3565b6000615178898486614cbe565b90508981111561518457fe5b878110156151dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061547e6024913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520d5750508082028282828161520a57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152f98585614d9e565b5090506153078686866140c6565b506000806153168888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535b57600080fd5b505afa15801561536f573d6000803e3d6000fd5b505050506040513d606081101561538557600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153cc5780826153cf565b81815b9099909850965050505050505056fe50616e63616b654c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b65526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e5450616e63616b654c6962726172793a204944454e544943414c5f41444452455353455350616e63616b65526f757465723a20494e53554646494349454e545f415f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c454450616e63616b65526f757465723a204558434553534956455f494e5055545f414d4f554e5450616e63616b654c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c454450616e63616b65526f757465723a20494e53554646494349454e545f425f414d4f554e54a264697066735822122050f9ce0b8b1499ef4ba6f2ce1f3056a8561965d3708b81bf656304c936a34b7964736f6c63430006060033000000000000000000000000ca143ce32fe78f1f7019d7d551a6402fc5350c73000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ca143ce32fe78f1f7019d7d551a6402fc5350c73000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Decoded View---------------
Arg [0] : _factory (address): 0xca143ce32fe78f1f7019d7d551a6402fc5350c73
Arg [1] : _WETH (address): 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca143ce32fe78f1f7019d7d551a6402fc5350c73
Arg [1] : 000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c


Deployed ByteCode Sourcemap

16285:18405:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16759:10;:18;16773:4;16759:18;;16752:26;;;;16285:18405;;12:1:-1;9;2:12;20875:673:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20875:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;20875:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33642:260;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33642:260:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33642:260:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27996:842;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27996:842:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27996:842:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;27996:842:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27996:842:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27996:842:0;;-1:-1:-1;27996:842:0;-1:-1:-1;27996:842:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27996:842:0;;;;;;;;;;;;;;;;;34436:251;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34436:251:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34436:251:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;34436:251:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34436:251:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34436:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34436:251:0;;-1:-1:-1;34436:251:0;;-1:-1:-1;;;;;34436:251:0:i;21554:673::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;21554:673:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;21554:673:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;25241:622::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25241:622:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25241:622:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;25241:622:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25241:622:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25241:622:0;;-1:-1:-1;25241:622:0;-1:-1:-1;25241:622:0;;;;;;;;;:::i;27170:820::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;27170:820:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;27170:820:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;27170:820:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;27170:820:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;27170:820:0;;-1:-1:-1;27170:820:0;-1:-1:-1;27170:820:0;;;;;;;;;:::i;23683:714::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;23683:714:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;23683:714:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31001:710::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;31001:710:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31001:710:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;31001:710:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31001:710:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31001:710:0;;-1:-1:-1;31001:710:0;-1:-1:-1;31001:710:0;;;;;;;;;:::i;32567:837::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32567:837:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;32567:837:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;32567:837:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;32567:837:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;32567:837:0;;-1:-1:-1;32567:837:0;-1:-1:-1;32567:837:0;;;;;;;;;:::i;26475:689::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;26475:689:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;26475:689:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;26475:689:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;26475:689:0;;-1:-1:-1;26475:689:0;-1:-1:-1;26475:689:0;;;;;;;;;:::i;33910:259::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33910:259:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33910:259:0;;;;;;;;;;;;:::i;25869:600::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25869:600:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;25869:600:0;;;;;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;25869:600:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;25869:600:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;25869:600:0;;-1:-1:-1;25869:600:0;-1:-1:-1;25869:600:0;;;;;;;;;:::i;16415:38::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16415:38:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;33448:186;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33448:186:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;33448:186:0;;;;;;;;;;;;:::i;22977:700::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22977:700:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;22977:700:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;31717:844::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;31717:844:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;31717:844:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;31717:844:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;31717:844:0;;-1:-1:-1;31717:844:0;-1:-1:-1;31717:844:0;;;;;;;;;:::i;20016:853::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;20016:853:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;20016:853:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;16367:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16367:41:0;;;:::i;34177:251::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34177:251:0;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;34177:251:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;34177:251:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;34177:251:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;34177:251:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;34177:251:0;;-1:-1:-1;34177:251:0;;-1:-1:-1;;;;;34177:251:0:i;22233:665::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;22233:665:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;22233:665:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;18263:734::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;18263:734:0;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;18263:734:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;19003:970;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;-1:-1;19003:970:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;28844:802::-;;;;;;15:3:-1;10;7:12;4:2;;;32:1;29;22:12;4:2;28844:802:0;;;;;;;;;;;;;;27:11:-1;11:28;;8:2;;;52:1;49;42:12;8:2;28844:802:0;;41:9:-1;34:4;18:14;14:25;11:40;8:2;;;64:1;61;54:12;8:2;28844:802:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;28844:802:0;;-1:-1:-1;28844:802:0;-1:-1:-1;28844:802:0;;;;;;;;;:::i;20875:673::-;21112:16;21130:14;21093:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21184:196:::1;21214:5;21234:4;21253:9;21277:14;21306:12;21341:4;21361:8;21184:15;:196::i;:::-;21157:223:::0;;-1:-1:-1;21157:223:0;-1:-1:-1;21391:51:0::1;21419:5:::0;21426:2;21157:223;21391:27:::1;:51::i;:::-;21459:4;21453:20;;;21474:9;21453:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;21453:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;21453:31:0;;;;21495:45;21526:2;21530:9;21495:30;:45::i;:::-;20875:673:::0;;;;;;;;;;:::o;33642:260::-;33795:14;33834:60;33862:8;33872:9;33883:10;33834:27;:60::i;:::-;33827:67;33642:260;-1:-1:-1;;;;33642:260:0:o;27996:842::-;28210:21;28182:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28257:29:::1;28282:4;28257:29;:4:::0;;28262:15;;;28257:21;;::::1;;;;;;;;;;;;;:29;;;28249:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;28339:53;28368:7;28377:8;28387:4;;28339:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28339:28:0::1;::::0;-1:-1:-1;;;28339:53:0:i:1;:::-;28329:63;;28442:12;28411:7;28436:1;28419:7;:14;:18;28411:27;;;;;;;;;;;;;;:43;;28403:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28511:139;28557:4;;28562:1;28557:7;;;;;;;;;;;;;;;28566:10;28578:49;28601:7;28610:4;;28615:1;28610:7;;;;;;;;;;;;;;;28619:4;;28624:1;28619:7;;;;;;;;;;;;;;;28578:22;:49::i;:::-;28629:7;28637:1;28629:10;;;;;;;;;;;;;;28511:31;:139::i;:::-;28661:35;28667:7;28676:4;;28661:35;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;28690:4:0::1;::::0;-1:-1:-1;28661:5:0::1;::::0;-1:-1:-1;;28661:35:0:i:1;:::-;28713:4;28707:20;;;28728:7;28753:1;28736:7;:14;:18;28728:27;;;;;;;;;;;;;;28707:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;28707:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;28707:49:0;;;;28767:63;28798:2;28802:7;28827:1;28810:7;:14;:18;28802:27;;;;;;;;;;;;;;28767:30;:63::i;:::-;27996:842:::0;;;;;;;;;:::o;34436:251::-;34580:21;34626:53;34654:7;34663:9;34674:4;34626:27;:53::i;:::-;34619:60;;34436:251;;;;;:::o;21554:673::-;21860:12;21874;21899;21914:47;21937:7;21946:6;21954;21914:22;:47::i;:::-;21899:62;;21972:10;21985;:33;;22009:9;21985:33;;;22003:2;21985:33;22029:78;;;;;;22055:10;22029:78;;;;22075:4;22029:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21972:46;;-1:-1:-1;22029:25:0;;;;;;:78;;;;;-1:-1:-1;;22029:78:0;;;;;;;;-1:-1:-1;22029:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;22029:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22029:78:0;;;;22139:80;22155:6;22163;22171:9;22182:10;22194;22206:2;22210:8;22139:15;:80::i;:::-;22118:101;;;;;;;;21554:673;;;;;;;;;;;;;;;;:::o;25241:622::-;25465:21;25446:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25509:53:::1;25538:7;25547:8;25557:4;;25509:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25509:28:0::1;::::0;-1:-1:-1;;;25509:53:0:i:1;:::-;25499:63;;25612:12;25581:7;25606:1;25589:7;:14;:18;25581:27;;;;;;;;;;;;;;:43;;25573:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25681:139;25727:4;;25732:1;25727:7;;;;;;25681:139;25831:24;25837:7;25846:4;;25831:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;25852:2:0;;-1:-1:-1;25831:5:0::1;::::0;-1:-1:-1;;25831:24:0:i:1;27170:820::-:0;27384:21;27356:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27431:29:::1;27456:4;27431:29;:4:::0;;27436:15;;;27431:21;;::::1;;;;;;;;;;;;;:29;;;27423:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27513:53;27541:7;27550:9;27561:4;;27513:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27513:27:0::1;::::0;-1:-1:-1;;;27513:53:0:i:1;:::-;27503:63;;27599:11;27585:7;27593:1;27585:10;;;;;;;;;;;;;;:25;;27577:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23683:714:::0;24001:14;24028:12;24043:44;24066:7;24075:5;24082:4;24043:22;:44::i;:::-;24028:59;;24098:10;24111;:33;;24135:9;24111:33;;;24129:2;24111:33;24155:78;;;;;;24181:10;24155:78;;;;24201:4;24155:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24098:46;;-1:-1:-1;24155:25:0;;;;;;:78;;;;;-1:-1:-1;;24155:78:0;;;;;;;;-1:-1:-1;24155:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;24155:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24155:78:0;;;;24256:133;24318:5;24325:9;24336:14;24352:12;24366:2;24370:8;24256:47;:133::i;:::-;24244:145;23683:714;-1:-1:-1;;;;;;;;;;;;;23683:714:0:o;31001:710::-;31235:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31256:137:::1;31302:4;;31307:1;31302:7;;;;;;;;;;;;;;;31311:10;31323:49;31346:7;31355:4;;31360:1;31355:7;;;;;;;;;;;;;;;31364:4;;31369:1;31364:7;;;;;;31323:49;31374:8;31256:31;:137::i;:::-;31404:18;31432:4:::0;;31437:15;;;31432:21;;::::1;;;;;;;;;;;;;31425:39;;;31465:2;31425:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31425:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31425:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;31425:43:0;31479:44:::1;::::0;;31425:43:::1;31479:44:::0;;::::1;::::0;;;;;;;;;;;31425:43;;-1:-1:-1;31479:44:0::1;::::0;;;31514:4;;;;;;31479:44;::::1;::::0;31514:4;;31479:44;31514:4;31479:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;31520:2:0;;-1:-1:-1;31479:34:0::1;::::0;-1:-1:-1;;31479:44:0:i:1;:::-;31622:12:::0;31556:62:::1;31604:13:::0;31563:4;;31568:15;;;31563:21;;::::1;;;;;;;;;;;;;31556:39;;;31596:2;31556:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;31556:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;31556:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;31556:43:0;;:62:::1;:47;:62;:::i;:::-;:78;;31534:169;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16577:1;31001:710:::0;;;;;;;:::o;32567:837::-;32834:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32868:29:::1;32893:4;32868:29;:4:::0;;32873:15;;;32868:21;;::::1;;;;;;;;;;;;;:29;;;32860:69;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32940:137;32986:4;;32991:1;32986:7;;;;;;32940:137;33088:55;33123:4;;33088:55;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;33137:4:0::1;::::0;-1:-1:-1;33088:34:0::1;::::0;-1:-1:-1;;33088:55:0:i:1;:::-;33171:37;::::0;;;;;33202:4:::1;33171:37;::::0;::::1;::::0;;;33154:14:::1;::::0;33171:22:::1;33178:4;33171:22;::::0;::::1;::::0;:37;;;;;::::1;::::0;;;;;;;;;:22;:37;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;33171:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33171:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;33171:37:0;;-1:-1:-1;33227:25:0;;::::1;;33219:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33315:4;33309:20;;;33330:9;33309:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;33309:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;33309:31:0;;;;33351:45;33382:2;33386:9;33351:30;:45::i;26475:689::-:0;26691:21;26663:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26749:4:::1;26738:15;;:4;;26743:1;26738:7;;;;;;;;;;;;;;;:15;;;26730:55;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;26806:54;26835:7;26844:9;26855:4;;26806:54;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26806:28:0::1;::::0;-1:-1:-1;;;26806:54:0:i:1;:::-;26796:64;;26910:12;26879:7;26904:1;26887:7;:14;:18;26879:27;;;;;;;;;;;;;;:43;;26871:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26985:4;26979:19;;;27006:7;27014:1;27006:10;;;;;;;;;;;;;;26979:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;26979:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;26979:40:0;;;;;27043:4;27037:20;;;27058:49;27081:7;27090:4;;27095:1;27090:7;;;;;;27058:49;27109:7;27117:1;27109:10;;;;;;;;;;;;;;27037:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;27037:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;27037:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;27037:83:0;27030:91:::1;;;;27132:24;27138:7;27147:4;;27132:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;27153:2:0;;-1:-1:-1;27132:5:0::1;::::0;-1:-1:-1;;27132:24:0:i:1;:::-;26475:689:::0;;;;;;;;:::o;33910:259::-;34063:13;34101:60;34128:9;34139;34150:10;34101:26;:60::i;25869:600::-;26093:21;26074:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26137:53:::1;26165:7;26174:9;26185:4;;26137:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;26137:27:0::1;::::0;-1:-1:-1;;;26137:53:0:i:1;:::-;26127:63;;26223:11;26209:7;26217:1;26209:10;;;;;;;;;;;;;;:25;;26201:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16415:38:::0;;;:::o;33448:186::-;33545:12;33577:49;33598:7;33607:8;33617;33577:20;:49::i;22977:700::-;23243:14;23224:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23286:196:::1;23316:5;23336:4;23355:9;23379:14;23408:12;23443:4;23463:8;23286:15;:196::i;:::-;23532:38;::::0;;;;;23564:4:::1;23532:38;::::0;::::1;::::0;;;23270:212;;-1:-1:-1;23493:78:0::1;::::0;-1:-1:-1;23521:5:0;;23528:2;;23532:23:::1;::::0;::::1;::::0;::::1;::::0;:38;;;;;::::1;::::0;;;;;;;;;:23;:38;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;23532:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23532:38:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;23532:38:0;23493:27:::1;:78::i;:::-;23588:4;23582:20;;;23603:9;23582:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;23582:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;23582:31:0;;;;23624:45;23655:2;23659:9;23624:30;:45::i;31717:844::-:0;31977:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32022:4:::1;32011:15;;:4;;32016:1;32011:7;;;;;;;;;;;;;;;:15;;;32003:55;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32069:13;32085:9;32069:25;;32111:4;32105:19;;;32132:8;32105:38;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32105:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32105:38:0;;;;;32167:4;32161:20;;;32182:49;32205:7;32214:4;;32219:1;32214:7;;;;;;32182:49;32233:8;32161:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32161:81:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32161:81:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32161:81:0;32154:89:::1;;;;32254:18;32282:4:::0;;32287:15;;;32282:21;;::::1;;;;;;;;;;;;;32275:39;;;32315:2;32275:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;32275:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;32275:43:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;32275:43:0;32329:44:::1;::::0;;32275:43:::1;32329:44:::0;;::::1;::::0;;;;;;;;;;;32275:43;;-1:-1:-1;32329:44:0::1;::::0;;;32364:4;;;;;;32329:44;::::1;::::0;32364:4;;32329:44;32364:4;32329:44;1:33:-1::1;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;32370:2:0;;-1:-1:-1;32329:34:0::1;::::0;-1:-1:-1;;32329:44:0:i:1;:::-;32472:12:::0;32406:62:::1;32454:13:::0;32413:4;;32418:15;;;32413:21;;::::1;;;;;;;;;;;;;32406:39;;;32446:2;32406:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;20016:853:0::0;20270:12;20284;20251:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20309:12:::1;20324:47;20347:7;20356:6;20364;20324:22;:47::i;:::-;20382:60;::::0;;;;;20414:10:::1;20382:60;::::0;::::1;::::0;:31:::1;::::0;::::1;:60:::0;;;;;;;;;;;;;;20309:62;;-1:-1:-1;20382:31:0;;::::1;::::0;:60;;;;;::::1;::::0;;;;;;;;;-1:-1:-1;20382:31:0;:60;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20382:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20382:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;;20510:27:0::1;::::0;;;;;:23:::1;:27:::0;;::::1;;::::0;::::1;::::0;;;20480:12:::1;::::0;;;20510:23;;::::1;::::0;::::1;::::0;:27;;;;;;;;;;;20480:12;20510:23;:27;::::1;;2:2:-1::0;::::1;;;27:1;24::::0;17:12:::1;2:2;20510:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;20510:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;20510:27:0;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;20510:27:0;-1:-1:-1;20549:14:0::1;20568:41;20594:6:::0;20602;20568:25:::1;:41::i;:::-;20548:61;;;20651:6;20641:16;;:6;:16;;;:58;;20682:7;20691;20641:58;;;20661:7;20670;20641:58;20620:79:::0;;-1:-1:-1;20620:79:0;-1:-1:-1;20718:21:0;;::::1;;20710:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20810:10;20799:7;:21;;20791:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16577:1;;;;20016:853:::0;;;;;;;;;;;:::o;16367:41::-;;;:::o;34177:251::-;34321:21;34367:53;34396:7;34405:8;34415:4;34367:28;:53::i;22233:665::-;22522:16;22540:14;22567:12;22582:44;22605:7;22614:5;22621:4;22582:22;:44::i;:::-;22567:59;;22637:10;22650;:33;;22674:9;22650:33;;;22668:2;22650:33;22694:78;;;;;;22720:10;22694:78;;;;22740:4;22694:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22637:46;;-1:-1:-1;22694:25:0;;;;;;:78;;;;;-1:-1:-1;;22694:78:0;;;;;;;;-1:-1:-1;22694:25:0;:78;;;2:2:-1;;;;27:1;24;17:12;2:2;22694:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;22694:78:0;;;;22810:80;22829:5;22836:9;22847:14;22863:12;22877:2;22881:8;22810:18;:80::i;:::-;22783:107;;;;-1:-1:-1;22233:665:0;-1:-1:-1;;;;;;;;;;;;;22233:665:0:o;18263:734::-;18551:12;18565;18579:14;18532:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18627:85:::1;18641:6;18649;18657:14;18673;18689:10;18701;18627:13;:85::i;:::-;18606:106:::0;;-1:-1:-1;18606:106:0;-1:-1:-1;18723:12:0::1;18738:47;18761:7;18770:6:::0;18778;18738:22:::1;:47::i;:::-;18723:62;;18796:66;18828:6;18836:10;18848:4;18854:7;18796:31;:66::i;:::-;18873;18905:6;18913:10;18925:4;18931:7;18873:31;:66::i;:::-;18975:4;18962:23;;;18986:2;18962:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;18962:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18962:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;18962:27:0;18263:734;;;;-1:-1:-1;18962:27:0;;-1:-1:-1;18263:734:0;;-1:-1:-1;;;;;;;;;18263:734:0:o;19003:970::-;19256:16;19274:14;19290;19237:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19344:176:::1;19372:5;19392:4;19411:18;19444:9;19468:14;19497:12;19344:13;:176::i;:::-;19317:203:::0;;-1:-1:-1;19317:203:0;-1:-1:-1;19531:12:0::1;19546:44;19569:7;19578:5:::0;19585:4:::1;19546:22;:44::i;:::-;19531:59;;19601:69;19633:5;19640:10;19652:4;19658:11;19601:31;:69::i;:::-;19687:4;19681:19;;;19708:9;19681:39;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19681:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19681:39:0;;;;;19744:4;19738:20;;;19759:4;19765:9;19738:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19738:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19738:37:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19738:37:0;19731:45:::1;;;;19812:4;19799:23;;;19823:2;19799:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;19799:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;19799:27:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;19799:27:0;;-1:-1:-1;19877:9:0::1;:21:::0;-1:-1:-1;19873:92:0::1;;;19900:65;19931:10;19955:9;19943;:21;19900:30;:65::i;:::-;16577:1;19003:970:::0;;;;;;;;;;;:::o;28844:802::-;29057:21;29029:8;16524:15;16512:8;:27;;16504:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29115:4:::1;29104:15;;:4;;29109:1;29104:7;;;;;;;;;;;;;;;:15;;;29096:55;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;29172:53;29200:7;29209:9;29220:4;;29172:53;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29172:27:0::1;::::0;-1:-1:-1;;;29172:53:0:i:1;:::-;29162:63;;29258:9;29244:7;29252:1;29244:10;;;;;;;;;;;;;;:23;;29236:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29326:4;29320:19;;;29347:7;29355:1;29347:10;;;;;;;;;;;;;;29320:40;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29320:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29320:40:0;;;;;29384:4;29378:20;;;29399:49;29422:7;29431:4;;29436:1;29431:7;;;;;;29399:49;29450:7;29458:1;29450:10;;;;;;;;;;;;;;29378:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24::::0;17:12:::1;2:2;29378:83:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;29378:83:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28::::0;21:12:::1;4:2;-1:-1:::0;29378:83:0;29371:91:::1;;;;29473:24;29479:7;29488:4;;29473:24;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16:::0;::::1;74:27:::0;;;;-1:-1;29494:2:0;;-1:-1:-1;29473:5:0::1;::::0;-1:-1:-1;;29473:24:0:i:1;:::-;29560:7;29568:1;29560:10;;;;;;;;;;;;;;29548:9;:22;29544:94;;;29572:66;29603:10;29627:7;29635:1;29627:10;;;;;;;;;;;;;;29615:9;:22;29572:30;:66::i;600:361::-:0;795:45;;;784:10;795:45;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;795:45:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;795:45:0;179:29:-1;160:49;;784:57:0;;;;749:12;;763:17;;784:10;;;;795:45;784:57;;;25:18:-1;784:57:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;784:57:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;748:93:0;;;;860:7;:57;;;;-1:-1:-1;872:11:0;;:16;;:44;;;903:4;892:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;892:24:0;872:44;852:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:361;;;;;:::o;1379:195::-;1487:12;;;1449;1487;;;;;;;;;1466:7;;;;1480:5;;1466:34;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1466:34:0;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1448:52:0;;;1519:7;1511:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1379:195;;;:::o;12757:515::-;12850:14;12896:1;12885:8;:12;12877:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12974:1;12962:9;:13;:31;;;;;12992:1;12979:10;:14;12962:31;12954:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13047:20;13070:18;:8;13083:4;13070:18;:12;:18;:::i;:::-;13047:41;-1:-1:-1;13099:14:0;13116:31;13047:41;13136:10;13116:31;:19;:31;:::i;:::-;13099:48;-1:-1:-1;13158:16:0;13177:41;13202:15;13177:20;:9;13191:5;13177:20;:13;:20;:::i;:::-;:24;:41;:24;:41;:::i;:::-;13158:60;;13253:11;13241:9;:23;;;;;;;12757:515;-1:-1:-1;;;;;;;12757:515:0:o;13945:509::-;14046:21;14103:1;14088:4;:11;:16;;14080:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14169:4;:11;14158:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14158:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14158:23:0;;14148:33;;14205:8;14192:7;14200:1;14192:10;;;;;;;;;;;;;:21;;;;;14229:6;14224:223;14255:1;14241:4;:11;:15;14237:1;:19;14224:223;;;14279:14;14295:15;14314:42;14326:7;14335:4;14340:1;14335:7;;;;;;;;;;;;;;14344:4;14349:1;14353;14349:5;14344:11;;;;;;;;;;;;;;14314;:42::i;:::-;14278:78;;;;14388:47;14401:7;14409:1;14401:10;;;;;;;;;;;;;;14413:9;14424:10;14388:12;:47::i;:::-;14371:7;14379:1;14383;14379:5;14371:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;14258:3:0;;14224:223;;;;13945:509;;;;;:::o;11237:478::-;11326:12;11352:14;11368;11386:26;11397:6;11405;11386:10;:26::i;:::-;11550:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22::-1;26:21;;;22:32;6:49;;11550:32:0;;;;;11540:43;;;;;;11453:251;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;11453:251:0;;;;;;;11443:262;;;;;;;;;11237:478;-1:-1:-1;;;;;11237:478:0:o;969:402::-;1194:51;;;1183:10;1194:51;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1194:51:0;;;;;;;25:18:-1;;61:17;;96:58;182:15;1194:51:0;179:29:-1;160:49;;1183:63:0;;;;1148:12;;1162:17;;1183:10;;;;1194:51;1183:63;;;25:18:-1;1183:63:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;139:12;;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1183:63:0;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;1147:99:0;;;;1265:7;:57;;;;-1:-1:-1;1277:11:0;;:16;;:44;;;1308:4;1297:24;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;1297:24:0;1277:44;1257:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;969:402;;;;;;:::o;24508:727::-;24615:6;24610:618;24641:1;24627:4;:11;:15;24623:1;:19;24610:618;;;24665:13;24680:14;24699:4;24704:1;24699:7;;;;;;;;;;;;;;24708:4;24713:1;24717;24713:5;24708:11;;;;;;;;;;;;;;24664:56;;;;24736:14;24755:40;24781:5;24788:6;24755:25;:40::i;:::-;24735:60;;;24810:14;24827:7;24835:1;24839;24835:5;24827:14;;;;;;;;;;;;;;24810:31;;24857:15;24874;24902:6;24893:15;;:5;:15;;;:61;;24935:9;24951:1;24893:61;;;24917:1;24921:9;24893:61;24856:98;;;;24969:10;25000:1;24986:4;:11;:15;24982:1;:19;:80;;25059:3;24982:80;;;25004:52;25027:7;25036:6;25044:4;25049:1;25053;25049:5;25044:11;;;;;;;;;;;;;;25004:22;:52::i;:::-;24969:93;;25090:46;25113:7;25122:5;25129:6;25090:22;:46::i;:::-;25077:65;;;25161:10;25173;25185:2;25199:1;25189:12;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;108:14;25189:12:0;87:42:-1;143:17;;-1:-1;25189:12:0;;25077:139;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;25077:139:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25077:139:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24644:3:0;;;;;-1:-1:-1;24610:618:0;;-1:-1:-1;;;;;;;;24610:618:0;;;24508:727;;;:::o;14535:530::-;14636:21;14693:1;14678:4;:11;:16;;14670:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14759:4;:11;14748:23;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;14748:23:0;;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;125:4;109:14;101:6;88:42;144:17;;-1:-1;14748:23:0;;14738:33;;14812:9;14782:7;14807:1;14790:7;:14;:18;14782:27;;;;;;;;;;;;;;;;;:39;14846:11;;:15;;14832:226;14863:5;;14832:226;;14891:14;14907:15;14926:42;14938:7;14947:4;14956:1;14952;:5;14947:11;;;;;;;;;;;;;;14960:4;14965:1;14960:7;;;;;;;14926:42;14890:78;;;;15000:46;15012:7;15020:1;15012:10;;;;;;;;;;;;;;15024:9;15035:10;15000:11;:46::i;:::-;14983:7;14995:1;14991;:5;14983:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;14870:3:0;;14832:226;;29793:1202;29906:6;29901:1087;29932:1;29918:4;:11;:15;29914:1;:19;29901:1087;;;29956:13;29971:14;29990:4;29995:1;29990:7;;;;;;;;;;;;;;29999:4;30004:1;30008;30004:5;29999:11;;;;;;;;;;;;;;29955:56;;;;30027:14;30046:40;30072:5;30079:6;30046:25;:40::i;:::-;30026:60;;;30101:17;30134:46;30157:7;30166:5;30173:6;30134:22;:46::i;:::-;30101:80;;30196:16;30227:17;30315:13;30330;30348:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30348:18:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30348:18:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;30348:18:0;;;;;;;30314:52;;;;;-1:-1:-1;30314:52:0;;-1:-1:-1;30382:17:0;;30423:15;;;;;;;;:61;;30465:8;30475;30423:61;;;30442:8;30452;30423:61;30381:103;;;;30513:56;30556:12;30520:5;30513:23;;;30545:4;30513:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;30513:56:0;30499:70;;30599:69;30627:11;30640:12;30654:13;30599:27;:69::i;:::-;30584:84;;29901:1087;;;;30699:15;30716;30744:6;30735:15;;:5;:15;;;:67;;30780:12;30799:1;30735:67;;;30759:1;30763:12;30735:67;30698:104;;;;30817:10;30848:1;30834:4;:11;:15;30830:1;:19;:80;;30907:3;30830:80;;;30852:52;30875:7;30884:6;30892:4;30897:1;30901;30897:5;30892:11;;;;;;;30852:52;30963:12;;;30973:1;30963:12;;;;;;;;;;30925:51;;;;;;;;;;;;;;;:9;:51;;;;;;;;;;;;;;;;;;;;;;30817:93;;-1:-1:-1;30925:9:0;;;;;;30935:10;;30947;;30817:93;;30963:12;;30925:51;;;;;;;;30963:12;;30925:51;;;;30963:12;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;30925:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;30925:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;29935:3:0;;;;;-1:-1:-1;29901:1087:0;;-1:-1:-1;;;;;;;;;;29901:1087:0;7742:129;7826:5;;;7821:16;;;;7813:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13393:470;13486:13;13532:1;13520:9;:13;13512:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13611:1;13599:9;:13;:31;;;;;13629:1;13616:10;:14;13599:31;13591:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13684:14;13701:35;13730:5;13701:24;:9;13715;13701:24;:13;:24;:::i;:::-;:28;:35;:28;:35;:::i;:::-;13684:52;-1:-1:-1;13747:16:0;13766:35;13796:4;13766:25;:10;13781:9;13766:25;:14;:25;:::i;:35::-;13747:54;;13823:32;13853:1;13836:11;13824:9;:23;;;;;;;13823:32;:29;:32;:::i;:::-;13812:43;13393:470;-1:-1:-1;;;;;;13393:470:0:o;12318:317::-;12400:12;12443:1;12433:7;:11;12425:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12514:1;12503:8;:12;:28;;;;;12530:1;12519:8;:12;12503:28;12495:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12619:8;12595:21;:7;12607:8;12595:21;:11;:21;:::i;:::-;:32;;;;;;;12318:317;-1:-1:-1;;;;12318:317:0:o;10800:345::-;10875:14;10891;10936:6;10926:16;;:6;:16;;;;10918:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11021:6;11012:15;;:6;:15;;;:53;;11050:6;11058;11012:53;;;11031:6;11039;11012:53;10993:72;;-1:-1:-1;10993:72:0;-1:-1:-1;11084:20:0;;;11076:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10800:345;;;;;:::o;16881:1376::-;17194:48;;;;;;:62;:48;;;;;;;;;;;;;;;;17099:12;;;;;;17210:7;17194:32;;;;;;:48;;;;;;;;;;;;;;;:32;:48;;;2:2:-1;;;;27:1;24;17:12;2:2;17194:48:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17194:48:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;17194:48:0;:62;;;17190:146;;;17273:51;;;;;;:35;:51;;;;;;;;;;;;;;;;17289:7;17273:35;;;;;;:51;;;;;;;;;;;;;;;-1:-1:-1;17273:35:0;:51;;;2:2:-1;;;;27:1;24;17:12;2:2;17273:51:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17273:51:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;;17190:146:0;17347:13;17362;17379:51;17406:7;17415:6;17423;17379:26;:51::i;:::-;17346:84;;;;17445:8;17457:1;17445:13;:30;;;;-1:-1:-1;17462:13:0;;17445:30;17441:809;;;17514:14;;-1:-1:-1;17530:14:0;;-1:-1:-1;17441:809:0;;;17578:19;17600:56;17621:14;17637:8;17647;17600:20;:56::i;:::-;17578:78;;17693:14;17675;:32;17671:568;;17754:10;17736:14;:28;;17728:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17846:14;;-1:-1:-1;17862:14:0;-1:-1:-1;17862:14:0;17671:568;;;17918:19;17940:56;17961:14;17977:8;17987;17940:20;:56::i;:::-;17918:78;;18040:14;18022;:32;;18015:40;;;;18100:10;18082:14;:28;;18074:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18192:14;-1:-1:-1;18208:14:0;;-1:-1:-1;17671:568:0;17441:809;;16881:1376;;;;;;;;;;;:::o;7879:142::-;7931:6;7958;;;:30;;-1:-1:-1;;7973:5:0;;;7987:1;7982;7973:5;7982:1;7968:15;;;;;:20;7958:30;7950:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7606:128;7690:5;;;7685:16;;;;7677:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11773:432;11866:13;11881;11908:14;11927:26;11938:6;11946;11927:10;:26::i;:::-;11907:46;;;11964:32;11972:7;11981:6;11989;11964:7;:32::i;:::-;;12008:13;12023;12054:32;12062:7;12071:6;12079;12054:7;:32::i;:::-;12041:58;;;:60;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;12041:60:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12041:60:0;;;;;;;15:2:-1;10:3;7:11;4:2;;;31:1;28;21:12;4:2;-1:-1;12041:60:0;;;;;;;12007:94;;;;;-1:-1:-1;12007:94:0;;-1:-1:-1;12135:16:0;;;;;;;;:62;;12178:8;12188;12135:62;;;12155:8;12165;12135:62;12112:85;;;;-1:-1:-1;11773:432:0;-1:-1:-1;;;;;;;11773:432:0:o

Swarm Source

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