Contract 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 11

 
Txn Hash Method
Index
From
To
Value
0xe565e63c5f7502ba8d953eafcb321c10646f76a1e79ef6b9b3f457e08fd7b97dAny Swap Out261076092022-09-28 23:01:1615 mins ago0x4cb6f0ef0eeb503f8065af1a6e6d5dd46197d3d9 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000500569390.002
0x0682ad2ebae60ec09698817c09f234dee87886bb314179ce846ff7ac256e0e34Any Swap In261076032022-09-28 23:01:1615 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000551980980.001101705
0xcdeba604633a015b22cbc61bcd3c01eb43cc501f1a14db87f574b8a02871242aAny Swap In261075812022-09-28 23:01:1615 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000552169370.001101705
0x2340350219142a1aafb88790c90561aabc8ad2842e2ef3fc1033eed9226319aaAny Swap Out Und...261066962022-09-28 22:51:5824 mins ago0xbdd44d24dc69c809943014463ac7ffdf1d895bad IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000469093910.00100155
0xd33af3e91113943eb5ac1f0516a09c48210c92b9f29275bef20c55eb22cfcc36Any Swap In261034402022-09-28 22:22:5853 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000459171290.001101705
0x6d1286565c915e3176850968ed87a76e9c725883efe9d86140bb434dfbf38cbeAny Swap In261024022022-09-28 22:13:311 hr 3 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000440010990.001101705
0x198c0d702ed19511d39ca6eb4679e1430330164b11ff72e7c149ce857d56d6d6Any Swap Out260971532022-09-28 21:31:021 hr 45 mins ago0x7d374fe73fd8358a93c53e978477f7ba4129be0c IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000534929010.00100155
0x1d83dfe172af05499973b628eb06c76fda75fa23ba4501871b843d2e8e4b298fAny Swap Out260923372022-09-28 20:52:362 hrs 24 mins ago0x4cb6f0ef0eeb503f8065af1a6e6d5dd46197d3d9 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000715472760.002
0x441ba8201a57ebbcddeb0824eafd130968fb68e1469c871f7c6fb714062cad48Any Swap In Auto260913002022-09-28 20:47:042 hrs 29 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000628601680.001101705
0x6bdae96856eb0e7f7c534fab737fe944adcf9e360e872ecf5515a5bec5fdabb2Any Swap Out260827702022-09-28 19:49:423 hrs 27 mins ago0x4cb6f0ef0eeb503f8065af1a6e6d5dd46197d3d9 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000721723360.002
0x230796764c3331f49027bf7b225c0f9c7200f5c52f5ed1a13d5c90ca3d3c8adbAny Swap Out260623562022-09-28 17:30:055 hrs 46 mins ago0xd54e4f8a55247487dd7c8c59f14ee5c0c2889477 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0002907561761
0xc9bc5371272fa74d5bcd14217b15292e6ad760d14cc1e0b9aa5d5439d14e37ebAny Swap In260621672022-09-28 17:28:205 hrs 48 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.000311422140.001101705
0x4023fd5191324f32bb00753859cf7e1f18824bb505044685e5e8cfaccec1594eAny Swap In260621262022-09-28 17:28:055 hrs 48 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0003114409790.001101705
0x8eb1f5769d41ba88abe91007fae3cdf45605ddd239da58a25dc6ab08630e83a9Any Swap Out260612602022-09-28 17:20:425 hrs 56 mins ago0xa0f2e2f7b3ab58e3e52b74f08d94ae52778d46df IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.000063450020.00100155
0x0aa0a08181fbadb8d3704abfad4dfea98753089bd865e452af5f8c143992e3a7Any Swap In Auto260575932022-09-28 16:55:176 hrs 21 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000830070550.001101705
0x1fb852644b338b9227e306ae7a95de3aeb0a9abc4cceacd43dfad140602fcfdfAny Swap Out260424092022-09-28 15:46:487 hrs 29 mins ago0x4cb6f0ef0eeb503f8065af1a6e6d5dd46197d3d9 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000630264580.002
0x745734180a2106b3abd2e40a586cd08ba6725eec3e9cc08ba59f861679a8385fAny Swap In260423832022-09-28 15:46:487 hrs 29 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000776774040.001101705
0xe2bdcc1b931562a623adc40c0513f1988ba600700d6f23a697c43dcb86526c47Any Swap In260423442022-09-28 15:46:337 hrs 30 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000776962430.001101705
0x14ba2ed13cf993bbb01d131cd04e9a8184062157f1166929fd95926614c3316aAny Swap In Auto260421552022-09-28 15:45:337 hrs 31 mins ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000782316810.001101705
0xcfc599ea021521fdec712b660b77ea5bc56214c3cb5d7bbfdcc730bcd1b71e0bAny Swap Out Und...260399222022-09-28 15:33:457 hrs 42 mins ago0x2f04ed87b5ac8b703565469311341b0b44e315d7 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000839418630.00100155
0xf2d390ae1ede3226c7f0c276a2af9bc711310c9626e605d631a5b37b98061cd7Any Swap Out260277712022-09-28 14:38:468 hrs 37 mins ago0x4cb6f0ef0eeb503f8065af1a6e6d5dd46197d3d9 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000736097890.002
0x374020d70ef6f7a12e48fd737142392c2af431bd369d4e0c3d8470cfcb4bb338Any Swap Out Und...260275582022-09-28 14:38:018 hrs 38 mins ago0xa311f7ca3eb2fb98123a807f9b8e4bbbdbdcb2ee IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000741016640.00100155
0xec40ae2bf98614a37c5a0181696c2eaa575fabfacbcbc15a89fca521eabbc318Any Swap Out259934452022-09-28 12:17:1210 hrs 59 mins ago0x083e958db271a5ba105c0878a94507fe37f25446 IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000782288230.00100155
0x269b010b1cdea2770ee7f7dbd1880ac540241a6d180fd2f228a12cb7a0d45d41Any Swap In259932732022-09-28 12:16:1211 hrs ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0000999007840.001101705
0x8ef61c63cd2ee56b156aad663e6d0dcc725a18ad8ab47c92337b760815abb7beAny Swap In259930722022-09-28 12:15:1111 hrs 1 min ago0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a IN  0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether0.0001265772040.001101705
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xec40ae2bf98614a37c5a0181696c2eaa575fabfacbcbc15a89fca521eabbc318259934452022-09-28 12:17:1210 hrs 59 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Iron Bank: IB Token0 Ether
0x269b010b1cdea2770ee7f7dbd1880ac540241a6d180fd2f228a12cb7a0d45d41259932732022-09-28 12:16:1211 hrs ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Iron Bank: IB Token0 Ether
0x8ef61c63cd2ee56b156aad663e6d0dcc725a18ad8ab47c92337b760815abb7be259930722022-09-28 12:15:1111 hrs 1 min ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Iron Bank: IB Token0 Ether
0xc4c784dabe7afde6db987361d25b049cd210c0309e8d982ac7601434f994fd33259930182022-09-28 12:14:4111 hrs 2 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Iron Bank: IB Token0 Ether
0xf9839ff0c4f0401d6547ad53dba507ce44a9b914f7e801118419d9c5d7fe90dd259922152022-09-28 12:10:2311 hrs 6 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f46420 Ether
0xf9839ff0c4f0401d6547ad53dba507ce44a9b914f7e801118419d9c5d7fe90dd259922152022-09-28 12:10:2311 hrs 6 mins ago 0x362fa9d0bca5d19f743db50738345ce2b40ec99f 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether
0xf9839ff0c4f0401d6547ad53dba507ce44a9b914f7e801118419d9c5d7fe90dd259922152022-09-28 12:10:2311 hrs 6 mins ago 0x362fa9d0bca5d19f743db50738345ce2b40ec99f 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f8440 Ether
0x5ca1b9984d6a6ae7794b6586b8df5016b6753727be2ff29f4726ca4d1f2356bb259899732022-09-28 11:59:0711 hrs 17 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0xefaeee334f0fd1712f9a8cc375f427d9cdd40d730 Ether
0x5ca1b9984d6a6ae7794b6586b8df5016b6753727be2ff29f4726ca4d1f2356bb259899732022-09-28 11:59:0711 hrs 17 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Frax Finance: FRAX Token0 Ether
0x5ca1b9984d6a6ae7794b6586b8df5016b6753727be2ff29f4726ca4d1f2356bb259899732022-09-28 11:59:0711 hrs 17 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0xefaeee334f0fd1712f9a8cc375f427d9cdd40d730 Ether
0x5ca1b9984d6a6ae7794b6586b8df5016b6753727be2ff29f4726ca4d1f2356bb259899732022-09-28 11:59:0711 hrs 17 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0xefaeee334f0fd1712f9a8cc375f427d9cdd40d730 Ether
0xf20701ccdbea18afe83d8fe76e17041184641187cb5f0f92508106f8b246be8c259715712022-09-28 10:29:5312 hrs 46 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0xdfa46478f9e5ea86d57387849598dbfb2e964b020 Ether
0xf20701ccdbea18afe83d8fe76e17041184641187cb5f0f92508106f8b246be8c259715712022-09-28 10:29:5312 hrs 46 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x65e66a61d0a8f1e686c2d6083ad611a10d84d97a0 Ether
0xf316184a9bcda871b26c9117800b54b5aa9e86bf53e55f16fb141af869caae18259661582022-09-28 10:11:2113 hrs 5 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0xf316184a9bcda871b26c9117800b54b5aa9e86bf53e55f16fb141af869caae18259661582022-09-28 10:11:2113 hrs 5 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Frax Finance: FXS Token0 Ether
0xf316184a9bcda871b26c9117800b54b5aa9e86bf53e55f16fb141af869caae18259661582022-09-28 10:11:2113 hrs 5 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0xf316184a9bcda871b26c9117800b54b5aa9e86bf53e55f16fb141af869caae18259661582022-09-28 10:11:2113 hrs 5 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0x10166ff98920fe34dd3724c5788009a1bf1ec688600951f8387e85c41459b36e259635872022-09-28 10:05:2113 hrs 11 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x97513e975a7fa9072c72c92d8000b0db90b163c50 Ether
0x156f4165a667f3731616a71377bdad2b651dc96caf6e8339a1fd2eba1555b571259613732022-09-28 10:00:1913 hrs 16 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0xe4de4b87345815c71aa843ea4841bcdc682637bb0 Ether
0x156f4165a667f3731616a71377bdad2b651dc96caf6e8339a1fd2eba1555b571259613732022-09-28 10:00:1913 hrs 16 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x3d4e1981f822e87a1a4c05f2e4b3bcade5406ae30 Ether
0x544314ad1cd281bc71a0c490a20c2505d47ec0d9ad6ab2b078b54b5c8202bbc8259558282022-09-28 9:31:4013 hrs 45 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0x544314ad1cd281bc71a0c490a20c2505d47ec0d9ad6ab2b078b54b5c8202bbc8259558282022-09-28 9:31:4013 hrs 45 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 Frax Finance: FXS Token0 Ether
0x544314ad1cd281bc71a0c490a20c2505d47ec0d9ad6ab2b078b54b5c8202bbc8259558282022-09-28 9:31:4013 hrs 45 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0x544314ad1cd281bc71a0c490a20c2505d47ec0d9ad6ab2b078b54b5c8202bbc8259558282022-09-28 9:31:4013 hrs 45 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x922d641a426dcffaef11680e5358f34d97d112e10 Ether
0xeee1a47e05cb7b6f47167c23c12f6a25bb1b666b98277d93f77694434abc8fc6259438492022-09-28 8:39:5814 hrs 36 mins ago 0x80a16016cc4a2e6a2caca8a4a498b1699ff0f844 0x4e720dd3ac5cfe1e1fbde4935f386bb1c66f46420 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6Router

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Optimistic.Etherscan.io on 2022-02-17
*/

/**
 *Submitted for verification at BscScan.com on 2022-01-28
*/

/**
 *Submitted for verification at snowtrace.io on 2022-01-28
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity >=0.8.2;

interface ISushiswapV2Pair {
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
}

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

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

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

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

library SushiswapV2Library {
    using SafeMathSushiswap 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, 'SushiswapV2Library: IDENTICAL_ADDRESSES');
        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        require(token0 != address(0), 'SushiswapV2Library: 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(uint160(uint256(keccak256(abi.encodePacked(
                hex'ff',
                factory,
                keccak256(abi.encodePacked(token0, token1)),
                hex'e18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303' // 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);
        (uint reserve0, uint reserve1,) = ISushiswapV2Pair(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, 'SushiswapV2Library: INSUFFICIENT_AMOUNT');
        require(reserveA > 0 && reserveB > 0, 'SushiswapV2Library: 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, 'SushiswapV2Library: INSUFFICIENT_INPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint amountInWithFee = amountIn.mul(997);
        uint numerator = amountInWithFee.mul(reserveOut);
        uint denominator = reserveIn.mul(1000).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, 'SushiswapV2Library: INSUFFICIENT_OUTPUT_AMOUNT');
        require(reserveIn > 0 && reserveOut > 0, 'SushiswapV2Library: INSUFFICIENT_LIQUIDITY');
        uint numerator = reserveIn.mul(amountOut).mul(1000);
        uint denominator = reserveOut.sub(amountOut).mul(997);
        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, 'SushiswapV2Library: 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, 'SushiswapV2Library: 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);
        }
    }
}

// helper methods for interacting with ERC20 tokens and sending NATIVE 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 safeTransferNative(address to, uint value) internal {
        (bool success,) = to.call{value:value}(new bytes(0));
        require(success, 'TransferHelper: NATIVE_TRANSFER_FAILED');
    }
}

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

interface AnyswapV1ERC20 {
    function mint(address to, uint256 amount) external returns (bool);
    function burn(address from, uint256 amount) external returns (bool);
    function setMinter(address _auth) external;
    function applyMinter() external;
    function revokeMinter(address _auth) external;
    function changeVault(address newVault) external returns (bool);
    function depositVault(uint amount, address to) external returns (uint);
    function withdrawVault(address from, uint amount, address to) external returns (uint);
    function underlying() external view returns (address);
    function deposit(uint amount, address to) external returns (uint);
    function withdraw(uint amount, address to) external returns (uint);
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV6Router {
    using SafeERC20 for IERC20;
    using SafeMathSushiswap for uint;

    address public immutable factory;
    address public immutable wNATIVE;

    bool public enableSwapTrade;
    modifier swapTradeEnabled() {
        require(enableSwapTrade, 'AnyswapV6Router: SwapTrade disabled');
        _;
    }

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

    constructor(address _factory, address _wNATIVE, address _mpc) {
        _newMPC = _mpc;
        _newMPCEffectiveTime = block.timestamp;
        factory = _factory;
        wNATIVE = _wNATIVE;
    }

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

    address private _oldMPC;
    address private _newMPC;
    uint256 private _newMPCEffectiveTime;


    event LogChangeMPC(address indexed oldMPC, address indexed newMPC, uint indexed effectiveTime, uint chainID);
    event LogChangeRouter(address indexed oldRouter, address indexed newRouter, uint chainID);
    event LogAnySwapIn(bytes32 indexed txhash, address indexed token, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, address indexed to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapOut(address indexed token, address indexed from, string to, uint amount, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForTokens(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);
    event LogAnySwapTradeTokensForNative(address[] path, address indexed from, address indexed to, uint amountIn, uint amountOutMin, uint fromChainID, uint toChainID);

    modifier onlyMPC() {
        require(msg.sender == mpc(), "AnyswapV3Router: FORBIDDEN");
        _;
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= _newMPCEffectiveTime) {
            return _newMPC;
        }
        return _oldMPC;
    }

    function cID() public view returns (uint id) {
        assembly {id := chainid()}
    }

    function setEnableSwapTrade(bool enable) external onlyMPC {
        enableSwapTrade = enable;
    }

    function changeMPC(address newMPC) public onlyMPC returns (bool) {
        require(newMPC != address(0), "AnyswapV3Router: address(0x0)");
        _oldMPC = mpc();
        _newMPC = newMPC;
        _newMPCEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeMPC(_oldMPC, _newMPC, _newMPCEffectiveTime, cID());
        return true;
    }

    function changeVault(address token, address newVault) public onlyMPC returns (bool) {
        require(newVault != address(0), "AnyswapV3Router: address(0x0)");
        return AnyswapV1ERC20(token).changeVault(newVault);
    }

    function setMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).setMinter(_auth);
    }

    function applyMinter(address token) external onlyMPC {
        return AnyswapV1ERC20(token).applyMinter();
    }

    function revokeMinter(address token, address _auth) external onlyMPC {
        return AnyswapV1ERC20(token).revokeMinter(_auth);
    }

    function _anySwapOut(address from, address token, address to, uint amount, uint toChainID) internal {
        AnyswapV1ERC20(token).burn(from, amount);
        emit LogAnySwapOut(token, from, to, amount, cID(), toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to`
    function anySwapOut(address token, address to, uint amount, uint toChainID) external {
        _anySwapOut(msg.sender, token, to, amount, toChainID);
    }

    // Swaps `amount` `token` from this chain to `toChainID` chain with recipient `to` by minting with `underlying`
    function anySwapOutUnderlying(address token, address to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, address to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    function anySwapOut(address[] calldata tokens, address[] calldata to, uint[] calldata amounts, uint[] calldata toChainIDs) external {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapOut(msg.sender, tokens[i], to[i], amounts[i], toChainIDs[i]);
        }
    }

    function anySwapOut(address token, string memory to, uint amount, uint toChainID) external {
        AnyswapV1ERC20(token).burn(msg.sender, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutUnderlying(address token, string memory to, uint amount, uint toChainID) external {
        IERC20(AnyswapV1ERC20(token).underlying()).safeTransferFrom(msg.sender, token, amount);
        emit LogAnySwapOut(token, msg.sender, to, amount, cID(), toChainID);
    }

    function anySwapOutNative(address token, string memory to, uint toChainID) external payable {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        emit LogAnySwapOut(token, msg.sender, to, msg.value, cID(), toChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    function _anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) internal {
        AnyswapV1ERC20(token).mint(to, amount);
        emit LogAnySwapIn(txs, token, to, amount, fromChainID, cID());
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID
    // triggered by `anySwapOut`
    function anySwapIn(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying`
    function anySwapInUnderlying(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20(token).withdrawVault(to, amount, to);
    }

    // swaps `amount` `token` in `fromChainID` to `to` on this chainID with `to` receiving `underlying` if possible
    function anySwapInAuto(bytes32 txs, address token, address to, uint amount, uint fromChainID) external onlyMPC {
        _anySwapIn(txs, token, to, amount, fromChainID);
        AnyswapV1ERC20 _anyToken = AnyswapV1ERC20(token);
        address _underlying = _anyToken.underlying();
        if (_underlying != address(0) && IERC20(_underlying).balanceOf(token) >= amount) {
            if (_underlying == wNATIVE) {
                _anyToken.withdrawVault(to, amount, address(this));
                IwNATIVE(wNATIVE).withdraw(amount);
                TransferHelper.safeTransferNative(to, amount);
            } else {
                _anyToken.withdrawVault(to, amount, to);
            }
        }
    }

    function depositNative(address token, address to) external payable returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        IwNATIVE(wNATIVE).deposit{value: msg.value}();
        assert(IwNATIVE(wNATIVE).transfer(token, msg.value));
        AnyswapV1ERC20(token).depositVault(msg.value, to);
        return msg.value;
    }

    function withdrawNative(address token, uint amount, address to) external returns (uint) {
        require(AnyswapV1ERC20(token).underlying() == wNATIVE, "AnyswapV3Router: underlying is not wNATIVE");
        AnyswapV1ERC20(token).withdrawVault(msg.sender, amount, address(this));
        IwNATIVE(wNATIVE).withdraw(amount);
        TransferHelper.safeTransferNative(to, amount);
        return amount;
    }

    // extracts mpc fee from bridge fees
    function anySwapFeeTo(address token, uint amount) external onlyMPC {
        address _mpc = mpc();
        AnyswapV1ERC20(token).mint(_mpc, amount);
        AnyswapV1ERC20(token).withdrawVault(_mpc, amount, _mpc);
    }

    function anySwapIn(bytes32[] calldata txs, address[] calldata tokens, address[] calldata to, uint256[] calldata amounts, uint[] calldata fromChainIDs) external onlyMPC {
        for (uint i = 0; i < tokens.length; i++) {
            _anySwapIn(txs[i], tokens[i], to[i], amounts[i], fromChainIDs[i]);
        }
    }

    // **** 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,) = SushiswapV2Library.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 ? SushiswapV2Library.pairFor(factory, output, path[i + 2]) : _to;
            ISushiswapV2Pair(SushiswapV2Library.pairFor(factory, input, output)).swap(
                amount0Out, amount1Out, to, new bytes(0)
            );
        }
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForTokensUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForTokens(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForTokens`
    function anySwapInExactTokensForTokens(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'SushiswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0], SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, to);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNative(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // sets up a cross-chain trade from this chain to `toChainID` for `path` trades to `to`
    function anySwapOutExactTokensForNativeUnderlying(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint toChainID
    ) external virtual swapTradeEnabled ensure(deadline) {
        IERC20(AnyswapV1ERC20(path[0]).underlying()).safeTransferFrom(msg.sender, path[0], amountIn);
        AnyswapV1ERC20(path[0]).depositVault(amountIn, msg.sender);
        AnyswapV1ERC20(path[0]).burn(msg.sender, amountIn);
        emit LogAnySwapTradeTokensForNative(path, msg.sender, to, amountIn, amountOutMin, cID(), toChainID);
    }

    // Swaps `amounts[path.length-1]` `path[path.length-1]` to `to` on this chain
    // Triggered by `anySwapOutExactTokensForNative`
    function anySwapInExactTokensForNative(
        bytes32 txs,
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline,
        uint fromChainID
    ) external onlyMPC virtual swapTradeEnabled ensure(deadline) returns (uint[] memory amounts) {
        require(path[path.length - 1] == wNATIVE, 'AnyswapV3Router: INVALID_PATH');
        amounts = SushiswapV2Library.getAmountsOut(factory, amountIn, path);
        require(amounts[amounts.length - 1] >= amountOutMin, 'AnyswapV3Router: INSUFFICIENT_OUTPUT_AMOUNT');
        _anySwapIn(txs, path[0],  SushiswapV2Library.pairFor(factory, path[0], path[1]), amounts[0], fromChainID);
        _swap(amounts, path, address(this));
        IwNATIVE(wNATIVE).withdraw(amounts[amounts.length - 1]);
        TransferHelper.safeTransferNative(to, amounts[amounts.length - 1]);
    }

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_factory","type":"address"},{"internalType":"address","name":"_wNATIVE","type":"address"},{"internalType":"address","name":"_mpc","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapIn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"string","name":"to","type":"string"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapOut","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fromChainID","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"LogAnySwapTradeTokensForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMPC","type":"address"},{"indexed":true,"internalType":"address","name":"newMPC","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeMPC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":true,"internalType":"address","name":"newRouter","type":"address"},{"indexed":false,"internalType":"uint256","name":"chainID","type":"uint256"}],"name":"LogChangeRouter","type":"event"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"anySwapFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32[]","name":"txs","type":"bytes32[]"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"fromChainIDs","type":"uint256[]"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapIn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInAuto","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForNative","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"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"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txs","type":"bytes32"},{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"fromChainID","type":"uint256"}],"name":"anySwapInUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"address[]","name":"to","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"toChainIDs","type":"uint256[]"}],"name":"anySwapOut","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNative","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForNativeUnderlying","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokens","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"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutExactTokensForTokensUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"toChainID","type":"uint256"}],"name":"anySwapOutUnderlying","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cID","outputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMPC","type":"address"}],"name":"changeMPC","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"depositNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"enableSwapTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableSwapTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wNATIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040523480156200001157600080fd5b506040516200445738038062004457833981016040819052620000349162000081565b600180546001600160a01b0319166001600160a01b03928316179055426002559182166080521660a052620000cb565b80516001600160a01b03811681146200007c57600080fd5b919050565b6000806000606084860312156200009757600080fd5b620000a28462000064565b9250620000b26020850162000064565b9150620000c26040850162000064565b90509250925092565b60805160a0516142c562000192600039600081816102230152818161055901528181610845015281816109050152818161125a0152818161144301528181611519015281816115cb0152818161165f01528181611afd01528181611baf01528181611c4301528181611d8b01528181611ec3015281816121690152818161221b01526122af01526000818161060b01528181610c5901528181610e2001528181610f38015281816113060152818161243d01528181612fe4015261303401526142c56000f3fe6080604052600436106102135760003560e01c8063825bb13c11610118578063ad615dec116100a0578063d8b9f6101161006f578063d8b9f6101461066d578063d9e35bb21461068d578063dcfb77b1146106ad578063edbdf5e2146106cd578063f75c2664146106ed57600080fd5b8063ad615dec146105d9578063c45a0155146105f9578063c604b0b81461062d578063d06ca61f1461064d57600080fd5b806387cc6e2f116100e757806387cc6e2f146105275780638fd903f51461054757806399a2f2d7146105935780639f122d6c146105a6578063a5e56571146105c657600080fd5b8063825bb13c146104a7578063832e9492146104c757806385f8c259146104e757806387bafe5f1461050757600080fd5b8063353cb3a81161019b578063540dd52c1161016a578063540dd52c146104215780635b7b018c1461043457806365782f56146104545780636a45397214610474578063701bb8911461049457600080fd5b8063353cb3a8146103975780633f88de89146103c1578063456862aa146103e157806352a397d51461040157600080fd5b80630bb57203116101e25780630bb57203146102ea5780631f00ca741461030a578063241dc2df1461033757806325121b76146103575780632fc1e7281461037757600080fd5b80630175b1c414610257578063049b4e7e14610277578063054d50d414610297578063085c6d5e146102ca57600080fd5b3661025257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610250576102506136d7565b005b600080fd5b34801561026357600080fd5b50610250610272366004613702565b610702565b34801561028357600080fd5b5061025061029236600461380b565b6109f4565b3480156102a357600080fd5b506102b76102b236600461386b565b610abc565b6040519081526020015b60405180910390f35b3480156102d657600080fd5b506102506102e53660046138a5565b610ad1565b3480156102f657600080fd5b5061025061030536600461390e565b610b1c565b34801561031657600080fd5b5061032a61032536600461398b565b610c52565b6040516102c19190613a49565b34801561034357600080fd5b50610250610352366004613a8d565b610c88565b34801561036357600080fd5b50610250610372366004613ad3565b610c9b565b34801561038357600080fd5b5061032a610392366004613bc4565b610d9e565b3480156103a357600080fd5b506000546103b19060ff1681565b60405190151581526020016102c1565b3480156103cd57600080fd5b506102506103dc366004613702565b611019565b3480156103ed57600080fd5b506103b16103fc366004613c49565b6110d7565b34801561040d57600080fd5b5061032a61041c366004613bc4565b6111d3565b61025061042f366004613c82565b611517565b34801561044057600080fd5b506103b161044f366004613cdb565b611729565b34801561046057600080fd5b5061025061046f36600461390e565b611860565b34801561048057600080fd5b5061025061048f36600461390e565b611975565b6102b76104a2366004613c49565b611af9565b3480156104b357600080fd5b506102506104c2366004613702565b611d3b565b3480156104d357600080fd5b506102b76104e2366004613cf8565b611d87565b3480156104f357600080fd5b506102b761050236600461386b565b611f39565b34801561051357600080fd5b50610250610522366004613c49565b611f46565b34801561053357600080fd5b50610250610542366004613d3a565b611fd6565b34801561055357600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c1565b34801561059f57600080fd5b50466102b7565b3480156105b257600080fd5b506102506105c1366004613c49565b612101565b6102506105d4366004613d66565b612167565b3480156105e557600080fd5b506102b76105f436600461386b565b612383565b34801561060557600080fd5b5061057b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561063957600080fd5b5061025061064836600461380b565b612390565b34801561065957600080fd5b5061032a61066836600461398b565b612436565b34801561067957600080fd5b5061025061068836600461390e565b612463565b34801561069957600080fd5b506102506106a8366004613cdb565b61256c565b3480156106b957600080fd5b506102506106c8366004613da7565b6125f6565b3480156106d957600080fd5b506102506106e8366004613a8d565b6126a7565b3480156106f957600080fd5b5061057b612743565b61070a612743565b6001600160a01b0316336001600160a01b0316146107435760405162461bcd60e51b815260040161073a90613e6b565b60405180910390fd5b6107508585858585612773565b60008490506000816001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b99190613ea2565b90506001600160a01b0381161580159061083e57506040516370a0823160e01b81526001600160a01b0387811660048301528591908316906370a0823190602401602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190613ebf565b10155b156109eb577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141561097857604051620e75bb60e21b81526001600160a01b038316906239d6ec906108ab90889088903090600401613ed8565b6020604051808303816000875af11580156108ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ee9190613ebf565b50604051632e1a7d4d60e01b8152600481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b15801561095157600080fd5b505af1158015610965573d6000803e3d6000fd5b50505050610973858561284c565b6109eb565b604051620e75bb60e21b81526001600160a01b038316906239d6ec906109a690889088908290600401613ed8565b6020604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190613ebf565b505b50505050505050565b610a6d338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a5c9190613ea2565b6001600160a01b031692919061291d565b336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798585465b86604051610aae9493929190613f53565b60405180910390a350505050565b6000610ac9848484612977565b949350505050565b610ad9612743565b6001600160a01b0316336001600160a01b031614610b095760405162461bcd60e51b815260040161073a90613e6b565b6000805460ff1916911515919091179055565b60005460ff16610b3e5760405162461bcd60e51b815260040161073a90613f82565b8142811015610b5f5760405162461bcd60e51b815260040161073a90613fc5565b85856000818110610b7257610b72613ffc565b9050602002016020810190610b879190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af1158015610bd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfa9190614012565b506001600160a01b038416337ffea6abdf4fd32f20966dff7619354cd82cd43dc78a3bee479f04c74dbfc585b388888c8c465b89604051610c409695949392919061402f565b60405180910390a35050505050505050565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612a45565b90505b92915050565b610c953385858585612bdb565b50505050565b610ca3612743565b6001600160a01b0316336001600160a01b031614610cd35760405162461bcd60e51b815260040161073a90613e6b565b60005b87811015610d9157610d7f8b8b83818110610cf357610cf3613ffc565b905060200201358a8a84818110610d0c57610d0c613ffc565b9050602002016020810190610d219190613cdb565b898985818110610d3357610d33613ffc565b9050602002016020810190610d489190613cdb565b888886818110610d5a57610d5a613ffc565b90506020020135878787818110610d7357610d73613ffc565b90506020020135612773565b80610d89816140af565b915050610cd6565b5050505050505050505050565b6060610da8612743565b6001600160a01b0316336001600160a01b031614610dd85760405162461bcd60e51b815260040161073a90613e6b565b60005460ff16610dfa5760405162461bcd60e51b815260040161073a90613f82565b8242811015610e1b5760405162461bcd60e51b815260040161073a90613fc5565b610e797f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b9150878260018451610e8b91906140ca565b81518110610e9b57610e9b613ffc565b60200260200101511015610f075760405162461bcd60e51b815260206004820152602d60248201527f5375736869737761705632526f757465723a20494e53554646494349454e545f60448201526c13d55514155517d05353d55395609a1b606482015260840161073a565b610fcd8a88886000818110610f1e57610f1e613ffc565b9050602002016020810190610f339190613cdb565b610fac7f00000000000000000000000000000000000000000000000000000000000000008b8b6000818110610f6a57610f6a613ffc565b9050602002016020810190610f7f9190613cdb565b8c8c6001818110610f9257610f92613ffc565b9050602002016020810190610fa79190613cdb565b612e28565b85600081518110610fbf57610fbf613ffc565b602002602001015187612773565b61100c828888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a9250612f01915050565b5098975050505050505050565b611021612743565b6001600160a01b0316336001600160a01b0316146110515760405162461bcd60e51b815260040161073a90613e6b565b61105e8585858585612773565b604051620e75bb60e21b81526001600160a01b038516906239d6ec9061108c90869086908290600401613ed8565b6020604051808303816000875af11580156110ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110cf9190613ebf565b505050505050565b60006110e1612743565b6001600160a01b0316336001600160a01b0316146111115760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166111675760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6040516360e232a960e01b81526001600160a01b0383811660048301528416906360e232a9906024016020604051808303816000875af11580156111af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190614012565b60606111dd612743565b6001600160a01b0316336001600160a01b03161461120d5760405162461bcd60e51b815260040161073a90613e6b565b60005460ff1661122f5760405162461bcd60e51b815260040161073a90613f82565b82428110156112505760405162461bcd60e51b815260040161073a90613fc5565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001687876112876001826140ca565b81811061129657611296613ffc565b90506020020160208101906112ab9190613cdb565b6001600160a01b0316146113015760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20494e56414c49445f50415448000000604482015260640161073a565b61135f7f00000000000000000000000000000000000000000000000000000000000000008a898980806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612cb292505050565b915087826001845161137191906140ca565b8151811061138157611381613ffc565b602002602001015110156113eb5760405162461bcd60e51b815260206004820152602b60248201527f416e79737761705633526f757465723a20494e53554646494349454e545f4f5560448201526a1514155517d05353d5539560aa1b606482015260840161073a565b6114028a88886000818110610f1e57610f1e613ffc565b61144182888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250612f01915050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d836001855161147f91906140ca565b8151811061148f5761148f613ffc565b60200260200101516040518263ffffffff1660e01b81526004016114b591815260200190565b600060405180830381600087803b1580156114cf57600080fd5b505af11580156114e3573d6000803e3d6000fd5b5050505061100c8583600185516114fa91906140ca565b8151811061150a5761150a613ffc565b602002602001015161284c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a39190613ea2565b6001600160a01b0316146115c95760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156116ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d09190614012565b6116dc576116dc6136d7565b336001600160a01b0384167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b798434468660405161171c9493929190613f53565b60405180910390a3505050565b6000611733612743565b6001600160a01b0316336001600160a01b0316146117635760405162461bcd60e51b815260040161073a90613e6b565b6001600160a01b0382166117b95760405162461bcd60e51b815260206004820152601d60248201527f416e79737761705633526f757465723a20616464726573732830783029000000604482015260640161073a565b6117c1612743565b60008054610100600160a81b0319166101006001600160a01b0393841602179055600180546001600160a01b031916918416919091179055611806426202a30061412b565b60028190556001546000546001600160a01b0391821691610100909104167fcda32bc39904597666dfa9f9c845714756e1ffffad55b52e0d344673a21981214660405190815260200160405180910390a45060015b919050565b60005460ff166118825760405162461bcd60e51b815260040161073a90613f82565b81428110156118a35760405162461bcd60e51b815260040161073a90613fc5565b858560008181106118b6576118b6613ffc565b90506020020160208101906118cb9190613cdb565b604051632770a7eb60e21b8152336004820152602481018a90526001600160a01b039190911690639dc29fac906044016020604051808303816000875af115801561191a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193e9190614012565b506001600160a01b038416337f278277e0209c347189add7bd92411973b5f6b8644f7ac62ea1be984ce993f8f488888c8c46610c2d565b60005460ff166119975760405162461bcd60e51b815260040161073a90613f82565b81428110156119b85760405162461bcd60e51b815260040161073a90613fc5565b611a4a33878760008181106119cf576119cf613ffc565b90506020020160208101906119e49190613cdb565b8a898960008181106119f8576119f8613ffc565b9050602002016020810190611a0d9190613cdb565b6001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b85856000818110611a5d57611a5d613ffc565b9050602002016020810190611a729190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015611ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae59190613ebf565b50858560008181106118b6576118b6613ffc565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b879190613ea2565b6001600160a01b031614611bad5760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015611c0857600080fd5b505af1158015611c1c573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af1158015611c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb49190614012565b611cc057611cc06136d7565b604051630bebbf4d60e41b81523460048201526001600160a01b03838116602483015284169063bebbf4d0906044016020604051808303816000875af1158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d329190613ebf565b50349392505050565b611d43612743565b6001600160a01b0316336001600160a01b031614611d735760405162461bcd60e51b815260040161073a90613e6b565b611d808585858585612773565b5050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e159190613ea2565b6001600160a01b031614611e3b5760405162461bcd60e51b815260040161073a906140e1565b604051620e75bb60e21b81526001600160a01b038516906239d6ec90611e6990339087903090600401613ed8565b6020604051808303816000875af1158015611e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eac9190613ebf565b50604051632e1a7d4d60e01b8152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d90602401600060405180830381600087803b158015611f0f57600080fd5b505af1158015611f23573d6000803e3d6000fd5b50505050611f31828461284c565b509092915050565b6000610ac9848484613103565b611f4e612743565b6001600160a01b0316336001600160a01b031614611f7e5760405162461bcd60e51b815260040161073a90613e6b565b60405163cfbd488560e01b81526001600160a01b03828116600483015283169063cfbd4885906024015b600060405180830381600087803b158015611fc257600080fd5b505af11580156110cf573d6000803e3d6000fd5b611fde612743565b6001600160a01b0316336001600160a01b03161461200e5760405162461bcd60e51b815260040161073a90613e6b565b6000612018612743565b6040516340c10f1960e01b81526001600160a01b03808316600483015260248201859052919250908416906340c10f19906044016020604051808303816000875af115801561206b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208f9190614012565b50604051620e75bb60e21b81526001600160a01b038416906239d6ec906120be90849086908290600401613ed8565b6020604051808303816000875af11580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c959190613ebf565b612109612743565b6001600160a01b0316336001600160a01b0316146121395760405162461bcd60e51b815260040161073a90613e6b565b604051637e51dad560e11b81526001600160a01b03828116600483015283169063fca3b5aa90602401611fa8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f39190613ea2565b6001600160a01b0316146122195760405162461bcd60e51b815260040161073a906140e1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561227457600080fd5b505af1158015612288573d6000803e3d6000fd5b505060405163a9059cbb60e01b81526001600160a01b0387811660048301523460248301527f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb925060440190506020604051808303816000875af11580156122fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123209190614012565b61232c5761232c6136d7565b6001600160a01b0380831690339085167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a3446604080519283526020830191909152810186905260600160405180910390a4505050565b6000610ac98484846131cc565b604051632770a7eb60e21b8152336004820152602481018390526001600160a01b03851690639dc29fac906044016020604051808303816000875af11580156123dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124019190614012565b50336001600160a01b0385167f409e0ad946b19f77602d6cf11d59e1796ddaa4828159a0b4fb7fa2ff6b161b79858546610a9d565b6060610c7f7f00000000000000000000000000000000000000000000000000000000000000008484612cb2565b60005460ff166124855760405162461bcd60e51b815260040161073a90613f82565b81428110156124a65760405162461bcd60e51b815260040161073a90613fc5565b6124bd33878760008181106119cf576119cf613ffc565b858560008181106124d0576124d0613ffc565b90506020020160208101906124e59190613cdb565b604051630bebbf4d60e41b8152600481018a90523360248201526001600160a01b03919091169063bebbf4d0906044016020604051808303816000875af1158015612534573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125589190613ebf565b5085856000818110610b7257610b72613ffc565b612574612743565b6001600160a01b0316336001600160a01b0316146125a45760405162461bcd60e51b815260040161073a90613e6b565b806001600160a01b0316630d707df86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156125df57600080fd5b505af1158015611d80573d6000803e3d6000fd5b50565b60005b8781101561269c5761268a338a8a8481811061261757612617613ffc565b905060200201602081019061262c9190613cdb565b89898581811061263e5761263e613ffc565b90506020020160208101906126539190613cdb565b88888681811061266557612665613ffc565b9050602002013587878781811061267e5761267e613ffc565b90506020020135612bdb565b80612694816140af565b9150506125f9565b505050505050505050565b6126eb338584876001600160a01b0316636f307dc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a38573d6000803e3d6000fd5b6001600160a01b0380841690339086167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a8546604080519283526020830191909152810186905260600160405180910390a450505050565b6000600254421061275e57506001546001600160a01b031690565b5060005461010090046001600160a01b031690565b6040516340c10f1960e01b81526001600160a01b038481166004830152602482018490528516906340c10f19906044016020604051808303816000875af11580156127c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e69190614012565b50826001600160a01b0316846001600160a01b0316867faac9ce45fe3adf5143598c4f18a369591a20a3384aedaf1b525d29127e1fcd5585856128264690565b604080519384526020840192909252908201526060015b60405180910390a45050505050565b604080516000808252602082019092526001600160a01b0384169083906040516128769190614143565b60006040518083038185875af1925050503d80600081146128b3576040519150601f19603f3d011682016040523d82523d6000602084013e6128b8565b606091505b50509050806129185760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b606482015260840161073a565b505050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c9590859061325c565b60008084116129cc5760405162461bcd60e51b815260206004820152602d602482015260008051602061427083398151915260448201526c17d25394155517d05353d55395609a1b606482015260840161073a565b6000831180156129dc5750600082115b6129f85760405162461bcd60e51b815260040161073a9061415f565b6000612a06856103e56133e3565b90506000612a1482856133e3565b90506000612a2e83612a28886103e86133e3565b90613447565b9050612a3a81836141ad565b979650505050505050565b6060600282511015612a995760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612ab357612ab3613754565b604051908082528060200260200182016040528015612adc578160200160208202803683370190505b509050828160018351612aef91906140ca565b81518110612aff57612aff613ffc565b602002602001018181525050600060018351612b1b91906140ca565b90505b8015612bd357600080612b6e8786612b376001876140ca565b81518110612b4757612b47613ffc565b6020026020010151878681518110612b6157612b61613ffc565b6020026020010151613491565b91509150612b96848481518110612b8757612b87613ffc565b60200260200101518383613103565b84612ba26001866140ca565b81518110612bb257612bb2613ffc565b60200260200101818152505050508080612bcb906141cf565b915050612b1e565b509392505050565b604051632770a7eb60e21b81526001600160a01b03868116600483015260248201849052851690639dc29fac906044016020604051808303816000875af1158015612c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4e9190614012565b50826001600160a01b0316856001600160a01b0316856001600160a01b03167f97116cf6cd4f6412bb47914d6db18da9e16ab2142f543b86e207c24fbd16b23a85612c964690565b604080519283526020830191909152810186905260600161283d565b6060600282511015612d065760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a20494e56414c49445f50415448604482015260640161073a565b815167ffffffffffffffff811115612d2057612d20613754565b604051908082528060200260200182016040528015612d49578160200160208202803683370190505b5090508281600081518110612d6057612d60613ffc565b60200260200101818152505060005b60018351612d7d91906140ca565b811015612bd357600080612dc387868581518110612d9d57612d9d613ffc565b602002602001015187866001612db3919061412b565b81518110612b6157612b61613ffc565b91509150612deb848481518110612ddc57612ddc613ffc565b60200260200101518383612977565b84612df785600161412b565b81518110612e0757612e07613ffc565b60200260200101818152505050508080612e20906140af565b915050612d6f565b6000806000612e37858561355b565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001612edf9291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527fe18a34eb0e04b04f7a0ac29a6e80748dca96319b42c54d679cb821dca90c6303603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b60005b60018351612f1291906140ca565b811015610c9557600080848381518110612f2e57612f2e613ffc565b602002602001015185846001612f44919061412b565b81518110612f5457612f54613ffc565b6020026020010151915091506000612f6c838361355b565b509050600087612f7d86600161412b565b81518110612f8d57612f8d613ffc565b60200260200101519050600080836001600160a01b0316866001600160a01b031614612fbb57826000612fbf565b6000835b91509150600060028a51612fd391906140ca565b8810612fdf578861302d565b61302d7f0000000000000000000000000000000000000000000000000000000000000000878c6130108c600261412b565b8151811061302057613020613ffc565b6020026020010151612e28565b905061305a7f00000000000000000000000000000000000000000000000000000000000000008888612e28565b6001600160a01b031663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613097576020820181803683370190505b506040518563ffffffff1660e01b81526004016130b794939291906141e6565b600060405180830381600087803b1580156130d157600080fd5b505af11580156130e5573d6000803e3d6000fd5b505050505050505050505080806130fb906140af565b915050612f04565b60008084116131595760405162461bcd60e51b815260206004820152602e602482015260008051602061427083398151915260448201526d17d3d55514155517d05353d5539560921b606482015260840161073a565b6000831180156131695750600082115b6131855760405162461bcd60e51b815260040161073a9061415f565b600061319d6103e861319786886133e3565b906133e3565b905060006131b16103e56131978689613655565b90506131c26001612a2883856141ad565b9695505050505050565b600080841161321b5760405162461bcd60e51b8152602060048201526027602482015260008051602061427083398151915260448201526617d05353d5539560ca1b606482015260840161073a565b60008311801561322b5750600082115b6132475760405162461bcd60e51b815260040161073a9061415f565b8261325285846133e3565b610ac991906141ad565b61326e826001600160a01b03166136a0565b6132ba5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161073a565b600080836001600160a01b0316836040516132d59190614143565b6000604051808303816000865af19150503d8060008114613312576040519150601f19603f3d011682016040523d82523d6000602084013e613317565b606091505b5091509150816133695760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161073a565b805115610c9557808060200190518101906133849190614012565b610c955760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161073a565b60008115806134045750508082028282828161340157613401614197565b04145b610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015260640161073a565b80820182811015610c825760405162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015260640161073a565b60008060006134a0858561355b565b5090506000806134b1888888612e28565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156134ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613512919061422a565b506001600160701b031691506001600160701b03169150826001600160a01b0316876001600160a01b03161461354957808261354c565b81815b90999098509650505050505050565b600080826001600160a01b0316846001600160a01b031614156135d05760405162461bcd60e51b815260206004820152602760248201527f53757368697377617056324c6962726172793a204944454e544943414c5f41446044820152664452455353455360c81b606482015260840161073a565b826001600160a01b0316846001600160a01b0316106135f05782846135f3565b83835b90925090506001600160a01b03821661364e5760405162461bcd60e51b815260206004820181905260248201527f53757368697377617056324c6962726172793a205a45524f5f41444452455353604482015260640161073a565b9250929050565b80820382811115610c825760405162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015260640161073a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610ac95750141592915050565b634e487b7160e01b600052600160045260246000fd5b6001600160a01b03811681146125f357600080fd5b600080600080600060a0868803121561371a57600080fd5b85359450602086013561372c816136ed565b9350604086013561373c816136ed565b94979396509394606081013594506080013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561379357613793613754565b604052919050565b600082601f8301126137ac57600080fd5b813567ffffffffffffffff8111156137c6576137c6613754565b6137d9601f8201601f191660200161376a565b8181528460208386010111156137ee57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561382157600080fd5b843561382c816136ed565b9350602085013567ffffffffffffffff81111561384857600080fd5b6138548782880161379b565b949794965050505060408301359260600135919050565b60008060006060848603121561388057600080fd5b505081359360208301359350604090920135919050565b80151581146125f357600080fd5b6000602082840312156138b757600080fd5b81356138c281613897565b9392505050565b60008083601f8401126138db57600080fd5b50813567ffffffffffffffff8111156138f357600080fd5b6020830191508360208260051b850101111561364e57600080fd5b600080600080600080600060c0888a03121561392957600080fd5b8735965060208801359550604088013567ffffffffffffffff81111561394e57600080fd5b61395a8a828b016138c9565b909650945050606088013561396e816136ed565b969995985093969295946080840135945060a09093013592915050565b6000806040838503121561399e57600080fd5b8235915060208084013567ffffffffffffffff808211156139be57600080fd5b818601915086601f8301126139d257600080fd5b8135818111156139e4576139e4613754565b8060051b91506139f584830161376a565b8181529183018401918481019089841115613a0f57600080fd5b938501935b83851015613a395784359250613a29836136ed565b8282529385019390850190613a14565b8096505050505050509250929050565b6020808252825182820181905260009190848201906040850190845b81811015613a8157835183529284019291840191600101613a65565b50909695505050505050565b60008060008060808587031215613aa357600080fd5b8435613aae816136ed565b93506020850135613abe816136ed565b93969395505050506040820135916060013590565b60008060008060008060008060008060a08b8d031215613af257600080fd5b8a3567ffffffffffffffff80821115613b0a57600080fd5b613b168e838f016138c9565b909c509a5060208d0135915080821115613b2f57600080fd5b613b3b8e838f016138c9565b909a50985060408d0135915080821115613b5457600080fd5b613b608e838f016138c9565b909850965060608d0135915080821115613b7957600080fd5b613b858e838f016138c9565b909650945060808d0135915080821115613b9e57600080fd5b50613bab8d828e016138c9565b915080935050809150509295989b9194979a5092959850565b60008060008060008060008060e0898b031215613be057600080fd5b883597506020890135965060408901359550606089013567ffffffffffffffff811115613c0c57600080fd5b613c188b828c016138c9565b9096509450506080890135613c2c816136ed565b979a969950949793969295929450505060a08201359160c0013590565b60008060408385031215613c5c57600080fd5b8235613c67816136ed565b91506020830135613c77816136ed565b809150509250929050565b600080600060608486031215613c9757600080fd5b8335613ca2816136ed565b9250602084013567ffffffffffffffff811115613cbe57600080fd5b613cca8682870161379b565b925050604084013590509250925092565b600060208284031215613ced57600080fd5b81356138c2816136ed565b600080600060608486031215613d0d57600080fd5b8335613d18816136ed565b9250602084013591506040840135613d2f816136ed565b809150509250925092565b60008060408385031215613d4d57600080fd5b8235613d58816136ed565b946020939093013593505050565b600080600060608486031215613d7b57600080fd5b8335613d86816136ed565b92506020840135613d96816136ed565b929592945050506040919091013590565b6000806000806000806000806080898b031215613dc357600080fd5b883567ffffffffffffffff80821115613ddb57600080fd5b613de78c838d016138c9565b909a50985060208b0135915080821115613e0057600080fd5b613e0c8c838d016138c9565b909850965060408b0135915080821115613e2557600080fd5b613e318c838d016138c9565b909650945060608b0135915080821115613e4a57600080fd5b50613e578b828c016138c9565b999c989b5096995094979396929594505050565b6020808252601a908201527f416e79737761705633526f757465723a20464f5242494444454e000000000000604082015260600190565b600060208284031215613eb457600080fd5b81516138c2816136ed565b600060208284031215613ed157600080fd5b5051919050565b6001600160a01b0393841681526020810192909252909116604082015260600190565b60005b83811015613f16578181015183820152602001613efe565b83811115610c955750506000910152565b60008151808452613f3f816020860160208601613efb565b601f01601f19169290920160200192915050565b608081526000613f666080830187613f27565b6020830195909552506040810192909252606090910152919050565b60208082526023908201527f416e79737761705636526f757465723a205377617054726164652064697361626040820152621b195960ea1b606082015260800190565b60208082526018908201527f416e79737761705633526f757465723a20455850495245440000000000000000604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561402457600080fd5b81516138c281613897565b60a0808252810186905260008760c08301825b89811015614072578235614055816136ed565b6001600160a01b0316825260209283019290910190600101614042565b50602084019790975250506040810193909352606083019190915260809091015292915050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156140c3576140c3614099565b5060010190565b6000828210156140dc576140dc614099565b500390565b6020808252602a908201527f416e79737761705633526f757465723a20756e6465726c79696e67206973206e6040820152696f7420774e415449564560b01b606082015260800190565b6000821982111561413e5761413e614099565b500190565b60008251614155818460208701613efb565b9190910192915050565b6020808252602a908201526000805160206142708339815191526040820152695f4c495155494449545960b01b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b6000826141ca57634e487b7160e01b600052601260045260246000fd5b500490565b6000816141de576141de614099565b506000190190565b84815283602082015260018060a01b03831660408201526080606082015260006131c26080830184613f27565b80516001600160701b038116811461185b57600080fd5b60008060006060848603121561423f57600080fd5b61424884614213565b925061425660208501614213565b9150604084015163ffffffff81168114613d2f57600080fdfe53757368697377617056324c6962726172793a20494e53554646494349454e54a2646970667358221220c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db3364736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000647dc1366da28f8a64eb831fc8e9f05c90d1ea5a

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

00000000000000000000000000000000000000000000000000000000000000000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000647dc1366da28f8a64eb831fc8e9f05c90d1ea5a

-----Decoded View---------------
Arg [0] : _factory (address): 0x0000000000000000000000000000000000000000
Arg [1] : _wNATIVE (address): 0x4200000000000000000000000000000000000006
Arg [2] : _mpc (address): 0x647dc1366da28f8a64eb831fc8e9f05c90d1ea5a

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000004200000000000000000000000000000000000006
Arg [2] : 000000000000000000000000647dc1366da28f8a64eb831fc8e9f05c90d1ea5a


Deployed ByteCode Sourcemap

10591:15628:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11330:10;-1:-1:-1;;;;;11344:7:0;11330:21;;11323:29;;;;:::i;:::-;10591:15628;;;;;17628:718;;;;;;;;;;-1:-1:-1;17628:718:0;;;;;:::i;:::-;;:::i;15846:284::-;;;;;;;;;;-1:-1:-1;15846:284:0;;;;;:::i;:::-;;:::i;25227:246::-;;;;;;;;;;-1:-1:-1;25227:246:0;;;;;:::i;:::-;;:::i;:::-;;;2895:25:1;;;2883:2;2868:18;25227:246:0;;;;;;;;12888:101;;;;;;;;;;-1:-1:-1;12888:101:0;;;;;:::i;:::-;;:::i;20737:433::-;;;;;;;;;;-1:-1:-1;20737:433:0;;;;;:::i;:::-;;:::i;25979:237::-;;;;;;;;;;-1:-1:-1;25979:237:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14329:157::-;;;;;;;;;;-1:-1:-1;14329:157:0;;;;;:::i;:::-;;:::i;19463:319::-;;;;;;;;;;-1:-1:-1;19463:319:0;;;;;:::i;:::-;;:::i;22031:665::-;;;;;;;;;;-1:-1:-1;22031:665:0;;;;;:::i;:::-;;:::i;10777:27::-;;;;;;;;;;-1:-1:-1;10777:27:0;;;;;;;;;;;9596:14:1;;9589:22;9571:41;;9559:2;9544:18;10777:27:0;9431:187:1;17258:245:0;;;;;;;;;;-1:-1:-1;17258:245:0;;;;;:::i;:::-;;:::i;13362:228::-;;;;;;;;;;-1:-1:-1;13362:228:0;;;;;:::i;:::-;;:::i;24091:903::-;;;;;;;;;;-1:-1:-1;24091:903:0;;;;;:::i;:::-;;:::i;16138:411::-;;;;;;:::i;:::-;;:::i;12997:357::-;;;;;;;;;;-1:-1:-1;12997:357:0;;;;;:::i;:::-;;:::i;22797:433::-;;;;;;;;;;-1:-1:-1;22797:433:0;;;;;:::i;:::-;;:::i;23331:615::-;;;;;;;;;;-1:-1:-1;23331:615:0;;;;;:::i;:::-;;:::i;18354:407::-;;;;;;:::i;:::-;;:::i;16972:173::-;;;;;;;;;;-1:-1:-1;16972:173:0;;;;;:::i;:::-;;:::i;18769:413::-;;;;;;;;;;-1:-1:-1;18769:413:0;;;;;:::i;:::-;;:::i;25481:245::-;;;;;;;;;;-1:-1:-1;25481:245:0;;;;;:::i;:::-;;:::i;13858:136::-;;;;;;;;;;-1:-1:-1;13858:136:0;;;;;:::i;:::-;;:::i;19232:223::-;;;;;;;;;;-1:-1:-1;19232:223:0;;;;;:::i;:::-;;:::i;10736:32::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11743:32:1;;;11725:51;;11713:2;11698:18;10736:32:0;11579:203:1;12791:89:0;;;;;;;;;;-1:-1:-1;12863:9:0;12791:89;;13598:130;;;;;;;;;;-1:-1:-1;13598:130:0;;;;;:::i;:::-;;:::i;14897:405::-;;;;;;:::i;:::-;;:::i;25038:181::-;;;;;;;;;;-1:-1:-1;25038:181:0;;;;;:::i;:::-;;:::i;10697:32::-;;;;;;;;;;;;;;;15604:234;;;;;;;;;;-1:-1:-1;15604:234:0;;;;;:::i;:::-;;:::i;25734:237::-;;;;;;;;;;-1:-1:-1;25734:237:0;;;;;:::i;:::-;;:::i;21271:615::-;;;;;;;;;;-1:-1:-1;21271:615:0;;;;;:::i;:::-;;:::i;13736:114::-;;;;;;;;;;-1:-1:-1;13736:114:0;;;;;:::i;:::-;;:::i;15310:286::-;;;;;;;;;;-1:-1:-1;15310:286:0;;;;;:::i;:::-;;:::i;14611:278::-;;;;;;;;;;-1:-1:-1;14611:278:0;;;;;:::i;:::-;;:::i;12609:174::-;;;;;;;;;;;;;:::i;17628:718::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;;;;;;;;;17750:47:::1;17761:3;17766:5;17773:2;17777:6;17785:11;17750:10;:47::i;:::-;17808:24;17850:5;17808:48;;17867:19;17889:9;-1:-1:-1::0;;;;;17889:20:0::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17867:44:::0;-1:-1:-1;;;;;;17926:25:0;::::1;::::0;;::::1;::::0;:75:::1;;-1:-1:-1::0;17955:36:0::1;::::0;-1:-1:-1;;;17955:36:0;;-1:-1:-1;;;;;11743:32:1;;;17955:36:0::1;::::0;::::1;11725:51:1::0;17995:6:0;;17955:29;;::::1;::::0;::::1;::::0;11698:18:1;;17955:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:46;;17926:75;17922:417;;;18037:7;-1:-1:-1::0;;;;;18022:22:0::1;:11;-1:-1:-1::0;;;;;18022:22:0::1;;18018:310;;;18065:50;::::0;-1:-1:-1;;;18065:50:0;;-1:-1:-1;;;;;18065:23:0;::::1;::::0;::::1;::::0;:50:::1;::::0;18089:2;;18093:6;;18109:4:::1;::::0;18065:50:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;18134:34:0::1;::::0;-1:-1:-1;;;18134:34:0;;::::1;::::0;::::1;2895:25:1::0;;;18143:7:0::1;-1:-1:-1::0;;;;;18134:26:0::1;::::0;::::1;::::0;2868:18:1;;18134:34:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18187:45;18221:2;18225:6;18187:33;:45::i;:::-;18018:310;;;18273:39;::::0;-1:-1:-1;;;18273:39:0;;-1:-1:-1;;;;;18273:23:0;::::1;::::0;::::1;::::0;:39:::1;::::0;18297:2;;18301:6;;18297:2;;18273:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18018:310;17739:607;;17628:718:::0;;;;;:::o;15846:284::-;15958:86;16018:10;16030:5;16037:6;15980:5;-1:-1:-1;;;;;15965:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15958:59:0;;:86;;:59;:86::i;:::-;16081:10;-1:-1:-1;;;;;16060:62:0;;;16093:2;16097:6;12863:9;16105:5;16112:9;16060:62;;;;;;;;;:::i;:::-;;;;;;;;15846:284;;;;:::o;25227:246::-;25362:14;25401:64;25433:8;25443:9;25454:10;25401:31;:64::i;:::-;25394:71;25227:246;-1:-1:-1;;;;25227:246:0:o;12888:101::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;12957:15:::1;:24:::0;;-1:-1:-1;;12957:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12888:101::o;20737:433::-;10858:15;;;;10850:63;;;;-1:-1:-1;;;10850:63:0;;;;;;;:::i;:::-;20981:8:::1;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::1;;;;;;;:::i;:::-;21017:4:::2;;21022:1;21017:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21002:50;::::0;-1:-1:-1;;;21002:50:0;;21031:10:::2;21002:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;21002:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;21002:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;21068:94:0;::::2;21105:10;21068:94;21099:4:::0;;21121:8;21131:12;12863:9;21145:5:::2;21152:9;21068:94;;;;;;;;;;;:::i;:::-;;;;;;;;10924:1:::1;20737:433:::0;;;;;;;:::o;25979:237::-;26105:21;26151:57;26183:7;26192:9;26203:4;26151:31;:57::i;:::-;26144:64;;25979:237;;;;;:::o;14329:157::-;14425:53;14437:10;14449:5;14456:2;14460:6;14468:9;14425:11;:53::i;:::-;14329:157;;;;:::o;19463:319::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;19647:6:::1;19642:133;19659:17:::0;;::::1;19642:133;;;19698:65;19709:3;;19713:1;19709:6;;;;;;;:::i;:::-;;;;;;;19717;;19724:1;19717:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19728:2;;19731:1;19728:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;19735:7;;19743:1;19735:10;;;;;;;:::i;:::-;;;;;;;19747:12;;19760:1;19747:15;;;;;;;:::i;:::-;;;;;;;19698:10;:65::i;:::-;19678:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19642:133;;;;19463:319:::0;;;;;;;;;;:::o;22031:665::-;22325:21;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;10858:15:::1;::::0;::::1;;10850:63;;;;-1:-1:-1::0;;;10850:63:0::1;;;;;;;:::i;:::-;22306:8:::2;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::2;;;;;;;:::i;:::-;22369:57:::3;22402:7;22411:8;22421:4;;22369:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22369:32:0::3;::::0;-1:-1:-1;;;22369:57:0:i:3;:::-;22359:67;;22476:12;22445:7;22470:1;22453:7;:14;:18;;;;:::i;:::-;22445:27;;;;;;;;:::i;:::-;;;;;;;:43;;22437:101;;;::::0;-1:-1:-1;;;22437:101:0;;18831:2:1;22437:101:0::3;::::0;::::3;18813:21:1::0;18870:2;18850:18;;;18843:30;18909:34;18889:18;;;18882:62;-1:-1:-1;;;18960:18:1;;;18953:43;19013:19;;22437:101:0::3;18629:409:1::0;22437:101:0::3;22549:104;22560:3;22565:4;;22570:1;22565:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22574:53;22601:7;22610:4;;22615:1;22610:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22619:4;;22624:1;22619:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;22574:26;:53::i;:::-;22629:7;22637:1;22629:10;;;;;;;;:::i;:::-;;;;;;;22641:11;22549:10;:104::i;:::-;22664:24;22670:7;22679:4;;22664:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;22685:2:0;;-1:-1:-1;22664:5:0::3;::::0;-1:-1:-1;;22664:24:0:i:3;:::-;10924:1:::2;22031:665:::0;;;;;;;;;;:::o;17258:245::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;17386:47:::1;17397:3;17402:5;17409:2;17413:6;17421:11;17386:10;:47::i;:::-;17444:51;::::0;-1:-1:-1;;;17444:51:0;;-1:-1:-1;;;;;17444:35:0;::::1;::::0;::::1;::::0;:51:::1;::::0;17480:2;;17484:6;;17480:2;;17444:51:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17258:245:::0;;;;;:::o;13362:228::-;13440:4;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13465:22:0;::::1;13457:64;;;::::0;-1:-1:-1;;;13457:64:0;;19245:2:1;13457:64:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13457:64:0::1;19043:353:1::0;13457:64:0::1;13539:43;::::0;-1:-1:-1;;;13539:43:0;;-1:-1:-1;;;;;11743:32:1;;;13539:43:0::1;::::0;::::1;11725:51:1::0;13539:33:0;::::1;::::0;::::1;::::0;11698:18:1;;13539:43:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;24091:903::-:0;24385:21;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;10858:15:::1;::::0;::::1;;10850:63;;;;-1:-1:-1::0;;;10850:63:0::1;;;;;;;:::i;:::-;24366:8:::2;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::2;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24452:7:0::3;24427:32;:4:::0;;24432:15:::3;24446:1;24427:4:::0;24432:15:::3;:::i;:::-;24427:21;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24427:32:0::3;;24419:74;;;::::0;-1:-1:-1;;;24419:74:0;;19603:2:1;24419:74:0::3;::::0;::::3;19585:21:1::0;19642:2;19622:18;;;19615:30;19681:31;19661:18;;;19654:59;19730:18;;24419:74:0::3;19401:353:1::0;24419:74:0::3;24514:57;24547:7;24556:8;24566:4;;24514:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24514:32:0::3;::::0;-1:-1:-1;;;24514:57:0:i:3;:::-;24504:67;;24621:12;24590:7;24615:1;24598:7;:14;:18;;;;:::i;:::-;24590:27;;;;;;;;:::i;:::-;;;;;;;:43;;24582:99;;;::::0;-1:-1:-1;;;24582:99:0;;19961:2:1;24582:99:0::3;::::0;::::3;19943:21:1::0;20000:2;19980:18;;;19973:30;20039:34;20019:18;;;20012:62;-1:-1:-1;;;20090:18:1;;;20083:41;20141:19;;24582:99:0::3;19759:407:1::0;24582:99:0::3;24692:105;24703:3;24708:4;;24713:1;24708:7;;;;;;;:::i;24692:105::-;24808:35;24814:7;24823:4;;24808:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;24837:4:0::3;::::0;-1:-1:-1;24808:5:0::3;::::0;-1:-1:-1;;24808:35:0:i:3;:::-;24863:7;-1:-1:-1::0;;;;;24854:26:0::3;;24881:7;24906:1;24889:7;:14;:18;;;;:::i;:::-;24881:27;;;;;;;;:::i;:::-;;;;;;;24854:55;;;;;;;;;;;;;2895:25:1::0;;2883:2;2868:18;;2749:177;24854:55:0::3;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;24920:66;24954:2;24958:7;24983:1;24966:7;:14;:18;;;;:::i;:::-;24958:27;;;;;;;;:::i;:::-;;;;;;;24920:33;:66::i;16138:411::-:0;16287:7;-1:-1:-1;;;;;16249:45:0;16264:5;-1:-1:-1;;;;;16249:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;16249:45:0;;16241:100;;;;-1:-1:-1;;;16241:100:0;;;;;;;:::i;:::-;16361:7;-1:-1:-1;;;;;16352:25:0;;16385:9;16352:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16415:44:0;;-1:-1:-1;;;16415:44:0;;-1:-1:-1;;;;;16884:32:1;;;16415:44:0;;;16866:51:1;16449:9:0;16933:18:1;;;16926:34;16424:7:0;16415:26;;-1:-1:-1;16415:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;16415:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16408:52;;;;:::i;:::-;16497:10;-1:-1:-1;;;;;16476:65:0;;;16509:2;16513:9;12863;16531;16476:65;;;;;;;;;:::i;:::-;;;;;;;;16138:411;;;:::o;12997:357::-;13056:4;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13081:20:0;::::1;13073:62;;;::::0;-1:-1:-1;;;13073:62:0;;19245:2:1;13073:62:0::1;::::0;::::1;19227:21:1::0;19284:2;19264:18;;;19257:30;19323:31;19303:18;;;19296:59;19372:18;;13073:62:0::1;19043:353:1::0;13073:62:0::1;13156:5;:3;:5::i;:::-;13146:7;:15:::0;;-1:-1:-1;;;;;;13146:15:0::1;;-1:-1:-1::0;;;;;13146:15:0;;::::1;;;::::0;;-1:-1:-1;13172:16:0;;-1:-1:-1;;;;;;13172:16:0::1;::::0;;::::1;::::0;;;::::1;::::0;;13222:27:::1;:15;13240:9;13222:27;:::i;:::-;13199:20;:50:::0;;;13287:7:::1;::::0;::::1;13278::::0;-1:-1:-1;;;;;13287:7:0;;::::1;::::0;::::1;13278::::0;;::::1;;13265:59;12863:9:::0;13265:59:::1;::::0;2895:25:1;;;2883:2;2868:18;13265:59:0::1;;;;;;;-1:-1:-1::0;13342:4:0::1;12592:1;12997:357:::0;;;:::o;22797:433::-;10858:15;;;;10850:63;;;;-1:-1:-1;;;10850:63:0;;;;;;;:::i;:::-;23041:8:::1;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::1;;;;;;;:::i;:::-;23077:4:::2;;23082:1;23077:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23062:50;::::0;-1:-1:-1;;;23062:50:0;;23091:10:::2;23062:50;::::0;::::2;16866:51:1::0;16933:18;;;16926:34;;;-1:-1:-1;;;;;23062:28:0;;;::::2;::::0;::::2;::::0;16839:18:1;;23062:50:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;23128:94:0;::::2;23165:10;23128:94;23159:4:::0;;23181:8;23191:12;12863:9;23205:5:::2;12791:89:::0;23331:615;10858:15;;;;10850:63;;;;-1:-1:-1;;;10850:63:0;;;;;;;:::i;:::-;23585:8:::1;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::1;;;;;;;:::i;:::-;23606:92:::2;23668:10;23680:4;;23685:1;23680:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23689:8;23628:4;;23633:1;23628:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23613:34:0::2;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;23606:92;23724:4;;23729:1;23724:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;23709:58;::::0;-1:-1:-1;;;23709:58:0;;::::2;::::0;::::2;20889:25:1::0;;;23756:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;23709:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;23709:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;23793:4;;23798:1;23793:7;;;;;;;:::i;18354:407::-:0;18430:4;18493:7;-1:-1:-1;;;;;18455:45:0;18470:5;-1:-1:-1;;;;;18455:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18455:45:0;;18447:100;;;;-1:-1:-1;;;18447:100:0;;;;;;;:::i;:::-;18567:7;-1:-1:-1;;;;;18558:25:0;;18591:9;18558:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18621:44:0;;-1:-1:-1;;;18621:44:0;;-1:-1:-1;;;;;16884:32:1;;;18621:44:0;;;16866:51:1;18655:9:0;16933:18:1;;;16926:34;18630:7:0;18621:26;;-1:-1:-1;18621:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;18621:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18614:52;;;;:::i;:::-;18677:49;;-1:-1:-1;;;18677:49:0;;18712:9;18677:49;;;20889:25:1;-1:-1:-1;;;;;20950:32:1;;;20930:18;;;20923:60;18677:34:0;;;;;20862:18:1;;18677:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;18744:9:0;;18354:407;-1:-1:-1;;;18354:407:0:o;16972:173::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;17090:47:::1;17101:3;17106:5;17113:2;17117:6;17125:11;17090:10;:47::i;:::-;16972:173:::0;;;;;:::o;18769:413::-;18851:4;18914:7;-1:-1:-1;;;;;18876:45:0;18891:5;-1:-1:-1;;;;;18876:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18876:45:0;;18868:100;;;;-1:-1:-1;;;18868:100:0;;;;;;;:::i;:::-;18979:70;;-1:-1:-1;;;18979:70:0;;-1:-1:-1;;;;;18979:35:0;;;;;:70;;19015:10;;19027:6;;19043:4;;18979:70;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;19060:34:0;;-1:-1:-1;;;19060:34:0;;;;;2895:25:1;;;19069:7:0;-1:-1:-1;;;;;19060:26:0;;;;2868:18:1;;19060:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19105:45;19139:2;19143:6;19105:33;:45::i;:::-;-1:-1:-1;19168:6:0;;18769:413;-1:-1:-1;;18769:413:0:o;25481:245::-;25616:13;25654:64;25685:9;25696;25707:10;25654:30;:64::i;13858:136::-;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;13945:41:::1;::::0;-1:-1:-1;;;13945:41:0;;-1:-1:-1;;;;;11743:32:1;;;13945:41:0::1;::::0;::::1;11725:51:1::0;13945:34:0;::::1;::::0;::::1;::::0;11698:18:1;;13945:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;19232:223:::0;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;19310:12:::1;19325:5;:3;:5::i;:::-;19341:40;::::0;-1:-1:-1;;;19341:40:0;;-1:-1:-1;;;;;16884:32:1;;;19341:40:0::1;::::0;::::1;16866:51:1::0;16933:18;;;16926:34;;;19310:20:0;;-1:-1:-1;19341:26:0;;::::1;::::0;::::1;::::0;16839:18:1;;19341:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;19392:55:0::1;::::0;-1:-1:-1;;;19392:55:0;;-1:-1:-1;;;;;19392:35:0;::::1;::::0;::::1;::::0;:55:::1;::::0;19428:4;;19434:6;;19428:4;;19392:55:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;13598:130::-:0;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;13682:38:::1;::::0;-1:-1:-1;;;13682:38:0;;-1:-1:-1;;;;;11743:32:1;;;13682:38:0::1;::::0;::::1;11725:51:1::0;13682:31:0;::::1;::::0;::::1;::::0;11698:18:1;;13682:38:0::1;11579:203:1::0;14897:405:0;15040:7;-1:-1:-1;;;;;15002:45:0;15017:5;-1:-1:-1;;;;;15002:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15002:45:0;;14994:100;;;;-1:-1:-1;;;14994:100:0;;;;;;;:::i;:::-;15114:7;-1:-1:-1;;;;;15105:25:0;;15138:9;15105:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15168:44:0;;-1:-1:-1;;;15168:44:0;;-1:-1:-1;;;;;16884:32:1;;;15168:44:0;;;16866:51:1;15202:9:0;16933:18:1;;;16926:34;15177:7:0;15168:26;;-1:-1:-1;15168:26:0;;-1:-1:-1;16839:18:1;;;-1:-1:-1;15168:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15161:52;;;;:::i;:::-;-1:-1:-1;;;;;15229:65:0;;;;15250:10;;15229:65;;;15266:9;12863;15229:65;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;15229:65:0;;;;;;;14897:405;;;:::o;25038:181::-;25126:12;25158:53;25183:7;25192:8;25202;25158:24;:53::i;15604:234::-;15706:46;;-1:-1:-1;;;15706:46:0;;15733:10;15706:46;;;16866:51:1;16933:18;;;16926:34;;;-1:-1:-1;;;;;15706:26:0;;;;;16839:18:1;;15706:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;15789:10:0;-1:-1:-1;;;;;15768:62:0;;;15801:2;15805:6;12863:9;15813:5;12791:89;25734:237;25860:21;25906:57;25939:7;25948:8;25958:4;25906:32;:57::i;21271:615::-;10858:15;;;;10850:63;;;;-1:-1:-1;;;10850:63:0;;;;;;;:::i;:::-;21525:8:::1;11003:15;10991:8;:27;;10983:64;;;;-1:-1:-1::0;;;10983:64:0::1;;;;;;;:::i;:::-;21546:92:::2;21608:10;21620:4;;21625:1;21620:7;;;;;;;:::i;21546:92::-;21664:4;;21669:1;21664:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21649:58;::::0;-1:-1:-1;;;21649:58:0;;::::2;::::0;::::2;20889:25:1::0;;;21696:10:0::2;20930:18:1::0;;;20923:60;-1:-1:-1;;;;;21649:36:0;;;::::2;::::0;::::2;::::0;20862:18:1;;21649:58:0::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;21733:4;;21738:1;21733:7;;;;;;;:::i;13736:114::-:0;12545:5;:3;:5::i;:::-;-1:-1:-1;;;;;12531:19:0;:10;-1:-1:-1;;;;;12531:19:0;;12523:58;;;;-1:-1:-1;;;12523:58:0;;;;;;;:::i;:::-;13822:5:::1;-1:-1:-1::0;;;;;13807:33:0::1;;:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;12592:1;13736:114:::0;:::o;15310:286::-;15458:6;15453:136;15470:17;;;15453:136;;;15509:68;15521:10;15533:6;;15540:1;15533:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15544:2;;15547:1;15544:5;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15551:7;;15559:1;15551:10;;;;;;;:::i;:::-;;;;;;;15563;;15574:1;15563:13;;;;;;;:::i;:::-;;;;;;;15509:11;:68::i;:::-;15489:3;;;;:::i;:::-;;;;15453:136;;;;15310:286;;;;;;;;:::o;14611:278::-;14717:86;14777:10;14789:5;14796:6;14739:5;-1:-1:-1;;;;;14724:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14717:86;-1:-1:-1;;;;;14819:62:0;;;;14840:10;;14819:62;;;14856:6;12863:9;14819:62;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14819:62:0;;;;;;;14611:278;;;;:::o;12609:174::-;12645:7;12688:20;;12669:15;:39;12665:86;;-1:-1:-1;12732:7:0;;-1:-1:-1;;;;;12732:7:0;;12609:174::o;12665:86::-;-1:-1:-1;12768:7:0;;;;;-1:-1:-1;;;;;12768:7:0;;12609:174::o;16629:229::-;16740:38;;-1:-1:-1;;;16740:38:0;;-1:-1:-1;;;;;16884:32:1;;;16740:38:0;;;16866:51:1;16933:18;;;16926:34;;;16740:26:0;;;;;16839:18:1;;16740:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16819:2;-1:-1:-1;;;;;16794:56:0;16812:5;-1:-1:-1;;;;;16794:56:0;16807:3;16794:56;16823:6;16831:11;16844:5;12863:9;;12791:89;16844:5;16794:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;;21273:34;21184:2;21169:18;16794:56:0;;;;;;;;16629:229;;;;;:::o;6881:201::-;6992:12;;;6954;6992;;;;;;;;;-1:-1:-1;;;;;6971:7:0;;;6985:5;;6971:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6953:52;;;7024:7;7016:58;;;;-1:-1:-1;;;7016:58:0;;21799:2:1;7016:58:0;;;21781:21:1;21838:2;21818:18;;;21811:30;21877:34;21857:18;;;21850:62;-1:-1:-1;;;21928:18:1;;;21921:36;21974:19;;7016:58:0;21597:402:1;7016:58:0;6942:140;6881:201;;:::o;9427:::-;9551:68;;;-1:-1:-1;;;;;22262:15:1;;;9551:68:0;;;22244:34:1;22314:15;;22294:18;;;22287:43;22346:18;;;;22339:34;;;9551:68:0;;;;;;;;;;22179:18:1;;;;9551:68:0;;;;;;;;-1:-1:-1;;;;;9551:68:0;-1:-1:-1;;;9551:68:0;;;9525:95;;9544:5;;9525:18;:95::i;3256:521::-;3349:14;3395:1;3384:8;:12;3376:70;;;;-1:-1:-1;;;3376:70:0;;22586:2:1;3376:70:0;;;22568:21:1;22625:2;22605:18;;;22598:30;-1:-1:-1;;;;;;;;;;;22644:18:1;;;22637:62;-1:-1:-1;;;22715:18:1;;;22708:43;22768:19;;3376:70:0;22384:409:1;3376:70:0;3477:1;3465:9;:13;:31;;;;;3495:1;3482:10;:14;3465:31;3457:86;;;;-1:-1:-1;;;3457:86:0;;;;;;;:::i;:::-;3554:20;3577:17;:8;3590:3;3577:12;:17::i;:::-;3554:40;-1:-1:-1;3605:14:0;3622:31;3554:40;3642:10;3622:19;:31::i;:::-;3605:48;-1:-1:-1;3664:16:0;3683:40;3707:15;3683:19;:9;3697:4;3683:13;:19::i;:::-;:23;;:40::i;:::-;3664:59;-1:-1:-1;3746:23:0;3664:59;3746:9;:23;:::i;:::-;3734:35;3256:521;-1:-1:-1;;;;;;;3256:521:0:o;5050:534::-;5151:21;5208:1;5193:4;:11;:16;;5185:61;;;;-1:-1:-1;;;5185:61:0;;23765:2:1;5185:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;5185:61:0;23563:356:1;5185:61:0;5278:4;:11;5267:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5267:23:0;;5257:33;;5331:9;5301:7;5326:1;5309:7;:14;:18;;;;:::i;:::-;5301:27;;;;;;;;:::i;:::-;;;;;;:39;;;;;5356:6;5379:1;5365:4;:11;:15;;;;:::i;:::-;5356:24;;5351:226;5382:5;;5351:226;;5410:14;;5445:42;5457:7;5466:4;5471:5;5475:1;5471;:5;:::i;:::-;5466:11;;;;;;;;:::i;:::-;;;;;;;5479:4;5484:1;5479:7;;;;;;;;:::i;:::-;;;;;;;5445:11;:42::i;:::-;5409:78;;;;5519:46;5531:7;5539:1;5531:10;;;;;;;;:::i;:::-;;;;;;;5543:9;5554:10;5519:11;:46::i;:::-;5502:7;5510:5;5514:1;5510;:5;:::i;:::-;5502:14;;;;;;;;:::i;:::-;;;;;;:63;;;;;5394:183;;5389:3;;;;;:::i;:::-;;;;5351:226;;;;5050:534;;;;;:::o;14002:231::-;14113:40;;-1:-1:-1;;;14113:40:0;;-1:-1:-1;;;;;16884:32:1;;;14113:40:0;;;16866:51:1;16933:18;;;16926:34;;;14113:26:0;;;;;16839:18:1;;14113:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14196:2;-1:-1:-1;;;;;14169:56:0;14190:4;-1:-1:-1;;;;;14169:56:0;14183:5;-1:-1:-1;;;;;14169:56:0;;14200:6;14208:5;12863:9;;12791:89;14208:5;14169:56;;;21196:25:1;;;21252:2;21237:18;;21230:34;;;;21280:18;;21273:34;;;21184:2;21169:18;14169:56:0;20994:319:1;4456:513:0;4557:21;4614:1;4599:4;:11;:16;;4591:61;;;;-1:-1:-1;;;4591:61:0;;23765:2:1;4591:61:0;;;23747:21:1;;;23784:18;;;23777:30;23843:34;23823:18;;;23816:62;23895:18;;4591:61:0;23563:356:1;4591:61:0;4684:4;:11;4673:23;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4673:23:0;;4663:33;;4720:8;4707:7;4715:1;4707:10;;;;;;;;:::i;:::-;;;;;;:21;;;;;4744:6;4739:223;4770:1;4756:4;:11;:15;;;;:::i;:::-;4752:1;:19;4739:223;;;4794:14;4810:15;4829:42;4841:7;4850:4;4855:1;4850:7;;;;;;;;:::i;:::-;;;;;;;4859:4;4864:1;4868;4864:5;;;;:::i;:::-;4859:11;;;;;;;;:::i;4829:42::-;4793:78;;;;4903:47;4916:7;4924:1;4916:10;;;;;;;;:::i;:::-;;;;;;;4928:9;4939:10;4903:12;:47::i;:::-;4886:7;4894:5;:1;4898;4894:5;:::i;:::-;4886:14;;;;;;;;:::i;:::-;;;;;;:64;;;;;4778:184;;4773:3;;;;;:::i;:::-;;;;4739:223;;1755:490;1844:12;1870:14;1886;1904:26;1915:6;1923;1904:10;:26::i;:::-;2079:32;;-1:-1:-1;;24292:2:1;24288:15;;;24284:24;;2079:32:0;;;24272:37:1;24343:15;;;24339:24;24325:12;;;24318:46;1869:61:0;;-1:-1:-1;1869:61:0;-1:-1:-1;2043:7:0;;24380:12:1;;2079:32:0;;;;;;;;;;;;2069:43;;;;;;1982:251;;;;;;;;-1:-1:-1;;;;;;24762:26:1;;24825:2;24821:15;;;;-1:-1:-1;;24817:53:1;24813:1;24804:11;;24797:74;24896:2;24887:12;;24880:28;24938:66;24933:2;24924:12;;24917:88;25030:2;25021:12;;24403:636;1982:251:0;;;;-1:-1:-1;;1982:251:0;;;;;;;;;1972:262;;1982:251;1972:262;;;;;1755:490;-1:-1:-1;;;;;;1755:490:0:o;19893:743::-;20000:6;19995:634;20026:1;20012:4;:11;:15;;;;:::i;:::-;20008:1;:19;19995:634;;;20050:13;20065:14;20084:4;20089:1;20084:7;;;;;;;;:::i;:::-;;;;;;;20093:4;20098:1;20102;20098:5;;;;:::i;:::-;20093:11;;;;;;;;:::i;:::-;;;;;;;20049:56;;;;20121:14;20140:44;20170:5;20177:6;20140:29;:44::i;:::-;-1:-1:-1;20120:64:0;-1:-1:-1;20199:14:0;20216:7;20224:5;:1;20228;20224:5;:::i;:::-;20216:14;;;;;;;;:::i;:::-;;;;;;;20199:31;;20246:15;20263;20291:6;-1:-1:-1;;;;;20282:15:0;:5;-1:-1:-1;;;;;20282:15:0;;:61;;20324:9;20340:1;20282:61;;;20306:1;20310:9;20282:61;20245:98;;;;20358:10;20389:1;20375:4;:11;:15;;;;:::i;:::-;20371:1;:19;:84;;20452:3;20371:84;;;20393:56;20420:7;20429:6;20437:4;20442:5;:1;20446;20442:5;:::i;:::-;20437:11;;;;;;;;:::i;:::-;;;;;;;20393:26;:56::i;:::-;20358:97;;20487:50;20514:7;20523:5;20530:6;20487:26;:50::i;:::-;-1:-1:-1;;;;;20470:73:0;;20562:10;20574;20586:2;20600:1;20590:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20590:12:0;;20470:147;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20034:595;;;;;;;20029:3;;;;;:::i;:::-;;;;19995:634;;3898:476;3991:13;4037:1;4025:9;:13;4017:72;;;;-1:-1:-1;;;4017:72:0;;25710:2:1;4017:72:0;;;25692:21:1;25749:2;25729:18;;;25722:30;-1:-1:-1;;;;;;;;;;;25768:18:1;;;25761:62;-1:-1:-1;;;25839:18:1;;;25832:44;25893:19;;4017:72:0;25508:410:1;4017:72:0;4120:1;4108:9;:13;:31;;;;;4138:1;4125:10;:14;4108:31;4100:86;;;;-1:-1:-1;;;4100:86:0;;;;;;;:::i;:::-;4197:14;4214:34;4243:4;4214:24;:9;4228;4214:13;:24::i;:::-;:28;;:34::i;:::-;4197:51;-1:-1:-1;4259:16:0;4278:34;4308:3;4278:25;:10;4293:9;4278:14;:25::i;:34::-;4259:53;-1:-1:-1;4334:32:0;4364:1;4335:23;4259:53;4335:9;:23;:::i;4334:32::-;4323:43;3898:476;-1:-1:-1;;;;;;3898:476:0:o;2809:325::-;2891:12;2934:1;2924:7;:11;2916:63;;;;-1:-1:-1;;;2916:63:0;;26125:2:1;2916:63:0;;;26107:21:1;26164:2;26144:18;;;26137:30;-1:-1:-1;;;;;;;;;;;26183:18:1;;;26176:62;-1:-1:-1;;;26254:18:1;;;26247:37;26301:19;;2916:63:0;25923:403:1;2916:63:0;3009:1;2998:8;:12;:28;;;;;3025:1;3014:8;:12;2998:28;2990:83;;;;-1:-1:-1;;;2990:83:0;;;;;;;:::i;:::-;3118:8;3094:21;:7;3106:8;3094:11;:21::i;:::-;:32;;;;:::i;9986:598::-;10074:27;10082:5;-1:-1:-1;;;;;10074:25:0;;:27::i;:::-;10066:71;;;;-1:-1:-1;;;10066:71:0;;26533:2:1;10066:71:0;;;26515:21:1;26572:2;26552:18;;;26545:30;26611:33;26591:18;;;26584:61;26662:18;;10066:71:0;26331:355:1;10066:71:0;10211:12;10225:23;10260:5;-1:-1:-1;;;;;10252:19:0;10272:4;10252:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10210:67;;;;10296:7;10288:52;;;;-1:-1:-1;;;10288:52:0;;26893:2:1;10288:52:0;;;26875:21:1;;;26912:18;;;26905:30;26971:34;26951:18;;;26944:62;27023:18;;10288:52:0;26691:356:1;10288:52:0;10357:17;;:21;10353:224;;10499:10;10488:30;;;;;;;;;;;;:::i;:::-;10480:85;;;;-1:-1:-1;;;10480:85:0;;27254:2:1;10480:85:0;;;27236:21:1;27293:2;27273:18;;;27266:30;27332:34;27312:18;;;27305:62;-1:-1:-1;;;27383:18:1;;;27376:40;27433:19;;10480:85:0;27052:406:1;949:178:0;1001:6;1053;;;:30;;-1:-1:-1;;1068:5:0;;;1082:1;1077;1068:5;1077:1;1063:15;;;;:::i;:::-;;:20;1053:30;1045:63;;;;-1:-1:-1;;;1045:63:0;;27665:2:1;1045:63:0;;;27647:21:1;27704:2;27684:18;;;27677:30;-1:-1:-1;;;27723:18:1;;;27716:50;27783:18;;1045:63:0;27463:344:1;604:164:0;713:5;;;708:16;;;;700:49;;;;-1:-1:-1;;;700:49:0;;28014:2:1;700:49:0;;;27996:21:1;28053:2;28033:18;;;28026:30;-1:-1:-1;;;28072:18:1;;;28065:50;28132:18;;700:49:0;27812:344:1;2303:393:0;2396:13;2411;2438:14;2457:26;2468:6;2476;2457:10;:26::i;:::-;2437:46;;;2495:13;2510;2545:32;2553:7;2562:6;2570;2545:7;:32::i;:::-;-1:-1:-1;;;;;2528:62:0;;:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2494:98;-1:-1:-1;;;;;2494:98:0;;;-1:-1:-1;;;;;2494:98:0;;;2636:6;-1:-1:-1;;;;;2626:16:0;:6;-1:-1:-1;;;;;2626:16:0;;:62;;2669:8;2679;2626:62;;;2646:8;2656;2626:62;2603:85;;;;-1:-1:-1;2303:393:0;-1:-1:-1;;;;;;;2303:393:0:o;1310:353::-;1385:14;1401;1446:6;-1:-1:-1;;;;;1436:16:0;:6;-1:-1:-1;;;;;1436:16:0;;;1428:68;;;;-1:-1:-1;;;1428:68:0;;29011:2:1;1428:68:0;;;28993:21:1;29050:2;29030:18;;;29023:30;29089:34;29069:18;;;29062:62;-1:-1:-1;;;29140:18:1;;;29133:37;29187:19;;1428:68:0;28809:403:1;1428:68:0;1535:6;-1:-1:-1;;;;;1526:15:0;:6;-1:-1:-1;;;;;1526:15:0;;:53;;1564:6;1572;1526:53;;;1545:6;1553;1526:53;1507:72;;-1:-1:-1;1507:72:0;-1:-1:-1;;;;;;1598:20:0;;1590:65;;;;-1:-1:-1;;;1590:65:0;;29419:2:1;1590:65:0;;;29401:21:1;;;29438:18;;;29431:30;29497:34;29477:18;;;29470:62;29549:18;;1590:65:0;29217:356:1;1590:65:0;1310:353;;;;;:::o;776:165::-;885:5;;;880:16;;;;872:50;;;;-1:-1:-1;;;872:50:0;;29780:2:1;872:50:0;;;29762:21:1;29819:2;29799:18;;;29792:30;-1:-1:-1;;;29838:18:1;;;29831:51;29899:18;;872:50:0;29578:345:1;8806:374:0;8866:4;9089:20;;8932:66;9129:15;;;;;:42;;-1:-1:-1;9148:23:0;;;9121:51;-1:-1:-1;;8806:374:0:o;14:127:1:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:131;-1:-1:-1;;;;;221:31:1;;211:42;;201:70;;267:1;264;257:12;282:594;377:6;385;393;401;409;462:3;450:9;441:7;437:23;433:33;430:53;;;479:1;476;469:12;430:53;515:9;502:23;492:33;;575:2;564:9;560:18;547:32;588:31;613:5;588:31;:::i;:::-;638:5;-1:-1:-1;695:2:1;680:18;;667:32;708:33;667:32;708:33;:::i;:::-;282:594;;;;-1:-1:-1;760:7:1;;814:2;799:18;;786:32;;-1:-1:-1;865:3:1;850:19;837:33;;282:594;-1:-1:-1;;282:594:1:o;881:127::-;942:10;937:3;933:20;930:1;923:31;973:4;970:1;963:15;997:4;994:1;987:15;1013:275;1084:2;1078:9;1149:2;1130:13;;-1:-1:-1;;1126:27:1;1114:40;;1184:18;1169:34;;1205:22;;;1166:62;1163:88;;;1231:18;;:::i;:::-;1267:2;1260:22;1013:275;;-1:-1:-1;1013:275:1:o;1293:531::-;1336:5;1389:3;1382:4;1374:6;1370:17;1366:27;1356:55;;1407:1;1404;1397:12;1356:55;1443:6;1430:20;1469:18;1465:2;1462:26;1459:52;;;1491:18;;:::i;:::-;1535:55;1578:2;1559:13;;-1:-1:-1;;1555:27:1;1584:4;1551:38;1535:55;:::i;:::-;1615:2;1606:7;1599:19;1661:3;1654:4;1649:2;1641:6;1637:15;1633:26;1630:35;1627:55;;;1678:1;1675;1668:12;1627:55;1743:2;1736:4;1728:6;1724:17;1717:4;1708:7;1704:18;1691:55;1791:1;1766:16;;;1784:4;1762:27;1755:38;;;;1770:7;1293:531;-1:-1:-1;;;1293:531:1:o;1829:594::-;1925:6;1933;1941;1949;2002:3;1990:9;1981:7;1977:23;1973:33;1970:53;;;2019:1;2016;2009:12;1970:53;2058:9;2045:23;2077:31;2102:5;2077:31;:::i;:::-;2127:5;-1:-1:-1;2183:2:1;2168:18;;2155:32;2210:18;2199:30;;2196:50;;;2242:1;2239;2232:12;2196:50;2265;2307:7;2298:6;2287:9;2283:22;2265:50;:::i;:::-;1829:594;;2255:60;;-1:-1:-1;;;;2362:2:1;2347:18;;2334:32;;2413:2;2398:18;2385:32;;1829:594;-1:-1:-1;1829:594:1:o;2428:316::-;2505:6;2513;2521;2574:2;2562:9;2553:7;2549:23;2545:32;2542:52;;;2590:1;2587;2580:12;2542:52;-1:-1:-1;;2613:23:1;;;2683:2;2668:18;;2655:32;;-1:-1:-1;2734:2:1;2719:18;;;2706:32;;2428:316;-1:-1:-1;2428:316:1:o;2931:118::-;3017:5;3010:13;3003:21;2996:5;2993:32;2983:60;;3039:1;3036;3029:12;3054:241;3110:6;3163:2;3151:9;3142:7;3138:23;3134:32;3131:52;;;3179:1;3176;3169:12;3131:52;3218:9;3205:23;3237:28;3259:5;3237:28;:::i;:::-;3284:5;3054:241;-1:-1:-1;;;3054:241:1:o;3300:367::-;3363:8;3373:6;3427:3;3420:4;3412:6;3408:17;3404:27;3394:55;;3445:1;3442;3435:12;3394:55;-1:-1:-1;3468:20:1;;3511:18;3500:30;;3497:50;;;3543:1;3540;3533:12;3497:50;3580:4;3572:6;3568:17;3556:29;;3640:3;3633:4;3623:6;3620:1;3616:14;3608:6;3604:27;3600:38;3597:47;3594:67;;;3657:1;3654;3647:12;3672:847;3803:6;3811;3819;3827;3835;3843;3851;3904:3;3892:9;3883:7;3879:23;3875:33;3872:53;;;3921:1;3918;3911:12;3872:53;3957:9;3944:23;3934:33;;4014:2;4003:9;3999:18;3986:32;3976:42;;4069:2;4058:9;4054:18;4041:32;4096:18;4088:6;4085:30;4082:50;;;4128:1;4125;4118:12;4082:50;4167:70;4229:7;4220:6;4209:9;4205:22;4167:70;:::i;:::-;4256:8;;-1:-1:-1;4141:96:1;-1:-1:-1;;4341:2:1;4326:18;;4313:32;4354:31;4313:32;4354:31;:::i;:::-;3672:847;;;;-1:-1:-1;3672:847:1;;;;4404:5;4456:3;4441:19;;4428:33;;-1:-1:-1;4508:3:1;4493:19;;;4480:33;;3672:847;-1:-1:-1;;3672:847:1:o;4524:1089::-;4617:6;4625;4678:2;4666:9;4657:7;4653:23;4649:32;4646:52;;;4694:1;4691;4684:12;4646:52;4730:9;4717:23;4707:33;;4759:2;4812;4801:9;4797:18;4784:32;4835:18;4876:2;4868:6;4865:14;4862:34;;;4892:1;4889;4882:12;4862:34;4930:6;4919:9;4915:22;4905:32;;4975:7;4968:4;4964:2;4960:13;4956:27;4946:55;;4997:1;4994;4987:12;4946:55;5033:2;5020:16;5055:2;5051;5048:10;5045:36;;;5061:18;;:::i;:::-;5107:2;5104:1;5100:10;5090:20;;5130:28;5154:2;5150;5146:11;5130:28;:::i;:::-;5192:15;;;5262:11;;;5258:20;;;5223:12;;;;5290:19;;;5287:39;;;5322:1;5319;5312:12;5287:39;5346:11;;;;5366:217;5382:6;5377:3;5374:15;5366:217;;;5462:3;5449:17;5436:30;;5479:31;5504:5;5479:31;:::i;:::-;5523:18;;;5399:12;;;;5561;;;;5366:217;;;5602:5;5592:15;;;;;;;;4524:1089;;;;;:::o;5618:632::-;5789:2;5841:21;;;5911:13;;5814:18;;;5933:22;;;5760:4;;5789:2;6012:15;;;;5986:2;5971:18;;;5760:4;6055:169;6069:6;6066:1;6063:13;6055:169;;;6130:13;;6118:26;;6199:15;;;;6164:12;;;;6091:1;6084:9;6055:169;;;-1:-1:-1;6241:3:1;;5618:632;-1:-1:-1;;;;;;5618:632:1:o;6255:525::-;6341:6;6349;6357;6365;6418:3;6406:9;6397:7;6393:23;6389:33;6386:53;;;6435:1;6432;6425:12;6386:53;6474:9;6461:23;6493:31;6518:5;6493:31;:::i;:::-;6543:5;-1:-1:-1;6600:2:1;6585:18;;6572:32;6613:33;6572:32;6613:33;:::i;:::-;6255:525;;6665:7;;-1:-1:-1;;;;6719:2:1;6704:18;;6691:32;;6770:2;6755:18;6742:32;;6255:525::o;6785:1720::-;7015:6;7023;7031;7039;7047;7055;7063;7071;7079;7087;7140:3;7128:9;7119:7;7115:23;7111:33;7108:53;;;7157:1;7154;7147:12;7108:53;7197:9;7184:23;7226:18;7267:2;7259:6;7256:14;7253:34;;;7283:1;7280;7273:12;7253:34;7322:70;7384:7;7375:6;7364:9;7360:22;7322:70;:::i;:::-;7411:8;;-1:-1:-1;7296:96:1;-1:-1:-1;7499:2:1;7484:18;;7471:32;;-1:-1:-1;7515:16:1;;;7512:36;;;7544:1;7541;7534:12;7512:36;7583:72;7647:7;7636:8;7625:9;7621:24;7583:72;:::i;:::-;7674:8;;-1:-1:-1;7557:98:1;-1:-1:-1;7762:2:1;7747:18;;7734:32;;-1:-1:-1;7778:16:1;;;7775:36;;;7807:1;7804;7797:12;7775:36;7846:72;7910:7;7899:8;7888:9;7884:24;7846:72;:::i;:::-;7937:8;;-1:-1:-1;7820:98:1;-1:-1:-1;8025:2:1;8010:18;;7997:32;;-1:-1:-1;8041:16:1;;;8038:36;;;8070:1;8067;8060:12;8038:36;8109:72;8173:7;8162:8;8151:9;8147:24;8109:72;:::i;:::-;8200:8;;-1:-1:-1;8083:98:1;-1:-1:-1;8288:3:1;8273:19;;8260:33;;-1:-1:-1;8305:16:1;;;8302:36;;;8334:1;8331;8324:12;8302:36;;8373:72;8437:7;8426:8;8415:9;8411:24;8373:72;:::i;:::-;8347:98;;8464:8;8454:18;;;8491:8;8481:18;;;6785:1720;;;;;;;;;;;;;:::o;8510:916::-;8650:6;8658;8666;8674;8682;8690;8698;8706;8759:3;8747:9;8738:7;8734:23;8730:33;8727:53;;;8776:1;8773;8766:12;8727:53;8812:9;8799:23;8789:33;;8869:2;8858:9;8854:18;8841:32;8831:42;;8920:2;8909:9;8905:18;8892:32;8882:42;;8975:2;8964:9;8960:18;8947:32;9002:18;8994:6;8991:30;8988:50;;;9034:1;9031;9024:12;8988:50;9073:70;9135:7;9126:6;9115:9;9111:22;9073:70;:::i;:::-;9162:8;;-1:-1:-1;9047:96:1;-1:-1:-1;;9247:3:1;9232:19;;9219:33;9261:31;9219:33;9261:31;:::i;:::-;8510:916;;;;-1:-1:-1;8510:916:1;;;;;;9311:5;;-1:-1:-1;;;9363:3:1;9348:19;;9335:33;;9415:3;9400:19;9387:33;;8510:916::o;9623:388::-;9691:6;9699;9752:2;9740:9;9731:7;9727:23;9723:32;9720:52;;;9768:1;9765;9758:12;9720:52;9807:9;9794:23;9826:31;9851:5;9826:31;:::i;:::-;9876:5;-1:-1:-1;9933:2:1;9918:18;;9905:32;9946:33;9905:32;9946:33;:::i;:::-;9998:7;9988:17;;;9623:388;;;;;:::o;10016:525::-;10103:6;10111;10119;10172:2;10160:9;10151:7;10147:23;10143:32;10140:52;;;10188:1;10185;10178:12;10140:52;10227:9;10214:23;10246:31;10271:5;10246:31;:::i;:::-;10296:5;-1:-1:-1;10352:2:1;10337:18;;10324:32;10379:18;10368:30;;10365:50;;;10411:1;10408;10401:12;10365:50;10434;10476:7;10467:6;10456:9;10452:22;10434:50;:::i;:::-;10424:60;;;10531:2;10520:9;10516:18;10503:32;10493:42;;10016:525;;;;;:::o;10546:247::-;10605:6;10658:2;10646:9;10637:7;10633:23;10629:32;10626:52;;;10674:1;10671;10664:12;10626:52;10713:9;10700:23;10732:31;10757:5;10732:31;:::i;10798:456::-;10875:6;10883;10891;10944:2;10932:9;10923:7;10919:23;10915:32;10912:52;;;10960:1;10957;10950:12;10912:52;10999:9;10986:23;11018:31;11043:5;11018:31;:::i;:::-;11068:5;-1:-1:-1;11120:2:1;11105:18;;11092:32;;-1:-1:-1;11176:2:1;11161:18;;11148:32;11189:33;11148:32;11189:33;:::i;:::-;11241:7;11231:17;;;10798:456;;;;;:::o;11259:315::-;11327:6;11335;11388:2;11376:9;11367:7;11363:23;11359:32;11356:52;;;11404:1;11401;11394:12;11356:52;11443:9;11430:23;11462:31;11487:5;11462:31;:::i;:::-;11512:5;11564:2;11549:18;;;;11536:32;;-1:-1:-1;;;11259:315:1:o;11787:456::-;11864:6;11872;11880;11933:2;11921:9;11912:7;11908:23;11904:32;11901:52;;;11949:1;11946;11939:12;11901:52;11988:9;11975:23;12007:31;12032:5;12007:31;:::i;:::-;12057:5;-1:-1:-1;12114:2:1;12099:18;;12086:32;12127:33;12086:32;12127:33;:::i;:::-;11787:456;;12179:7;;-1:-1:-1;;;12233:2:1;12218:18;;;;12205:32;;11787:456::o;12248:1404::-;12442:6;12450;12458;12466;12474;12482;12490;12498;12551:3;12539:9;12530:7;12526:23;12522:33;12519:53;;;12568:1;12565;12558:12;12519:53;12608:9;12595:23;12637:18;12678:2;12670:6;12667:14;12664:34;;;12694:1;12691;12684:12;12664:34;12733:70;12795:7;12786:6;12775:9;12771:22;12733:70;:::i;:::-;12822:8;;-1:-1:-1;12707:96:1;-1:-1:-1;12910:2:1;12895:18;;12882:32;;-1:-1:-1;12926:16:1;;;12923:36;;;12955:1;12952;12945:12;12923:36;12994:72;13058:7;13047:8;13036:9;13032:24;12994:72;:::i;:::-;13085:8;;-1:-1:-1;12968:98:1;-1:-1:-1;13173:2:1;13158:18;;13145:32;;-1:-1:-1;13189:16:1;;;13186:36;;;13218:1;13215;13208:12;13186:36;13257:72;13321:7;13310:8;13299:9;13295:24;13257:72;:::i;:::-;13348:8;;-1:-1:-1;13231:98:1;-1:-1:-1;13436:2:1;13421:18;;13408:32;;-1:-1:-1;13452:16:1;;;13449:36;;;13481:1;13478;13471:12;13449:36;;13520:72;13584:7;13573:8;13562:9;13558:24;13520:72;:::i;:::-;12248:1404;;;;-1:-1:-1;12248:1404:1;;-1:-1:-1;12248:1404:1;;;;;;13611:8;-1:-1:-1;;;12248:1404:1:o;13657:350::-;13859:2;13841:21;;;13898:2;13878:18;;;13871:30;13937:28;13932:2;13917:18;;13910:56;13998:2;13983:18;;13657:350::o;14012:251::-;14082:6;14135:2;14123:9;14114:7;14110:23;14106:32;14103:52;;;14151:1;14148;14141:12;14103:52;14183:9;14177:16;14202:31;14227:5;14202:31;:::i;14268:184::-;14338:6;14391:2;14379:9;14370:7;14366:23;14362:32;14359:52;;;14407:1;14404;14397:12;14359:52;-1:-1:-1;14430:16:1;;14268:184;-1:-1:-1;14268:184:1:o;14457:375::-;-1:-1:-1;;;;;14715:15:1;;;14697:34;;14762:2;14747:18;;14740:34;;;;14810:15;;;14805:2;14790:18;;14783:43;14647:2;14632:18;;14457:375::o;14837:258::-;14909:1;14919:113;14933:6;14930:1;14927:13;14919:113;;;15009:11;;;15003:18;14990:11;;;14983:39;14955:2;14948:10;14919:113;;;15050:6;15047:1;15044:13;15041:48;;;-1:-1:-1;;15085:1:1;15067:16;;15060:27;14837:258::o;15100:::-;15142:3;15180:5;15174:12;15207:6;15202:3;15195:19;15223:63;15279:6;15272:4;15267:3;15263:14;15256:4;15249:5;15245:16;15223:63;:::i;:::-;15340:2;15319:15;-1:-1:-1;;15315:29:1;15306:39;;;;15347:4;15302:50;;15100:258;-1:-1:-1;;15100:258:1:o;15363:435::-;15596:3;15585:9;15578:22;15559:4;15617:46;15658:3;15647:9;15643:19;15635:6;15617:46;:::i;:::-;15694:2;15679:18;;15672:34;;;;-1:-1:-1;15737:2:1;15722:18;;15715:34;;;;15780:2;15765:18;;;15758:34;15609:54;15363:435;-1:-1:-1;15363:435:1:o;15803:399::-;16005:2;15987:21;;;16044:2;16024:18;;;16017:30;16083:34;16078:2;16063:18;;16056:62;-1:-1:-1;;;16149:2:1;16134:18;;16127:33;16192:3;16177:19;;15803:399::o;16207:348::-;16409:2;16391:21;;;16448:2;16428:18;;;16421:30;16487:26;16482:2;16467:18;;16460:54;16546:2;16531:18;;16207:348::o;16560:127::-;16621:10;16616:3;16612:20;16609:1;16602:31;16652:4;16649:1;16642:15;16676:4;16673:1;16666:15;16971:245;17038:6;17091:2;17079:9;17070:7;17066:23;17062:32;17059:52;;;17107:1;17104;17097:12;17059:52;17139:9;17133:16;17158:28;17180:5;17158:28;:::i;17221:1001::-;17533:3;17546:22;;;17518:19;;17603:22;;;17485:4;17683:6;17656:3;17641:19;;17485:4;17717:304;17731:6;17728:1;17725:13;17717:304;;;17806:6;17793:20;17826:31;17851:5;17826:31;:::i;:::-;-1:-1:-1;;;;;17882:31:1;17870:44;;17937:4;17996:15;;;;17961:12;;;;17910:1;17746:9;17717:304;;;-1:-1:-1;18072:4:1;18057:20;;18050:36;;;;-1:-1:-1;;18117:2:1;18102:18;;18095:34;;;;18160:2;18145:18;;18138:34;;;;18203:3;18188:19;;;18181:35;18038:3;17221:1001;-1:-1:-1;;17221:1001:1:o;18227:127::-;18288:10;18283:3;18279:20;18276:1;18269:31;18319:4;18316:1;18309:15;18343:4;18340:1;18333:15;18359:135;18398:3;-1:-1:-1;;18419:17:1;;18416:43;;;18439:18;;:::i;:::-;-1:-1:-1;18486:1:1;18475:13;;18359:135::o;18499:125::-;18539:4;18567:1;18564;18561:8;18558:34;;;18572:18;;:::i;:::-;-1:-1:-1;18609:9:1;;18499:125::o;20171:406::-;20373:2;20355:21;;;20412:2;20392:18;;;20385:30;20451:34;20446:2;20431:18;;20424:62;-1:-1:-1;;;20517:2:1;20502:18;;20495:40;20567:3;20552:19;;20171:406::o;20582:128::-;20622:3;20653:1;20649:6;20646:1;20643:13;20640:39;;;20659:18;;:::i;:::-;-1:-1:-1;20695:9:1;;20582:128::o;21318:274::-;21447:3;21485:6;21479:13;21501:53;21547:6;21542:3;21535:4;21527:6;21523:17;21501:53;:::i;:::-;21570:16;;;;;21318:274;-1:-1:-1;;21318:274:1:o;22798:406::-;23000:2;22982:21;;;23039:2;23019:18;;;23012:30;-1:-1:-1;;;;;;;;;;;23073:2:1;23058:18;;23051:62;-1:-1:-1;;;23144:2:1;23129:18;;23122:40;23194:3;23179:19;;22798:406::o;23209:127::-;23270:10;23265:3;23261:20;23258:1;23251:31;23301:4;23298:1;23291:15;23325:4;23322:1;23315:15;23341:217;23381:1;23407;23397:132;;23451:10;23446:3;23442:20;23439:1;23432:31;23486:4;23483:1;23476:15;23514:4;23511:1;23504:15;23397:132;-1:-1:-1;23543:9:1;;23341:217::o;23924:136::-;23963:3;23991:5;23981:39;;24000:18;;:::i;:::-;-1:-1:-1;;;24036:18:1;;23924:136::o;25044:459::-;25275:6;25264:9;25257:25;25318:6;25313:2;25302:9;25298:18;25291:34;25390:1;25386;25381:3;25377:11;25373:19;25365:6;25361:32;25356:2;25345:9;25341:18;25334:60;25430:3;25425:2;25414:9;25410:18;25403:31;25238:4;25451:46;25492:3;25481:9;25477:19;25469:6;25451:46;:::i;28161:188::-;28240:13;;-1:-1:-1;;;;;28282:42:1;;28272:53;;28262:81;;28339:1;28336;28329:12;28354:450;28441:6;28449;28457;28510:2;28498:9;28489:7;28485:23;28481:32;28478:52;;;28526:1;28523;28516:12;28478:52;28549:40;28579:9;28549:40;:::i;:::-;28539:50;;28608:49;28653:2;28642:9;28638:18;28608:49;:::i;:::-;28598:59;;28700:2;28689:9;28685:18;28679:25;28744:10;28737:5;28733:22;28726:5;28723:33;28713:61;;28770:1;28767;28760:12

Swarm Source

ipfs://c17babedbab069763375fabccc1245cac6dcebfc453595e3a48e4d855008db33
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.